diff options
-rw-r--r-- | drivers/hid/hid-apple.c | 7 | ||||
-rw-r--r-- | drivers/hid/hid-core.c | 4 | ||||
-rw-r--r-- | drivers/hid/hid-ids.h | 6 | ||||
-rw-r--r-- | drivers/hid/hid-samsung.c | 25 | ||||
-rw-r--r-- | drivers/hid/hid-wacom.c | 4 |
5 files changed, 40 insertions, 6 deletions
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c index 4b96e7a898cf..5b4d66dc1a05 100644 --- a/drivers/hid/hid-apple.c +++ b/drivers/hid/hid-apple.c | |||
@@ -431,6 +431,13 @@ static const struct hid_device_id apple_devices[] = { | |||
431 | .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, | 431 | .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD }, |
432 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS), | 432 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS), |
433 | .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS }, | 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 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY), | 441 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY), |
435 | .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, | 442 | .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, |
436 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY), | 443 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY), |
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 80792d38d25c..eabe5f87c6c1 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c | |||
@@ -1285,6 +1285,9 @@ static const struct hid_device_id hid_blacklist[] = { | |||
1285 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) }, | 1285 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) }, |
1286 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) }, | 1286 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) }, |
1287 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) }, | 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 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, | 1291 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, |
1289 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, | 1292 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, |
1290 | { HID_USB_DEVICE(USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM) }, | 1293 | { HID_USB_DEVICE(USB_VENDOR_ID_BELKIN, USB_DEVICE_ID_FLIP_KVM) }, |
@@ -1553,6 +1556,7 @@ static const struct hid_device_id hid_ignore_list[] = { | |||
1553 | { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE) }, | 1556 | { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE) }, |
1554 | { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20) }, | 1557 | { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20) }, |
1555 | { HID_USB_DEVICE(USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5) }, | 1558 | { HID_USB_DEVICE(USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5) }, |
1559 | { HID_USB_DEVICE(USB_VENDOR_ID_ETT, USB_DEVICE_ID_TC5UH) }, | ||
1556 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0001) }, | 1560 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0001) }, |
1557 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0002) }, | 1561 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0002) }, |
1558 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0003) }, | 1562 | { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0003) }, |
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 3839340e293a..010368e649ed 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h | |||
@@ -88,6 +88,9 @@ | |||
88 | #define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI 0x0236 | 88 | #define USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI 0x0236 |
89 | #define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO 0x0237 | 89 | #define USB_DEVICE_ID_APPLE_WELLSPRING3_ISO 0x0237 |
90 | #define USB_DEVICE_ID_APPLE_WELLSPRING3_JIS 0x0238 | 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 | #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a | 94 | #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a |
92 | #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b | 95 | #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b |
93 | #define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241 | 96 | #define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241 |
@@ -166,6 +169,9 @@ | |||
166 | #define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f | 169 | #define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f |
167 | #define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100 | 170 | #define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100 |
168 | 171 | ||
172 | #define USB_VENDOR_ID_ETT 0x0664 | ||
173 | #define USB_DEVICE_ID_TC5UH 0x0309 | ||
174 | |||
169 | #define USB_VENDOR_ID_EZKEY 0x0518 | 175 | #define USB_VENDOR_ID_EZKEY 0x0518 |
170 | #define USB_DEVICE_ID_BTC_8193 0x0002 | 176 | #define USB_DEVICE_ID_BTC_8193 0x0002 |
171 | 177 | ||
diff --git a/drivers/hid/hid-samsung.c b/drivers/hid/hid-samsung.c index 5b222eed0692..510dd1340597 100644 --- a/drivers/hid/hid-samsung.c +++ b/drivers/hid/hid-samsung.c | |||
@@ -39,7 +39,17 @@ | |||
39 | * | 39 | * |
40 | * 3. 135 byte report descriptor | 40 | * 3. 135 byte report descriptor |
41 | * Report #4 has an array field with logical range 0..17 instead of 1..14. | 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 | static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc, | 53 | static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc, |
44 | unsigned int rsize) | 54 | unsigned int rsize) |
45 | { | 55 | { |
@@ -47,8 +57,7 @@ static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc, | |||
47 | rdesc[177] == 0x75 && rdesc[178] == 0x30 && | 57 | rdesc[177] == 0x75 && rdesc[178] == 0x30 && |
48 | rdesc[179] == 0x95 && rdesc[180] == 0x01 && | 58 | rdesc[179] == 0x95 && rdesc[180] == 0x01 && |
49 | rdesc[182] == 0x40) { | 59 | rdesc[182] == 0x40) { |
50 | dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " | 60 | samsung_dev_trace(hdev, 184); |
51 | "descriptor\n", 184); | ||
52 | rdesc[176] = 0xff; | 61 | rdesc[176] = 0xff; |
53 | rdesc[178] = 0x08; | 62 | rdesc[178] = 0x08; |
54 | rdesc[180] = 0x06; | 63 | rdesc[180] = 0x06; |
@@ -56,17 +65,21 @@ static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc, | |||
56 | } else | 65 | } else |
57 | if (rsize == 203 && rdesc[192] == 0x15 && rdesc[193] == 0x0 && | 66 | if (rsize == 203 && rdesc[192] == 0x15 && rdesc[193] == 0x0 && |
58 | rdesc[194] == 0x25 && rdesc[195] == 0x12) { | 67 | rdesc[194] == 0x25 && rdesc[195] == 0x12) { |
59 | dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " | 68 | samsung_dev_trace(hdev, 203); |
60 | "descriptor\n", 203); | ||
61 | rdesc[193] = 0x1; | 69 | rdesc[193] = 0x1; |
62 | rdesc[195] = 0xf; | 70 | rdesc[195] = 0xf; |
63 | } else | 71 | } else |
64 | if (rsize == 135 && rdesc[124] == 0x15 && rdesc[125] == 0x0 && | 72 | if (rsize == 135 && rdesc[124] == 0x15 && rdesc[125] == 0x0 && |
65 | rdesc[126] == 0x25 && rdesc[127] == 0x11) { | 73 | rdesc[126] == 0x25 && rdesc[127] == 0x11) { |
66 | dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " | 74 | samsung_dev_trace(hdev, 135); |
67 | "descriptor\n", 135); | ||
68 | rdesc[125] = 0x1; | 75 | rdesc[125] = 0x1; |
69 | rdesc[127] = 0xe; | 76 | rdesc[127] = 0xe; |
77 | } else | ||
78 | if (rsize == 171 && rdesc[160] == 0x15 && rdesc[161] == 0x0 && | ||
79 | rdesc[162] == 0x25 && rdesc[163] == 0x01) { | ||
80 | samsung_dev_trace(hdev, 171); | ||
81 | rdesc[161] = 0x1; | ||
82 | rdesc[163] = 0x3; | ||
70 | } | 83 | } |
71 | } | 84 | } |
72 | 85 | ||
diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c index 747542172242..12dcda529201 100644 --- a/drivers/hid/hid-wacom.c +++ b/drivers/hid/hid-wacom.c | |||
@@ -142,6 +142,7 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report, | |||
142 | wdata->butstate = rw; | 142 | wdata->butstate = rw; |
143 | input_report_key(input, BTN_0, rw & 0x02); | 143 | input_report_key(input, BTN_0, rw & 0x02); |
144 | input_report_key(input, BTN_1, rw & 0x01); | 144 | input_report_key(input, BTN_1, rw & 0x01); |
145 | input_report_key(input, BTN_TOOL_FINGER, 0xf0); | ||
145 | input_event(input, EV_MSC, MSC_SERIAL, 0xf0); | 146 | input_event(input, EV_MSC, MSC_SERIAL, 0xf0); |
146 | input_sync(input); | 147 | input_sync(input); |
147 | } | 148 | } |
@@ -196,6 +197,9 @@ static int wacom_probe(struct hid_device *hdev, | |||
196 | /* Pad */ | 197 | /* Pad */ |
197 | input->evbit[0] |= BIT(EV_MSC); | 198 | input->evbit[0] |= BIT(EV_MSC); |
198 | input->mscbit[0] |= BIT(MSC_SERIAL); | 199 | input->mscbit[0] |= BIT(MSC_SERIAL); |
200 | set_bit(BTN_0, input->keybit); | ||
201 | set_bit(BTN_1, input->keybit); | ||
202 | set_bit(BTN_TOOL_FINGER, input->keybit); | ||
199 | 203 | ||
200 | /* Distance, rubber and mouse */ | 204 | /* Distance, rubber and mouse */ |
201 | input->absbit[0] |= BIT(ABS_DISTANCE); | 205 | input->absbit[0] |= BIT(ABS_DISTANCE); |