Skip to content

Commit 29b06d1

Browse files
spandruvadaJiri Kosina
authored andcommitted
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: Srinivas Pandruvada <[email protected]> Signed-off-by: Jiri Kosina <[email protected]>
1 parent 5f7224c commit 29b06d1

File tree

3 files changed

+35
-41
lines changed

3 files changed

+35
-41
lines changed

drivers/hid/intel-ish-hid/ishtp-hid-client.c

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
#include <linux/hid.h>
1818
#include <linux/intel-ish-client-if.h>
1919
#include <linux/sched.h>
20-
#include "ishtp/ishtp-dev.h"
21-
#include "ishtp/client.h"
2220
#include "ishtp-hid.h"
2321

2422
/* Rx ring buffer pool size */
@@ -40,7 +38,7 @@ static void report_bad_packet(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
4038
size_t cur_pos, size_t payload_len)
4139
{
4240
struct hostif_msg *recv_msg = recv_buf;
43-
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data;
41+
struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
4442

4543
dev_err(cl_data_to_dev(client_data), "[hid-ish]: BAD packet %02X\n"
4644
"total_bad=%u cur_pos=%u\n"
@@ -77,7 +75,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
7775
struct report_list *reports_list;
7876
char *reports;
7977
size_t report_len;
80-
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data;
78+
struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
8179
int curr_hid_dev = client_data->cur_hid_dev;
8280
struct ishtp_hid_data *hid_data = NULL;
8381
struct hid_device *hid = NULL;
@@ -93,7 +91,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
9391
(unsigned int)data_len,
9492
(unsigned int)sizeof(struct hostif_msg_hdr));
9593
++client_data->bad_recv_cnt;
96-
ish_hw_reset(hid_ishtp_cl->dev);
94+
ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
9795
break;
9896
}
9997

@@ -106,7 +104,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
106104
++client_data->bad_recv_cnt;
107105
report_bad_packet(hid_ishtp_cl, recv_msg, cur_pos,
108106
payload_len);
109-
ish_hw_reset(hid_ishtp_cl->dev);
107+
ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
110108
break;
111109
}
112110

@@ -121,7 +119,7 @@ static void process_recv(struct ishtp_cl *hid_ishtp_cl, void *recv_buf,
121119
report_bad_packet(hid_ishtp_cl, recv_msg,
122120
cur_pos,
123121
payload_len);
124-
ish_hw_reset(hid_ishtp_cl->dev);
122+
ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
125123
break;
126124
}
127125
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,
170168
report_bad_packet(hid_ishtp_cl, recv_msg,
171169
cur_pos,
172170
payload_len);
173-
ish_hw_reset(hid_ishtp_cl->dev);
171+
ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
174172
break;
175173
}
176174
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,
195193
report_bad_packet(hid_ishtp_cl, recv_msg,
196194
cur_pos,
197195
payload_len);
198-
ish_hw_reset(hid_ishtp_cl->dev);
196+
ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
199197
break;
200198
}
201199
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,
313311
++client_data->bad_recv_cnt;
314312
report_bad_packet(hid_ishtp_cl, recv_msg, cur_pos,
315313
payload_len);
316-
ish_hw_reset(hid_ishtp_cl->dev);
314+
ish_hw_reset(ishtp_get_ishtp_device(hid_ishtp_cl));
317315
break;
318316

319317
}
@@ -493,7 +491,7 @@ int ishtp_hid_link_ready_wait(struct ishtp_cl_data *client_data)
493491
static int ishtp_enum_enum_devices(struct ishtp_cl *hid_ishtp_cl)
494492
{
495493
struct hostif_msg msg;
496-
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data;
494+
struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
497495
int retry_count;
498496
int rv;
499497

@@ -530,7 +528,7 @@ static int ishtp_enum_enum_devices(struct ishtp_cl *hid_ishtp_cl)
530528
}
531529

