]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
HID: quirks: work around VID/PID conflict for 0x4c4a/0x4155
authorZhang Heng <zhangheng@kylinos.cn>
Fri, 12 Sep 2025 12:38:18 +0000 (20:38 +0800)
committerJiri Kosina <jkosina@suse.com>
Thu, 30 Oct 2025 10:25:44 +0000 (11:25 +0100)
Based on available evidence, the USB ID 4c4a:4155 used by multiple
devices has been attributed to Jieli. The commit 1a8953f4f774
("HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY") affected touchscreen
functionality. Added checks for manufacturer and serial number to
maintain microphone compatibility, enabling both devices to function
properly.

[jkosina@suse.com: edit shortlog]
Fixes: 1a8953f4f774 ("HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY")
Cc: stable@vger.kernel.org
Tested-by: staffan.melin@oscillator.se
Reviewed-by: Terry Junge <linuxhid@cosmicgizmosystems.com>
Signed-off-by: Zhang Heng <zhangheng@kylinos.cn>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/hid-ids.h
drivers/hid/hid-quirks.c

index 0723b4b1c9eca434f1ca36d839cdb961f41818cd..52ae7c29f9e085cfa9adf538929f17b45b2302b2 100644 (file)
 #define USB_VENDOR_ID_SIGNOTEC                 0x2133
 #define USB_DEVICE_ID_SIGNOTEC_VIEWSONIC_PD1011        0x0018
 
-#define USB_VENDOR_ID_SMARTLINKTECHNOLOGY              0x4c4a
-#define USB_DEVICE_ID_SMARTLINKTECHNOLOGY_4155         0x4155
+#define USB_VENDOR_ID_JIELI_SDK_DEFAULT                0x4c4a
+#define USB_DEVICE_ID_JIELI_SDK_4155           0x4155
 
 #endif
index bcd4bccf1a7cee7c0d13a89be4d14cc963acd577..22760ac50f2d9d98c22def4fef8dbf299541c01e 100644 (file)
@@ -915,7 +915,6 @@ static const struct hid_device_id hid_ignore_list[] = {
 #endif
        { HID_USB_DEVICE(USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) },
        { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_HP_5MP_CAMERA_5473) },
-       { HID_USB_DEVICE(USB_VENDOR_ID_SMARTLINKTECHNOLOGY, USB_DEVICE_ID_SMARTLINKTECHNOLOGY_4155) },
        { }
 };
 
@@ -1064,6 +1063,18 @@ bool hid_ignore(struct hid_device *hdev)
                                             strlen(elan_acpi_id[i].id)))
                                        return true;
                break;
+       case USB_VENDOR_ID_JIELI_SDK_DEFAULT:
+               /*
+                * Multiple USB devices with identical IDs (mic & touchscreen).
+                * The touch screen requires hid core processing, but the
+                * microphone does not. They can be distinguished by manufacturer
+                * and serial number.
+                */
+               if (hdev->product == USB_DEVICE_ID_JIELI_SDK_4155 &&
+                   strncmp(hdev->name, "SmartlinkTechnology", 19) == 0 &&
+                   strncmp(hdev->uniq, "20201111000001", 14) == 0)
+                       return true;
+               break;
        }
 
        if (hdev->type == HID_TYPE_USBMOUSE &&