diff options
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/mei/amthif.c | 1 | ||||
-rw-r--r-- | drivers/misc/mei/bus.c | 4 | ||||
-rw-r--r-- | drivers/misc/mei/client.c | 14 | ||||
-rw-r--r-- | drivers/misc/mei/client.h | 4 | ||||
-rw-r--r-- | drivers/misc/mei/main.c | 3 | ||||
-rw-r--r-- | drivers/misc/mei/mei_dev.h | 2 | ||||
-rw-r--r-- | drivers/misc/mei/nfc.c | 6 | ||||
-rw-r--r-- | drivers/misc/mei/wd.c | 1 |
8 files changed, 26 insertions, 9 deletions
diff --git a/drivers/misc/mei/amthif.c b/drivers/misc/mei/amthif.c index c1fc6dd8faae..4114758cd1ce 100644 --- a/drivers/misc/mei/amthif.c +++ b/drivers/misc/mei/amthif.c | |||
@@ -83,6 +83,7 @@ int mei_amthif_host_init(struct mei_device *dev) | |||
83 | } | 83 | } |
84 | 84 | ||
85 | cl->me_client_id = me_cl->client_id; | 85 | cl->me_client_id = me_cl->client_id; |
86 | cl->cl_uuid = me_cl->props.protocol_name; | ||
86 | 87 | ||
87 | /* Assign iamthif_mtu to the value received from ME */ | 88 | /* Assign iamthif_mtu to the value received from ME */ |
88 | 89 | ||
diff --git a/drivers/misc/mei/bus.c b/drivers/misc/mei/bus.c index c829676c4716..09dad2df7aae 100644 --- a/drivers/misc/mei/bus.c +++ b/drivers/misc/mei/bus.c | |||
@@ -147,7 +147,7 @@ static struct mei_cl *mei_bus_find_mei_cl_by_uuid(struct mei_device *dev, | |||
147 | struct mei_cl *cl; | 147 | struct mei_cl *cl; |
148 | 148 | ||
149 | list_for_each_entry(cl, &dev->device_list, device_link) { | 149 | list_for_each_entry(cl, &dev->device_list, device_link) { |
150 | if (!uuid_le_cmp(uuid, cl->device_uuid)) | 150 | if (!uuid_le_cmp(uuid, cl->cl_uuid)) |
151 | return cl; | 151 | return cl; |
152 | } | 152 | } |
153 | 153 | ||
@@ -242,7 +242,7 @@ static int ___mei_cl_send(struct mei_cl *cl, u8 *buf, size_t length, | |||
242 | return -ENODEV; | 242 | return -ENODEV; |
243 | 243 | ||
244 | /* Check if we have an ME client device */ | 244 | /* Check if we have an ME client device */ |
245 | me_cl = mei_me_cl_by_id(dev, cl->me_client_id); | 245 | me_cl = mei_me_cl_by_uuid_id(dev, &cl->cl_uuid, cl->me_client_id); |
246 | if (!me_cl) | 246 | if (!me_cl) |
247 | return -ENOTTY; | 247 | return -ENOTTY; |
248 | 248 | ||
diff --git a/drivers/misc/mei/client.c b/drivers/misc/mei/client.c index 10d0a04f45d6..1a4dafb77205 100644 --- a/drivers/misc/mei/client.c +++ b/drivers/misc/mei/client.c | |||
@@ -69,6 +69,18 @@ struct mei_me_client *mei_me_cl_by_id(struct mei_device *dev, u8 client_id) | |||
69 | return NULL; | 69 | return NULL; |
70 | } | 70 | } |
71 | 71 | ||
72 | struct mei_me_client *mei_me_cl_by_uuid_id(struct mei_device *dev, | ||
73 | const uuid_le *uuid, u8 client_id) | ||
74 | { | ||
75 | struct mei_me_client *me_cl; | ||
76 | |||
77 | list_for_each_entry(me_cl, &dev->me_clients, list) | ||
78 | if (uuid_le_cmp(*uuid, me_cl->props.protocol_name) == 0 && | ||
79 | me_cl->client_id == client_id) | ||
80 | return me_cl; | ||
81 | return NULL; | ||
82 | } | ||
83 | |||
72 | /** | 84 | /** |
73 | * mei_me_cl_remove - remove me client matching uuid and client_id | 85 | * mei_me_cl_remove - remove me client matching uuid and client_id |
74 | * | 86 | * |
@@ -753,7 +765,7 @@ int mei_cl_read_start(struct mei_cl *cl, size_t length) | |||
753 | cl_dbg(dev, cl, "read is pending.\n"); | 765 | cl_dbg(dev, cl, "read is pending.\n"); |
754 | return -EBUSY; | 766 | return -EBUSY; |
755 | } | 767 | } |
756 | me_cl = mei_me_cl_by_id(dev, cl->me_client_id); | 768 | me_cl = mei_me_cl_by_uuid_id(dev, &cl->cl_uuid, cl->me_client_id); |
757 | if (!me_cl) { | 769 | if (!me_cl) { |
758 | cl_err(dev, cl, "no such me client %d\n", cl->me_client_id); | 770 | cl_err(dev, cl, "no such me client %d\n", cl->me_client_id); |
759 | return -ENOTTY; | 771 | return -ENOTTY; |
diff --git a/drivers/misc/mei/client.h b/drivers/misc/mei/client.h index 8871a852cfbb..f5d03d622923 100644 --- a/drivers/misc/mei/client.h +++ b/drivers/misc/mei/client.h | |||
@@ -27,6 +27,10 @@ | |||
27 | struct mei_me_client *mei_me_cl_by_uuid(const struct mei_device *dev, | 27 | struct mei_me_client *mei_me_cl_by_uuid(const struct mei_device *dev, |
28 | const uuid_le *cuuid); | 28 | const uuid_le *cuuid); |
29 | struct mei_me_client *mei_me_cl_by_id(struct mei_device *dev, u8 client_id); | 29 | struct mei_me_client *mei_me_cl_by_id(struct mei_device *dev, u8 client_id); |
30 | |||
31 | struct mei_me_client *mei_me_cl_by_uuid_id(struct mei_device *dev, | ||
32 | const uuid_le *uuid, u8 client_id); | ||
33 | |||
30 | void mei_me_cl_remove(struct mei_device *dev, | 34 | void mei_me_cl_remove(struct mei_device *dev, |
31 | const uuid_le *uuid, u8 client_id); | 35 | const uuid_le *uuid, u8 client_id); |
32 | 36 | ||
diff --git a/drivers/misc/mei/main.c b/drivers/misc/mei/main.c index a65b7cc4a877..957f44aaa97a 100644 --- a/drivers/misc/mei/main.c +++ b/drivers/misc/mei/main.c | |||
@@ -321,7 +321,7 @@ static ssize_t mei_write(struct file *file, const char __user *ubuf, | |||
321 | goto out; | 321 | goto out; |
322 | } | 322 | } |
323 | 323 | ||
324 | me_cl = mei_me_cl_by_id(dev, cl->me_client_id); | 324 | me_cl = mei_me_cl_by_uuid_id(dev, &cl->cl_uuid, cl->me_client_id); |
325 | if (!me_cl) { | 325 | if (!me_cl) { |
326 | rets = -ENOTTY; | 326 | rets = -ENOTTY; |
327 | goto out; | 327 | goto out; |
@@ -459,6 +459,7 @@ static int mei_ioctl_connect_client(struct file *file, | |||
459 | } | 459 | } |
460 | 460 | ||
461 | cl->me_client_id = me_cl->client_id; | 461 | cl->me_client_id = me_cl->client_id; |
462 | cl->cl_uuid = me_cl->props.protocol_name; | ||
462 | 463 | ||
463 | dev_dbg(&dev->pdev->dev, "Connect to FW Client ID = %d\n", | 464 | dev_dbg(&dev->pdev->dev, "Connect to FW Client ID = %d\n", |
464 | cl->me_client_id); | 465 | cl->me_client_id); |
diff --git a/drivers/misc/mei/mei_dev.h b/drivers/misc/mei/mei_dev.h index 76d8aa30e90d..9f684b9b3c93 100644 --- a/drivers/misc/mei/mei_dev.h +++ b/drivers/misc/mei/mei_dev.h | |||
@@ -212,6 +212,7 @@ struct mei_cl { | |||
212 | wait_queue_head_t wait; | 212 | wait_queue_head_t wait; |
213 | int status; | 213 | int status; |
214 | /* ID of client connected */ | 214 | /* ID of client connected */ |
215 | uuid_le cl_uuid; | ||
215 | u8 host_client_id; | 216 | u8 host_client_id; |
216 | u8 me_client_id; | 217 | u8 me_client_id; |
217 | u8 mei_flow_ctrl_creds; | 218 | u8 mei_flow_ctrl_creds; |
@@ -223,7 +224,6 @@ struct mei_cl { | |||
223 | /* MEI CL bus data */ | 224 | /* MEI CL bus data */ |
224 | struct mei_cl_device *device; | 225 | struct mei_cl_device *device; |
225 | struct list_head device_link; | 226 | struct list_head device_link; |
226 | uuid_le device_uuid; | ||
227 | }; | 227 | }; |
228 | 228 | ||
229 | /** struct mei_hw_ops | 229 | /** struct mei_hw_ops |
diff --git a/drivers/misc/mei/nfc.c b/drivers/misc/mei/nfc.c index 964b4c606646..e0e75d429fdf 100644 --- a/drivers/misc/mei/nfc.c +++ b/drivers/misc/mei/nfc.c | |||
@@ -507,12 +507,12 @@ int mei_nfc_host_init(struct mei_device *dev) | |||
507 | } | 507 | } |
508 | 508 | ||
509 | cl_info->me_client_id = me_cl->client_id; | 509 | cl_info->me_client_id = me_cl->client_id; |
510 | cl_info->cl_uuid = me_cl->props.protocol_name; | ||
510 | 511 | ||
511 | ret = mei_cl_link(cl_info, MEI_HOST_CLIENT_ID_ANY); | 512 | ret = mei_cl_link(cl_info, MEI_HOST_CLIENT_ID_ANY); |
512 | if (ret) | 513 | if (ret) |
513 | goto err; | 514 | goto err; |
514 | 515 | ||
515 | cl_info->device_uuid = mei_nfc_info_guid; | ||
516 | 516 | ||
517 | list_add_tail(&cl_info->device_link, &dev->device_list); | 517 | list_add_tail(&cl_info->device_link, &dev->device_list); |
518 | 518 | ||
@@ -525,14 +525,12 @@ int mei_nfc_host_init(struct mei_device *dev) | |||
525 | } | 525 | } |
526 | 526 | ||
527 | cl->me_client_id = me_cl->client_id; | 527 | cl->me_client_id = me_cl->client_id; |
528 | cl->cl_uuid = me_cl->props.protocol_name; | ||
528 | 529 | ||
529 | ret = mei_cl_link(cl, MEI_HOST_CLIENT_ID_ANY); | 530 | ret = mei_cl_link(cl, MEI_HOST_CLIENT_ID_ANY); |
530 | if (ret) | 531 | if (ret) |
531 | goto err; | 532 | goto err; |
532 | 533 | ||
533 | cl->device_uuid = mei_nfc_guid; | ||
534 | |||
535 | |||
536 | list_add_tail(&cl->device_link, &dev->device_list); | 534 | list_add_tail(&cl->device_link, &dev->device_list); |
537 | 535 | ||
538 | ndev->req_id = 1; | 536 | ndev->req_id = 1; |
diff --git a/drivers/misc/mei/wd.c b/drivers/misc/mei/wd.c index 8b241eef35d2..40f46e4c2e9c 100644 --- a/drivers/misc/mei/wd.c +++ b/drivers/misc/mei/wd.c | |||
@@ -76,6 +76,7 @@ int mei_wd_host_init(struct mei_device *dev) | |||
76 | } | 76 | } |
77 | 77 | ||
78 | cl->me_client_id = me_cl->client_id; | 78 | cl->me_client_id = me_cl->client_id; |
79 | cl->cl_uuid = me_cl->props.protocol_name; | ||
79 | 80 | ||
80 | ret = mei_cl_link(cl, MEI_WD_HOST_CLIENT_ID); | 81 | ret = mei_cl_link(cl, MEI_WD_HOST_CLIENT_ID); |
81 | 82 | ||