532530
client_data->num_hid_devices = client_data->hid_dev_count;
533-
dev_info(&hid_ishtp_cl->device->dev,
531+
dev_info(ishtp_device(client_data->cl_device),
534532
"[hid-ish]: enum_devices_done OK, num_hid_devices=%d\n",
535533
client_data->num_hid_devices);
536534

@@ -549,7 +547,7 @@ static int ishtp_enum_enum_devices(struct ishtp_cl *hid_ishtp_cl)
549547
static int ishtp_get_hid_descriptor(struct ishtp_cl *hid_ishtp_cl, int index)
550548
{
551549
struct hostif_msg msg;
552-
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data;
550+
struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
553551
int rv;
554552

555553
/* Get HID descriptor */
@@ -596,7 +594,7 @@ static int ishtp_get_report_descriptor(struct ishtp_cl *hid_ishtp_cl,
596594
int index)
597595
{
598596
struct hostif_msg msg;
599-
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data;
597+
struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
600598
int rv;
601599

602600
/* Get report descriptor */
@@ -644,7 +642,7 @@ static int ishtp_get_report_descriptor(struct ishtp_cl *hid_ishtp_cl,
644642
static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset)
645643
{
646644
struct ishtp_device *dev;
647-
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data;
645+
struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
648646
struct ishtp_fw_client *fw_client;
649647
int i;
650648
int rv;
@@ -661,21 +659,21 @@ static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset)
661659

662660
client_data->init_done = 0;
663661

664-
dev = hid_ishtp_cl->dev;
662+
dev = ishtp_get_ishtp_device(hid_ishtp_cl);
665663

666664
/* Connect to FW client */
667-
hid_ishtp_cl->rx_ring_size = HID_CL_RX_RING_SIZE;
668-
hid_ishtp_cl->tx_ring_size = HID_CL_TX_RING_SIZE;
665+
ishtp_set_tx_ring_size(hid_ishtp_cl, HID_CL_TX_RING_SIZE);
666+
ishtp_set_rx_ring_size(hid_ishtp_cl, HID_CL_RX_RING_SIZE);
669667

670668
fw_client = ishtp_fw_cl_get_client(dev, &hid_ishtp_guid);
671669
if (!fw_client) {
672670
dev_err(cl_data_to_dev(client_data),
673671
"ish client uuid not found\n");
674672
return -ENOENT;
675673
}
676-
677-
hid_ishtp_cl->fw_client_id = fw_client->client_id;
678-
hid_ishtp_cl->state = ISHTP_CL_CONNECTING;
674+
ishtp_cl_set_fw_client_id(hid_ishtp_cl,
675+
ishtp_get_fw_client_id(fw_client));
676+
ishtp_set_connection_state(hid_ishtp_cl, ISHTP_CL_CONNECTING);
679677

680678
rv = ishtp_cl_connect(hid_ishtp_cl);
681679
if (rv) {
@@ -687,7 +685,7 @@ static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset)
687685
hid_ishtp_trace(client_data, "%s client connected\n", __func__);
688686

689687
/* Register read callback */
690-
ishtp_register_event_cb(hid_ishtp_cl->device, ish_cl_event_cb);
688+
ishtp_register_event_cb(client_data->cl_device, ish_cl_event_cb);
691689

692690
rv = ishtp_enum_enum_devices(hid_ishtp_cl);
693691
if (rv)
@@ -725,7 +723,7 @@ static int hid_ishtp_cl_init(struct ishtp_cl *hid_ishtp_cl, int reset)
725723
return 0;
726724

727725
err_cl_disconnect:
728-
hid_ishtp_cl->state = ISHTP_CL_DISCONNECTING;
726+
ishtp_set_connection_state(hid_ishtp_cl, ISHTP_CL_DISCONNECTING);
729727
ishtp_cl_disconnect(hid_ishtp_cl);
730728
err_cl_unlink:
731729
ishtp_cl_unlink(hid_ishtp_cl);
@@ -762,7 +760,7 @@ static void hid_ishtp_cl_reset_handler(struct work_struct *work)
762760

763761
hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__,
764762
hid_ishtp_cl);
765-
dev_dbg(&cl_device->dev, "%s\n", __func__);
763+
dev_dbg(ishtp_device(client_data->cl_device), "%s\n", __func__);
766764

767765
hid_ishtp_cl_deinit(hid_ishtp_cl);
768766

@@ -771,7 +769,7 @@ static void hid_ishtp_cl_reset_handler(struct work_struct *work)
771769
return;
772770

773771
ishtp_set_drvdata(cl_device, hid_ishtp_cl);
774-
hid_ishtp_cl->client_data = client_data;
772+
ishtp_set_client_data(hid_ishtp_cl, client_data);
775773
client_data->hid_ishtp_cl = hid_ishtp_cl;
776774

777775
client_data->num_hid_devices = 0;
@@ -789,7 +787,7 @@ static void hid_ishtp_cl_reset_handler(struct work_struct *work)
789787
}
790788
}
791789

792-
void (*hid_print_trace)(void *dev, const char *format, ...);
790+
void (*hid_print_trace)(void *unused, const char *format, ...);
793791

