Commit f4f11a8c authored by Hans de Goede's avatar Hans de Goede Committed by sanglipeng
Browse files

HID: ite: Add support for Acer S1002 keyboard-dock

stable inclusion
from stable-v5.10.161
commit a20b5eec0742396531cdcc2b6d655ed032a75d35
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I7P7OH

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a20b5eec0742396531cdcc2b6d655ed032a75d35



--------------------------------

[ Upstream commit c961facb ]

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: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
Stable-dep-of: 9ad6645a ("HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch V 10")
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarsanglipeng <sanglipeng1@jd.com>
parent 19253906
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1150,6 +1150,7 @@
#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

+12 −1
Original line number Diff line number Diff line
@@ -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) },