ishtp_device
struct ishtp_device *ish_dev_init(struct pci_dev *pdev);
int ish_hw_start(struct ishtp_device *dev);
void ish_device_disable(struct ishtp_device *dev);
int ish_disable_dma(struct ishtp_device *dev);
void ish_set_host_ready(struct ishtp_device *dev);
void ish_device_disable(struct ishtp_device *dev)
static bool ish_is_input_ready(struct ishtp_device *dev)
static void set_host_ready(struct ishtp_device *dev)
static bool ishtp_fw_is_ready(struct ishtp_device *dev)
static void ish_set_host_rdy(struct ishtp_device *dev)
static void ish_clr_host_rdy(struct ishtp_device *dev)
static struct ishtp_device *ishtp_dev;
static bool ish_chk_host_rdy(struct ishtp_device *dev)
void ish_set_host_ready(struct ishtp_device *dev)
static uint32_t _ishtp_read_hdr(const struct ishtp_device *dev)
static int _ishtp_read(struct ishtp_device *dev, unsigned char *buffer,
static int write_ipc_from_queue(struct ishtp_device *dev)
static inline uint32_t ish_reg_read(const struct ishtp_device *dev,
static int write_ipc_to_queue(struct ishtp_device *dev,
static int ipc_send_mng_msg(struct ishtp_device *dev, uint32_t msg_code,
static int timed_wait_for_timeout(struct ishtp_device *dev, int condition,
static inline void ish_reg_write(struct ishtp_device *dev,
static void ish_send_reset_notify_ack(struct ishtp_device *dev)
static int ish_fw_reset_handler(struct ishtp_device *dev)
static void _ish_sync_fw_clock(struct ishtp_device *dev)
static void recv_ipc(struct ishtp_device *dev, uint32_t doorbell_val)
static inline uint32_t _ish_read_fw_sts_reg(struct ishtp_device *dev)
struct ishtp_device *dev = dev_id;
int ish_disable_dma(struct ishtp_device *dev)
static int ish_wakeup(struct ishtp_device *dev)
static bool check_generated_interrupt(struct ishtp_device *dev)
static int _ish_hw_reset(struct ishtp_device *dev)
static int _ish_ipc_reset(struct ishtp_device *dev)
int ish_hw_start(struct ishtp_device *dev)
static uint32_t ish_ipc_get_header(struct ishtp_device *dev, int length,
static bool _dma_no_cache_snooping(struct ishtp_device *dev)
struct ishtp_device *ish_dev_init(struct pci_dev *pdev)
struct ishtp_device *dev;
sizeof(struct ishtp_device) + sizeof(struct ish_hw),
void ish_event_tracer(struct ishtp_device *dev, const char *format, ...)
static int ish_init(struct ishtp_device *dev)
struct ishtp_device *dev = pci_get_drvdata(pdev);
struct ishtp_device *ishtp;
struct ishtp_device *ishtp_dev = pci_get_drvdata(pdev);
struct ishtp_device *dev = pci_get_drvdata(pdev);
struct ishtp_device *dev = pci_get_drvdata(pdev);
struct ishtp_device *dev = pci_get_drvdata(pdev);
struct ishtp_device *dev = dev_get_drvdata(cdev);
struct ishtp_device *dev = dev_get_drvdata(cdev);
struct ishtp_device *dev = dev_get_drvdata(kobj_to_dev(kobj));
#define cl_data_to_dev(client_data) ishtp_device((client_data)->cl_device)
dev_err(ishtp_device(cl_device), "Reset Failed\n");
client_data = devm_kzalloc(ishtp_device(cl_device),
#define cl_data_to_dev(client_data) ishtp_device(client_data->cl_device)
dev_info(ishtp_device(client_data->cl_device),
dev_dbg(ishtp_device(client_data->cl_device), "%s\n", __func__);
client_data = devm_kzalloc(ishtp_device(cl_device),
dev_dbg(ishtp_device(cl_device), "%s\n", __func__);
hid->dev.parent = ishtp_device(client_data->cl_device);
int ishtp_write_message(struct ishtp_device *dev, struct ishtp_msg_hdr *hdr,
int ishtp_fw_cl_by_uuid(struct ishtp_device *dev, const guid_t *uuid)
struct ishtp_fw_client *ishtp_fw_cl_get_client(struct ishtp_device *dev,
int ishtp_fw_cl_by_id(struct ishtp_device *dev, uint8_t client_id)
void ishtp_recv(struct ishtp_device *dev)
static struct ishtp_cl_device *ishtp_bus_add_device(struct ishtp_device *dev,
int ishtp_bus_new_client(struct ishtp_device *dev)
void ishtp_bus_remove_all_clients(struct ishtp_device *ishtp_dev,
void ishtp_reset_handler(struct ishtp_device *dev)
void ishtp_reset_compl_handler(struct ishtp_device *dev)
int ishtp_send_msg(struct ishtp_device *dev, struct ishtp_msg_hdr *hdr,
EXPORT_SYMBOL(ishtp_device);
bool ishtp_wait_resume(struct ishtp_device *dev)
int ish_hw_reset(struct ishtp_device *dev)
struct ishtp_device;
struct ishtp_device *ishtp_dev;
int ishtp_bus_new_client(struct ishtp_device *dev);
int ishtp_send_msg(struct ishtp_device *dev,
int ishtp_write_message(struct ishtp_device *dev,
void ishtp_bus_remove_all_clients(struct ishtp_device *ishtp_dev,
void ishtp_recv(struct ishtp_device *dev);
void ishtp_reset_handler(struct ishtp_device *dev);
void ishtp_reset_compl_handler(struct ishtp_device *dev);
int ishtp_fw_cl_by_uuid(struct ishtp_device *dev, const guid_t *cuuid);
void recv_ishtp_cl_msg_dma(struct ishtp_device *dev, void *msg,
struct ishtp_device *ishtp_get_ishtp_device(struct ishtp_cl *cl)
struct ishtp_device *dev;
struct ishtp_device *dev;
struct ishtp_device *dev;
struct ishtp_device *dev;
struct ishtp_device *dev;
struct ishtp_device *dev;
struct ishtp_device *dev;
struct ishtp_device *dev;
struct ishtp_device *dev;
struct ishtp_device *dev;
static void ishtp_cl_init(struct ishtp_cl *cl, struct ishtp_device *dev)
struct ishtp_device *dev = (cl ? cl->dev : NULL);
static void ishtp_cl_send_msg_ipc(struct ishtp_device *dev,
static void ishtp_cl_send_msg_dma(struct ishtp_device *dev,
void ishtp_cl_send_msg(struct ishtp_device *dev, struct ishtp_cl *cl)
void recv_ishtp_cl_msg(struct ishtp_device *dev,
int ishtp_fw_cl_by_id(struct ishtp_device *dev, uint8_t client_id);
void ishtp_cl_send_msg(struct ishtp_device *dev, struct ishtp_cl *cl);
void recv_ishtp_cl_msg(struct ishtp_device *dev,
void recv_ishtp_cl_msg_dma(struct ishtp_device *dev, void *msg,
void ishtp_cl_alloc_dma_buf(struct ishtp_device *dev);
void ishtp_cl_free_dma_buf(struct ishtp_device *dev);
void *ishtp_cl_get_dma_send_buf(struct ishtp_device *dev,
void ishtp_cl_release_dma_acked_mem(struct ishtp_device *dev,
struct ishtp_device *dev;
void ishtp_cl_release_dma_acked_mem(struct ishtp_device *dev,
void ishtp_cl_alloc_dma_buf(struct ishtp_device *dev)
void ishtp_cl_free_dma_buf(struct ishtp_device *dev)
void *ishtp_cl_get_dma_send_buf(struct ishtp_device *dev,
int ishtp_hbm_start_req(struct ishtp_device *dev)
void ishtp_hbm_enum_clients_req(struct ishtp_device *dev)
static int ishtp_hbm_prop_req(struct ishtp_device *dev)
static void ishtp_hbm_stop_req(struct ishtp_device *dev)
static void ishtp_hbm_fw_cl_allocate(struct ishtp_device *dev)
int ishtp_hbm_cl_flow_control_req(struct ishtp_device *dev,
int ishtp_hbm_cl_disconnect_req(struct ishtp_device *dev, struct ishtp_cl *cl)
static void ishtp_hbm_cl_disconnect_res(struct ishtp_device *dev,
int ishtp_hbm_cl_connect_req(struct ishtp_device *dev, struct ishtp_cl *cl)
static void ishtp_hbm_cl_connect_res(struct ishtp_device *dev,
static void ishtp_hbm_fw_disconnect_req(struct ishtp_device *dev,
static void ishtp_hbm_dma_xfer_ack(struct ishtp_device *dev,
static void ishtp_hbm_dma_xfer(struct ishtp_device *dev,
void ishtp_hbm_dispatch(struct ishtp_device *dev,
struct ishtp_device *dev;
dev = container_of(work, struct ishtp_device, bh_hbm_work);
void recv_hbm(struct ishtp_device *dev, struct ishtp_msg_hdr *ishtp_hdr)
static void ishtp_loader_recv_msg(struct ishtp_device *dev, void *buf)
void recv_fixed_cl_msg(struct ishtp_device *dev,
int ishtp_hbm_start_wait(struct ishtp_device *dev)
void ishtp_send_suspend(struct ishtp_device *dev)
void ishtp_send_resume(struct ishtp_device *dev)
void ishtp_query_subscribers(struct ishtp_device *dev)
struct ishtp_device;
int ishtp_hbm_start_req(struct ishtp_device *dev);
int ishtp_hbm_start_wait(struct ishtp_device *dev);
int ishtp_hbm_cl_flow_control_req(struct ishtp_device *dev,
int ishtp_hbm_cl_disconnect_req(struct ishtp_device *dev, struct ishtp_cl *cl);
int ishtp_hbm_cl_connect_req(struct ishtp_device *dev, struct ishtp_cl *cl);
void ishtp_hbm_enum_clients_req(struct ishtp_device *dev);
void recv_hbm(struct ishtp_device *dev, struct ishtp_msg_hdr *ishtp_hdr);
void recv_fixed_cl_msg(struct ishtp_device *dev,
void ishtp_hbm_dispatch(struct ishtp_device *dev,
void ishtp_query_subscribers(struct ishtp_device *dev);
void ishtp_send_suspend(struct ishtp_device *dev);
void ishtp_send_resume(struct ishtp_device *dev);
void ishtp_device_init(struct ishtp_device *dev)
int ishtp_start(struct ishtp_device *dev)
int (*hw_reset)(struct ishtp_device *dev);
int (*ipc_reset)(struct ishtp_device *dev);
uint32_t (*ipc_get_header)(struct ishtp_device *dev, int length,
int (*write)(struct ishtp_device *dev,
uint32_t (*ishtp_read_hdr)(const struct ishtp_device *dev);
int (*ishtp_read)(struct ishtp_device *dev, unsigned char *buffer,
uint32_t (*get_fw_status)(struct ishtp_device *dev);
void (*sync_fw_clock)(struct ishtp_device *dev);
bool (*dma_no_cache_snooping)(struct ishtp_device *dev);
static inline int ish_ipc_reset(struct ishtp_device *dev)
void ishtp_device_init(struct ishtp_device *dev);
int ishtp_start(struct ishtp_device *dev);
static void release_dma_bufs(struct ishtp_device *dev,
static int prepare_dma_bufs(struct ishtp_device *dev,
struct ishtp_device *ishtp = dev_get_drvdata(dev);
struct ishtp_device *dev = container_of(work, struct ishtp_device, work_fw_loader);
static int loader_write_message(struct ishtp_device *dev, void *buf, int len)
static int loader_xfer_cmd(struct ishtp_device *dev, void *req, int req_len,
devm_kzalloc(ishtp_device(cl_device),
#define cl_data_to_dev(client_data) ishtp_device((client_data)->cl_device)
#define cl_data_to_dev(opr_dev) ishtp_device((opr_dev)->cl_device)
struct ishtp_device *dev;
opr_dev = devm_kzalloc(ishtp_device(cl_device), sizeof(*opr_dev),
struct ishtp_device *ishtp_get_ishtp_device(struct ishtp_cl *cl);
struct ishtp_fw_client *ishtp_fw_cl_get_client(struct ishtp_device *dev,
int ish_hw_reset(struct ishtp_device *dev);
struct ishtp_device;
typedef __printf(2, 3) void (*ishtp_print_log)(struct ishtp_device *dev,
struct device *ishtp_device(struct ishtp_cl_device *cl_device);
bool ishtp_wait_resume(struct ishtp_device *dev);