794792
/**
795793
* hid_ishtp_cl_probe() - ISHTP client driver probe
@@ -819,7 +817,7 @@ static int hid_ishtp_cl_probe(struct ishtp_cl_device *cl_device)
819817
return -ENOMEM;
820818

821819
ishtp_set_drvdata(cl_device, hid_ishtp_cl);
822-
hid_ishtp_cl->client_data = client_data;
820+
ishtp_set_client_data(hid_ishtp_cl, client_data);
823821
client_data->hid_ishtp_cl = hid_ishtp_cl;
824822
client_data->cl_device = cl_device;
825823

@@ -851,13 +849,13 @@ static int hid_ishtp_cl_probe(struct ishtp_cl_device *cl_device)
851849
static int hid_ishtp_cl_remove(struct ishtp_cl_device *cl_device)
852850
{
853851
struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);
854-
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data;
852+
struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
855853

856854
hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__,
857855
hid_ishtp_cl);
858856

859857
dev_dbg(ishtp_device(cl_device), "%s\n", __func__);
860-
hid_ishtp_cl->state = ISHTP_CL_DISCONNECTING;
858+
ishtp_set_connection_state(hid_ishtp_cl, ISHTP_CL_DISCONNECTING);
861859
ishtp_cl_disconnect(hid_ishtp_cl);
862860
ishtp_put_device(cl_device);
863861
ishtp_hid_remove(client_data);
@@ -881,7 +879,7 @@ static int hid_ishtp_cl_remove(struct ishtp_cl_device *cl_device)
881879
static int hid_ishtp_cl_reset(struct ishtp_cl_device *cl_device)
882880
{
883881
struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);
884-
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data;
882+
struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
885883

886884
hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__,
887885
hid_ishtp_cl);
@@ -891,8 +889,6 @@ static int hid_ishtp_cl_reset(struct ishtp_cl_device *cl_device)
891889
return 0;
892890
}
893891

894-
#define to_ishtp_cl_device(d) container_of(d, struct ishtp_cl_device, dev)
895-
896892
/**
897893
* hid_ishtp_cl_suspend() - ISHTP client driver suspend
898894
* @device: device instance
@@ -903,9 +899,9 @@ static int hid_ishtp_cl_reset(struct ishtp_cl_device *cl_device)
903899
*/
904900
static int hid_ishtp_cl_suspend(struct device *device)
905901
{
906-
struct ishtp_cl_device *cl_device = to_ishtp_cl_device(device);
902+
struct ishtp_cl_device *cl_device = dev_get_drvdata(device);
907903
struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);
908-
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data;
904+
struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
909905

910906
hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__,
911907
hid_ishtp_cl);
@@ -924,9 +920,9 @@ static int hid_ishtp_cl_suspend(struct device *device)
924920
*/
925921
static int hid_ishtp_cl_resume(struct device *device)
926922
{
927-
struct ishtp_cl_device *cl_device = to_ishtp_cl_device(device);
923+
struct ishtp_cl_device *cl_device = dev_get_drvdata(device);
928924
struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);
929-
struct ishtp_cl_data *client_data = hid_ishtp_cl->client_data;
925+
struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
930926

931927
hid_ishtp_trace(client_data, "%s hid_ishtp_cl %p\n", __func__,
932928
hid_ishtp_cl);

drivers/hid/intel-ish-hid/ishtp-hid.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
#include <linux/hid.h>
1717
#include <linux/intel-ish-client-if.h>
1818
#include <uapi/linux/input.h>
19-
#include "ishtp/client.h"
2019
#include "ishtp-hid.h"
2120

2221
/**
@@ -154,7 +153,6 @@ static void ishtp_hid_request(struct hid_device *hid, struct hid_report *rep,
154153
static int ishtp_wait_for_response(struct hid_device *hid)
155154
{
156155
struct ishtp_hid_data *hid_data = hid->driver_data;
157-
struct ishtp_cl_data *client_data = hid_data->client_data;
158156
int rv;
159157

160158
hid_ishtp_trace(client_data, "%s hid %p\n", __func__, hid);

drivers/hid/intel-ish-hid/ishtp-hid.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
#define IS_RESPONSE 0x80
2525

2626
/* Used to dump to Linux trace buffer, if enabled */
27-
#define hid_ishtp_trace(client, ...) \
28-
client->cl_device->ishtp_dev->print_log(\
29-
client->cl_device->ishtp_dev, __VA_ARGS__)
27+
extern void (*hid_print_trace)(void *unused, const char *format, ...);
28+
#define hid_ishtp_trace(client, ...) \
29+
(hid_print_trace)(NULL, __VA_ARGS__)
3030

3131
/* ISH Transport protocol (ISHTP in short) GUID */
3232
static const guid_t hid_ishtp_guid =

0 commit comments

Comments
 (0)