Commit 29b06d12 authored by Srinivas Pandruvada's avatar Srinivas Pandruvada Committed by Jiri Kosina

HID: intel-ish-hid: Use the new interface functions in HID ish client

Only include intel-ish-client-if.h, which has all interfaces required to
implment ISHTP client. There is no longer any direct field access from
core ISHTP only include files.
Signed-off-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 5f7224cf
...@@ -17,8 +17,6 @@ ...@@ -17,8 +17,6 @@
#include <linux/hid.h> #include <linux/hid.h>
#include <linux/intel-ish-client-if.h> #include <linux/intel-ish-client-if.h>
#include <linux/sched.h> #include <linux/sched.h>
#include "ishtp/ishtp-dev.h"
#include "ishtp/client.h"
#include "ishtp-hid.h" #include "ishtp-hid.h"
/* Rx ring buffer pool size */ /* Rx ring buffer pool size */
...@@ -40,7 +38,7 @@ static void report_bad_packet(struct ishtp_cl *hid_ishtp_cl, void *recv_buf, ...@@ -40,7 +38,7 @@ static void report_bad_packet(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
size_t cur_pos, size_t payload_len) size_t cur_pos, size_t payload_len)
{ {
struct hostif_msg *recv_msg = recv_buf; struct hostif_msg *recv_msg = recv_buf;
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data; struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
dev_err(cl_data_to_dev(client_data), "[hid-ish]: BAD packet %02X\n" dev_err(cl_data_to_dev(client_data), "[hid-ish]: BAD packet %02X\n"
"total_bad=%u cur_pos=%u\n" "total_bad=%u cur_pos=%u\n"
...@@ -77,7 +75,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf, ...@@ -77,7 +75,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
struct report_list *reports_list; struct report_list *reports_list;
char *reports; char *reports;
size_t report_len; size_t report_len;
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data; struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
int curr_hid_dev = client_data->cur_hid_dev; int curr_hid_dev = client_data->cur_hid_dev;
struct ishtp_hid_data *hid_data = NULL; struct ishtp_hid_data *hid_data = NULL;
struct hid_device *hid = NULL; struct hid_device *hid = NULL;
...@@ -93,7 +91,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf, ...@@ -93,7 +91,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
(unsigned int)data_len, (unsigned int)data_len,
(unsigned int)sizeof(struct hostif_msg_hdr)); (unsigned int)sizeof(struct hostif_msg_hdr));
++client_data->bad_recv_cnt; ++client_data->bad_recv_cnt;
ish_hw_reset(hid_ishtp_cl->dev); ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
break; break;
} }
...@@ -106,7 +104,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf, ...@@ -106,7 +104,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
++client_data->bad_recv_cnt; ++client_data->bad_recv_cnt;
report_bad_packet(hid_ishtp_cl, recv_msg, cur_pos, report_bad_packet(hid_ishtp_cl, recv_msg, cur_pos,
payload_len); payload_len);
ish_hw_reset(hid_ishtp_cl->dev); ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
break; break;
} }
...@@ -121,7 +119,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf, ...@@ -121,7 +119,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
report_bad_packet(hid_ishtp_cl, recv_msg, report_bad_packet(hid_ishtp_cl, recv_msg,
cur_pos, cur_pos,
payload_len); payload_len);
ish_hw_reset(hid_ishtp_cl->dev); ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
break; break;
} }
client_data->hid_dev_count = (unsigned int)*payload; client_data->hid_dev_count = (unsigned int)*payload;
...@@ -170,7 +168,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf, ...@@ -170,7 +168,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
report_bad_packet(hid_ishtp_cl, recv_msg, report_bad_packet(hid_ishtp_cl, recv_msg,
cur_pos, cur_pos,
payload_len); payload_len);
ish_hw_reset(hid_ishtp_cl->dev); ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
break; break;
} }
if (!client_data->hid_descr[curr_hid_dev]) if (!client_data->hid_descr[curr_hid_dev])
...@@ -195,7 +193,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf, ...@@ -195,7 +193,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
report_bad_packet(hid_ishtp_cl, recv_msg, report_bad_packet(hid_ishtp_cl, recv_msg,
cur_pos, cur_pos,
payload_len); payload_len);
ish_hw_reset(hid_ishtp_cl->dev); ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
break; break;
} }
if (!client_data->report_descr[curr_hid_dev]) if (!client_data->report_descr[curr_hid_dev])
...@@ -313,7 +311,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf, ...@@ -313,7 +311,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
++client_data->bad_recv_cnt; ++client_data->bad_recv_cnt;
report_bad_packet(hid_ishtp_cl, recv_msg, cur_pos, report_bad_packet(hid_ishtp_cl, recv_msg, cur_pos,
payload_len); payload_len);
ish_hw_reset(hid_ishtp_cl->dev); ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
break; break;
} }
...@@ -493,7 +491,7 @@ int ishtp_hid_link_ready_wait(struct ishtp_cl_data *client_data) ...@@ -493,7 +491,7 @@ int ishtp_hid_link_ready_wait(struct ishtp_cl_data *client_data)
static int ishtp_enum_enum_devices(struct ishtp_cl *hid_ishtp_cl) static int ishtp_enum_enum_devices(struct ishtp_cl *hid_ishtp_cl)
{ {
struct hostif_msg msg; struct hostif_msg msg;
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data; struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
int retry_count; int retry_count;
int rv; int rv;
...@@ -530,7 +528,7 @@ static int ishtp_enum_enum_devices(struct ishtp_cl *hid_ishtp_cl) ...@@ -530,7 +528,7 @@ static int ishtp_enum_enum_devices(struct ishtp_cl *hid_ishtp_cl)
} }
client_data->num_hid_devices = client_data->hid_dev_count; client_data->num_hid_devices = client_data->hid_dev_count;
dev_info(&hid_ishtp_cl->device->dev, dev_info(ishtp_device(client_data->cl_device),
"[hid-ish]: enum_devices_done OK, num_hid_devices=%d\n", "[hid-ish]: enum_devices_done OK, num_hid_devices=%d\n",
client_data->num_hid_devices); client_data->num_hid_devices);
...@@ -549,7 +547,7 @@ static int ishtp_enum_enum_devices(struct ishtp_cl *hid_ishtp_cl) ...@@ -549,7 +547,7 @@ static int ishtp_enum_enum_devices(struct ishtp_cl *hid_ishtp_cl)
static int ishtp_get_hid_descriptor(struct ishtp_cl *hid_ishtp_cl, int index) static int ishtp_get_hid_descriptor(struct ishtp_cl *hid_ishtp_cl, int index)
{ {
struct hostif_msg msg; struct hostif_msg msg;
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data; struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
int rv; int rv;
/* Get HID descriptor */ /* Get HID descriptor */
...@@ -596,7 +594,7 @@ static int ishtp_get_report_descriptor(struct ishtp_cl *hid_ishtp_cl, ...@@ -596,7 +594,7 @@ static int ishtp_get_report_descriptor(struct ishtp_cl *hid_ishtp_cl,
int index) int index)
{ {
struct hostif_msg msg; struct hostif_msg msg;
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data; struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
int rv; int rv;
/* Get report descriptor */ /* Get report descriptor */
...@@ -644,7 +642,7 @@ static int ishtp_get_report_descriptor(struct ishtp_cl *hid_ishtp_cl, ...@@ -644,7 +642,7 @@ static int ishtp_get_report_descriptor(struct ishtp_cl *hid_ishtp_cl,
static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset) static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset)
{ {
struct ishtp_device *dev; struct ishtp_device *dev;
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data; struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
struct ishtp_fw_client *fw_client; struct ishtp_fw_client *fw_client;
int i; int i;
int rv; int rv;
...@@ -661,11 +659,11 @@ static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset) ...@@ -661,11 +659,11 @@ static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset)
client_data->init_done = 0; client_data->init_done = 0;
dev = hid_ishtp_cl->dev; dev = ishtp_get_ishtp_device(hid_ishtp_cl);
/* Connect to FW client */ /* Connect to FW client */
hid_ishtp_cl->rx_ring_size = HID_CL_RX_RING_SIZE; ishtp_set_tx_ring_size(hid_ishtp_cl, HID_CL_TX_RING_SIZE);
hid_ishtp_cl->tx_ring_size = HID_CL_TX_RING_SIZE; ishtp_set_rx_ring_size(hid_ishtp_cl, HID_CL_RX_RING_SIZE);
fw_client = ishtp_fw_cl_get_client(dev, &hid_ishtp_guid); fw_client = ishtp_fw_cl_get_client(dev, &hid_ishtp_guid);
if (!fw_client) { if (!fw_client) {
...@@ -673,9 +671,9 @@ static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset) ...@@ -673,9 +671,9 @@ static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset)
"ish client uuid not found\n"); "ish client uuid not found\n");
return -ENOENT; return -ENOENT;
} }
ishtp_cl_set_fw_client_id(hid_ishtp_cl,
hid_ishtp_cl->fw_client_id = fw_client->client_id; ishtp_get_fw_client_id(fw_client));
hid_ishtp_cl->state = ISHTP_CL_CONNECTING; ishtp_set_connection_state(hid_ishtp_cl, ISHTP_CL_CONNECTING);
rv = ishtp_cl_connect(hid_ishtp_cl); rv = ishtp_cl_connect(hid_ishtp_cl);
if (rv) { if (rv) {
...@@ -687,7 +685,7 @@ static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset) ...@@ -687,7 +685,7 @@ static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset)
hid_ishtp_trace(client_data, "%s client connected\n", __func__); hid_ishtp_trace(client_data, "%s client connected\n", __func__);
/* Register read callback */ /* Register read callback */
ishtp_register_event_cb(hid_ishtp_cl->device, ish_cl_event_cb); ishtp_register_event_cb(client_data->cl_device, ish_cl_event_cb);
rv = ishtp_enum_enum_devices(hid_ishtp_cl); rv = ishtp_enum_enum_devices(hid_ishtp_cl);
if (rv) if (rv)
...@@ -725,7 +723,7 @@ static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset) ...@@ -725,7 +723,7 @@ static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset)
return 0; return 0;
err_cl_disconnect: err_cl_disconnect:
hid_ishtp_cl->state = ISHTP_CL_DISCONNECTING; ishtp_set_connection_state(hid_ishtp_cl, ISHTP_CL_DISCONNECTING);
ishtp_cl_disconnect(hid_ishtp_cl); ishtp_cl_disconnect(hid_ishtp_cl);
err_cl_unlink: err_cl_unlink:
ishtp_cl_unlink(hid_ishtp_cl); ishtp_cl_unlink(hid_ishtp_cl);
...@@ -762,7 +760,7 @@ static void hid_ishtp_cl_reset_handler(struct work_struct *work) ...@@ -762,7 +760,7 @@ static void hid_ishtp_cl_reset_handler(struct work_struct *work)
hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__, hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__,
hid_ishtp_cl); hid_ishtp_cl);
dev_dbg(&cl_device->dev, "%s\n", __func__); dev_dbg(ishtp_device(client_data->cl_device), "%s\n", __func__);
hid_ishtp_cl_deinit(hid_ishtp_cl); hid_ishtp_cl_deinit(hid_ishtp_cl);
...@@ -771,7 +769,7 @@ static void hid_ishtp_cl_reset_handler(struct work_struct *work) ...@@ -771,7 +769,7 @@ static void hid_ishtp_cl_reset_handler(struct work_struct *work)
return; return;
ishtp_set_drvdata(cl_device, hid_ishtp_cl); ishtp_set_drvdata(cl_device, hid_ishtp_cl);
hid_ishtp_cl->client_data = client_data; ishtp_set_client_data(hid_ishtp_cl, client_data);
client_data->hid_ishtp_cl = hid_ishtp_cl; client_data->hid_ishtp_cl = hid_ishtp_cl;
client_data->num_hid_devices = 0; client_data->num_hid_devices = 0;
...@@ -789,7 +787,7 @@ static void hid_ishtp_cl_reset_handler(struct work_struct *work) ...@@ -789,7 +787,7 @@ static void hid_ishtp_cl_reset_handler(struct work_struct *work)
} }
} }
void (*hid_print_trace)(void *dev, const char *format, ...); void (*hid_print_trace)(void *unused, const char *format, ...);
/** /**
* hid_ishtp_cl_probe() - ISHTP client driver probe * hid_ishtp_cl_probe() - ISHTP client driver probe
...@@ -819,7 +817,7 @@ static int hid_ishtp_cl_probe(struct ishtp_cl_device *cl_device) ...@@ -819,7 +817,7 @@ static int hid_ishtp_cl_probe(struct ishtp_cl_device *cl_device)
return -ENOMEM; return -ENOMEM;
ishtp_set_drvdata(cl_device, hid_ishtp_cl); ishtp_set_drvdata(cl_device, hid_ishtp_cl);
hid_ishtp_cl->client_data = client_data; ishtp_set_client_data(hid_ishtp_cl, client_data);
client_data->hid_ishtp_cl = hid_ishtp_cl; client_data->hid_ishtp_cl = hid_ishtp_cl;
client_data->cl_device = cl_device; client_data->cl_device = cl_device;
...@@ -851,13 +849,13 @@ static int hid_ishtp_cl_probe(struct ishtp_cl_device *cl_device) ...@@ -851,13 +849,13 @@ static int hid_ishtp_cl_probe(struct ishtp_cl_device *cl_device)
static int hid_ishtp_cl_remove(struct ishtp_cl_device *cl_device) static int hid_ishtp_cl_remove(struct ishtp_cl_device *cl_device)
{ {
struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device); struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data; struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__, hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__,
hid_ishtp_cl); hid_ishtp_cl);
dev_dbg(ishtp_device(cl_device), "%s\n", __func__); dev_dbg(ishtp_device(cl_device), "%s\n", __func__);
hid_ishtp_cl->state = ISHTP_CL_DISCONNECTING; ishtp_set_connection_state(hid_ishtp_cl, ISHTP_CL_DISCONNECTING);
ishtp_cl_disconnect(hid_ishtp_cl); ishtp_cl_disconnect(hid_ishtp_cl);
ishtp_put_device(cl_device); ishtp_put_device(cl_device);
ishtp_hid_remove(client_data); ishtp_hid_remove(client_data);
...@@ -881,7 +879,7 @@ static int hid_ishtp_cl_remove(struct ishtp_cl_device *cl_device) ...@@ -881,7 +879,7 @@ static int hid_ishtp_cl_remove(struct ishtp_cl_device *cl_device)
static int hid_ishtp_cl_reset(struct ishtp_cl_device *cl_device) static int hid_ishtp_cl_reset(struct ishtp_cl_device *cl_device)
{ {
struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device); struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data; struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__, hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__,
hid_ishtp_cl); hid_ishtp_cl);
...@@ -891,8 +889,6 @@ static int hid_ishtp_cl_reset(struct ishtp_cl_device *cl_device) ...@@ -891,8 +889,6 @@ static int hid_ishtp_cl_reset(struct ishtp_cl_device *cl_device)
return 0; return 0;
} }
#define to_ishtp_cl_device(d) container_of(d, struct ishtp_cl_device, dev)
/** /**
* hid_ishtp_cl_suspend() - ISHTP client driver suspend * hid_ishtp_cl_suspend() - ISHTP client driver suspend
* @device: device instance * @device: device instance
...@@ -903,9 +899,9 @@ static int hid_ishtp_cl_reset(struct ishtp_cl_device *cl_device) ...@@ -903,9 +899,9 @@ static int hid_ishtp_cl_reset(struct ishtp_cl_device *cl_device)
*/ */
static int hid_ishtp_cl_suspend(struct device *device) static int hid_ishtp_cl_suspend(struct device *device)
{ {
struct ishtp_cl_device *cl_device = to_ishtp_cl_device(device); struct ishtp_cl_device *cl_device = dev_get_drvdata(device);
struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device); struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data; struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__, hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__,
hid_ishtp_cl); hid_ishtp_cl);
...@@ -924,9 +920,9 @@ static int hid_ishtp_cl_suspend(struct device *device) ...@@ -924,9 +920,9 @@ static int hid_ishtp_cl_suspend(struct device *device)
*/ */
static int hid_ishtp_cl_resume(struct device *device) static int hid_ishtp_cl_resume(struct device *device)
{ {
struct ishtp_cl_device *cl_device = to_ishtp_cl_device(device); struct ishtp_cl_device *cl_device = dev_get_drvdata(device);
struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device); struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data; struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__, hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__,
hid_ishtp_cl); hid_ishtp_cl);
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
#include <linux/hid.h> #include <linux/hid.h>
#include <linux/intel-ish-client-if.h> #include <linux/intel-ish-client-if.h>
#include <uapi/linux/input.h> #include <uapi/linux/input.h>
#include "ishtp/client.h"
#include "ishtp-hid.h" #include "ishtp-hid.h"
/** /**
...@@ -154,7 +153,6 @@ static void ishtp_hid_request(struct hid_device *hid, struct hid_report *rep, ...@@ -154,7 +153,6 @@ static void ishtp_hid_request(struct hid_device *hid, struct hid_report *rep,
static int ishtp_wait_for_response(struct hid_device *hid) static int ishtp_wait_for_response(struct hid_device *hid)
{ {
struct ishtp_hid_data *hid_data = hid->driver_data; struct ishtp_hid_data *hid_data = hid->driver_data;
struct ishtp_cl_data *client_data = hid_data->client_data;
int rv; int rv;
hid_ishtp_trace(client_data, "%s hid %p\n", __func__, hid); hid_ishtp_trace(client_data, "%s hid %p\n", __func__, hid);
......
...@@ -24,9 +24,9 @@ ...@@ -24,9 +24,9 @@
#define IS_RESPONSE 0x80 #define IS_RESPONSE 0x80
/* Used to dump to Linux trace buffer, if enabled */ /* Used to dump to Linux trace buffer, if enabled */
#define hid_ishtp_trace(client, ...) \ extern void (*hid_print_trace)(void *unused, const char *format, ...);
client->cl_device->ishtp_dev->print_log(\ #define hid_ishtp_trace(client, ...) \
client->cl_device->ishtp_dev, __VA_ARGS__) (hid_print_trace)(NULL, __VA_ARGS__)
/* ISH Transport protocol (ISHTP in short) GUID */ /* ISH Transport protocol (ISHTP in short) GUID */
static const guid_t hid_ishtp_guid = static const guid_t hid_ishtp_guid =
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment