summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhang Lixu <lixu.zhang@intel.com>2025-12-10 05:53:28 +0300
committerBenjamin Tissoires <bentiss@kernel.org>2025-12-19 14:10:53 +0300
commitdaeed86b686855adda79f13729e0c9b0530990be (patch)
tree8d1cdb9351bb9af48f2e1b5cd1786201a557f502
parent0e13150c1a13a3a3d6184c24bfd080d5999945d1 (diff)
downloadlinux-daeed86b686855adda79f13729e0c9b0530990be.tar.xz
HID: intel-ish-hid: Update ishtp bus match to support device ID table
The ishtp_cl_bus_match() function previously only checked the first entry in the driver's device ID table. Update it to iterate over the entire table, allowing proper matching for drivers with multiple supported protocol GUIDs. Signed-off-by: Zhang Lixu <lixu.zhang@intel.com> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
-rw-r--r--drivers/hid/intel-ish-hid/ishtp/bus.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/hid/intel-ish-hid/ishtp/bus.c b/drivers/hid/intel-ish-hid/ishtp/bus.c
index c6ce37244e49..c3915f3a060e 100644
--- a/drivers/hid/intel-ish-hid/ishtp/bus.c
+++ b/drivers/hid/intel-ish-hid/ishtp/bus.c
@@ -240,9 +240,17 @@ static int ishtp_cl_bus_match(struct device *dev, const struct device_driver *dr
{
struct ishtp_cl_device *device = to_ishtp_cl_device(dev);
struct ishtp_cl_driver *driver = to_ishtp_cl_driver(drv);
+ struct ishtp_fw_client *client = device->fw_client;
+ const struct ishtp_device_id *id;
- return(device->fw_client ? guid_equal(&driver->id[0].guid,
- &device->fw_client->props.protocol_name) : 0);
+ if (client) {
+ for (id = driver->id; !guid_is_null(&id->guid); id++) {
+ if (guid_equal(&id->guid, &client->props.protocol_name))
+ return 1;
+ }
+ }
+
+ return 0;
}
/**