Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

HID: asus: add support for VivoBook E200HA

Asus X205TA and E200HA built-in keyboard contain wrong logical maximum value in
report descriptor.

This patch correct wrong logical maximum in report descriptor.

Signed-off-by: Yusuke Fujimaki <usk.fujimaki@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>

authored by

Yusuke Fujimaki and committed by
Jiri Kosina
b94f7d5d eeb01a57

+15 -7
+5 -1
drivers/hid/Kconfig
··· 138 138 tristate "Asus" 139 139 depends on I2C_HID 140 140 ---help--- 141 - Support for Asus X205TA built-in keyboard via i2c. 141 + Support for Asus notebook built-in keyboard via i2c. 142 + 143 + Supported devices: 144 + - EeeBook X205TA 145 + - VivoBook E200HA 142 146 143 147 config HID_AUREAL 144 148 tristate "Aureal"
+8 -4
drivers/hid/hid-asus.c
··· 1 1 /* 2 - * HID driver for Asus X205TA built-in keyboard. 2 + * HID driver for Asus notebook built-in keyboard. 3 3 * Fixes small logical maximum to match usage maximum. 4 + * 5 + * Currently supported devices are: 6 + * EeeBook X205TA 7 + * VivoBook E200HA 4 8 * 5 9 * Copyright (c) 2016 Yusuke Fujimaki <usk.fujimaki@gmail.com> 6 10 * ··· 29 25 static __u8 *asus_report_fixup(struct hid_device *hdev, __u8 *rdesc, 30 26 unsigned int *rsize) 31 27 { 32 - if (*rsize >= 180 && rdesc[54] == 0x25 && rdesc[55] == 0x65) { 33 - hid_info(hdev, "Fixing up Asus X205TA report descriptor\n"); 28 + if (*rsize >= 56 && rdesc[54] == 0x25 && rdesc[55] == 0x65) { 29 + hid_info(hdev, "Fixing up Asus notebook report descriptor\n"); 34 30 rdesc[55] = 0xdd; 35 31 } 36 32 return rdesc; 37 33 } 38 34 39 35 static const struct hid_device_id asus_devices[] = { 40 - { HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_X205TA_KEYBOARD) }, 36 + { HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_NOTEBOOK_KEYBOARD) }, 41 37 { } 42 38 }; 43 39 MODULE_DEVICE_TABLE(hid, asus_devices);
+1 -1
drivers/hid/hid-core.c
··· 1856 1856 { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_JIS) }, 1857 1857 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, 1858 1858 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, 1859 - { HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_X205TA_KEYBOARD) }, 1859 + { HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_NOTEBOOK_KEYBOARD) }, 1860 1860 { HID_USB_DEVICE(USB_VENDOR_ID_AUREAL, USB_DEVICE_ID_AUREAL_W01RN) }, 1861 1861 { HID_USB_DEVICE(USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM) }, 1862 1862 { HID_USB_DEVICE(USB_VENDOR_ID_BETOP_2185BFM, 0x2208) },
+1 -1
drivers/hid/hid-ids.h
··· 163 163 #define USB_VENDOR_ID_ASUSTEK 0x0b05 164 164 #define USB_DEVICE_ID_ASUSTEK_LCM 0x1726 165 165 #define USB_DEVICE_ID_ASUSTEK_LCM2 0x175b 166 - #define USB_DEVICE_ID_ASUSTEK_X205TA_KEYBOARD 0x8585 166 + #define USB_DEVICE_ID_ASUSTEK_NOTEBOOK_KEYBOARD 0x8585 167 167 168 168 #define USB_VENDOR_ID_ATEN 0x0557 169 169 #define USB_DEVICE_ID_ATEN_UC100KM 0x2004