]> git.baikalelectronics.ru Git - kernel.git/commitdiff
HID: ite: Add support for Acer S1002 keyboard-dock
authorHans de Goede <hdegoede@redhat.com>
Wed, 25 Nov 2020 22:37:45 +0000 (23:37 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Jan 2023 10:40:48 +0000 (11:40 +0100)
[ Upstream commit 580cc6615a2efc955812fe527019dbd38d6fb5c4 ]

Make the hid-ite driver handle the Acer S1002 keyboard-dock, this
leads to 2 improvements:

1. The non working wifi-toggle hotkey now works.
2. Toggling the touchpad on of with the hotkey will no show OSD
notifications in e.g. GNOME3. The actual toggling is handled inside
the keyboard, this adds support for notifying evdev listeners about this.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Stable-dep-of: 8f04554b1c08 ("HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch V 10")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/hid/hid-ids.h
drivers/hid/hid-ite.c

index 0d4479f478aa4f403b0c1ca26c6bc6871d0f0fb1..a590334cc2a3d85470347f7ddc0b2e99aa25d1dd 100644 (file)
 #define USB_DEVICE_ID_SYNAPTICS_DELL_K12A      0x2819
 #define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_012       0x2968
 #define USB_DEVICE_ID_SYNAPTICS_TP_V103        0x5710
+#define USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1002 0x73f4
 #define USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003 0x73f5
 #define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5   0x81a7
 
index 742c052b0110af4b2b1666d179dd27b6747b02f5..22bfbebceaf44b2685af83d354d3fa79ec6dc05f 100644 (file)
@@ -18,10 +18,16 @@ static __u8 *ite_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int
        unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
 
        if (quirks & QUIRK_TOUCHPAD_ON_OFF_REPORT) {
+               /* For Acer Aspire Switch 10 SW5-012 keyboard-dock */
                if (*rsize == 188 && rdesc[162] == 0x81 && rdesc[163] == 0x02) {
-                       hid_info(hdev, "Fixing up ITE keyboard report descriptor\n");
+                       hid_info(hdev, "Fixing up Acer Sw5-012 ITE keyboard report descriptor\n");
                        rdesc[163] = HID_MAIN_ITEM_RELATIVE;
                }
+               /* For Acer One S1002 keyboard-dock */
+               if (*rsize == 188 && rdesc[185] == 0x81 && rdesc[186] == 0x02) {
+                       hid_info(hdev, "Fixing up Acer S1002 ITE keyboard report descriptor\n");
+                       rdesc[186] = HID_MAIN_ITEM_RELATIVE;
+               }
        }
 
        return rdesc;
@@ -101,6 +107,11 @@ static const struct hid_device_id ite_devices[] = {
                     USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_012),
          .driver_data = QUIRK_TOUCHPAD_ON_OFF_REPORT },
        /* ITE8910 USB kbd ctlr, with Synaptics touchpad connected to it. */
+       { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
+                    USB_VENDOR_ID_SYNAPTICS,
+                    USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1002),
+         .driver_data = QUIRK_TOUCHPAD_ON_OFF_REPORT },
+       /* ITE8910 USB kbd ctlr, with Synaptics touchpad connected to it. */
        { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
                     USB_VENDOR_ID_SYNAPTICS,
                     USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003) },