Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
HID: wacom: Add BTN_TOOL_FINGER for pad button reporting
HID: add device IDs for new model of Apple Wireless Keyboard
HID: fix pad button definition in hid-wacom
HID: Support 171 byte variant of Samsung USB IR receiver
HID: blacklist ET&T TC5UH touchscreen controller

+40 -6
+7
drivers/hid/hid-apple.c
··· 431 431 .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, 432 432 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS), 433 433 .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, 434 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI), 435 + .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, 436 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO), 437 + .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN | 438 + APPLE_ISO_KEYBOARD }, 439 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS), 440 + .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, 434 441 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY), 435 442 .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, 436 443 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY),
+4
drivers/hid/hid-core.c
··· 1285 1285 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) }, 1286 1286 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) }, 1287 1287 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) }, 1288 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) }, 1289 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) }, 1290 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) }, 1288 1291 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, 1289 1292 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, 1290 1293 { HID_USB_DEVICE(USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM) }, ··· 1556 1553 { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE) }, 1557 1554 { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20) }, 1558 1555 { HID_USB_DEVICE(USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5) }, 1556 + { HID_USB_DEVICE(USB_VENDOR_ID_ETT, USB_DEVICE_ID_TC5UH) }, 1559 1557 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0001) }, 1560 1558 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0002) }, 1561 1559 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0003) },
+6
drivers/hid/hid-ids.h
··· 88 88 #define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI 0x0236 89 89 #define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO 0x0237 90 90 #define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS 0x0238 91 + #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI 0x0239 92 + #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO 0x023a 93 + #define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b 91 94 #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a 92 95 #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b 93 96 #define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241 ··· 168 165 169 166 #define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f 170 167 #define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100 168 + 169 + #define USB_VENDOR_ID_ETT 0x0664 170 + #define USB_DEVICE_ID_TC5UH 0x0309 171 171 172 172 #define USB_VENDOR_ID_EZKEY 0x0518 173 173 #define USB_DEVICE_ID_BTC_8193 0x0002
+19 -6
drivers/hid/hid-samsung.c
··· 39 39 * 40 40 * 3. 135 byte report descriptor 41 41 * Report #4 has an array field with logical range 0..17 instead of 1..14. 42 + * 43 + * 4. 171 byte report descriptor 44 + * Report #3 has an array field with logical range 0..1 instead of 1..3. 42 45 */ 46 + static inline void samsung_dev_trace(struct hid_device *hdev, 47 + unsigned int rsize) 48 + { 49 + dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " 50 + "descriptor\n", rsize); 51 + } 52 + 43 53 static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc, 44 54 unsigned int rsize) 45 55 { ··· 57 47 rdesc[177] == 0x75 && rdesc[178] == 0x30 && 58 48 rdesc[179] == 0x95 && rdesc[180] == 0x01 && 59 49 rdesc[182] == 0x40) { 60 - dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " 61 - "descriptor\n", 184); 50 + samsung_dev_trace(hdev, 184); 62 51 rdesc[176] = 0xff; 63 52 rdesc[178] = 0x08; 64 53 rdesc[180] = 0x06; ··· 65 56 } else 66 57 if (rsize == 203 && rdesc[192] == 0x15 && rdesc[193] == 0x0 && 67 58 rdesc[194] == 0x25 && rdesc[195] == 0x12) { 68 - dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " 69 - "descriptor\n", 203); 59 + samsung_dev_trace(hdev, 203); 70 60 rdesc[193] = 0x1; 71 61 rdesc[195] = 0xf; 72 62 } else 73 63 if (rsize == 135 && rdesc[124] == 0x15 && rdesc[125] == 0x0 && 74 64 rdesc[126] == 0x25 && rdesc[127] == 0x11) { 75 - dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " 76 - "descriptor\n", 135); 65 + samsung_dev_trace(hdev, 135); 77 66 rdesc[125] = 0x1; 78 67 rdesc[127] = 0xe; 68 + } else 69 + if (rsize == 171 && rdesc[160] == 0x15 && rdesc[161] == 0x0 && 70 + rdesc[162] == 0x25 && rdesc[163] == 0x01) { 71 + samsung_dev_trace(hdev, 171); 72 + rdesc[161] = 0x1; 73 + rdesc[163] = 0x3; 79 74 } 80 75 } 81 76
+4
drivers/hid/hid-wacom.c
··· 142 142 wdata->butstate = rw; 143 143 input_report_key(input, BTN_0, rw & 0x02); 144 144 input_report_key(input, BTN_1, rw & 0x01); 145 + input_report_key(input, BTN_TOOL_FINGER, 0xf0); 145 146 input_event(input, EV_MSC, MSC_SERIAL, 0xf0); 146 147 input_sync(input); 147 148 } ··· 197 196 /* Pad */ 198 197 input->evbit[0] |= BIT(EV_MSC); 199 198 input->mscbit[0] |= BIT(MSC_SERIAL); 199 + set_bit(BTN_0, input->keybit); 200 + set_bit(BTN_1, input->keybit); 201 + set_bit(BTN_TOOL_FINGER, input->keybit); 200 202 201 203 /* Distance, rubber and mouse */ 202 204 input->absbit[0] |= BIT(ABS_DISTANCE);