26a54c22c9a08dae88ec9d71243b417ebddea758
[openwrt/staging/stintel.git] /
1 From 8f4720ca2ed61fbaf2a3039b510e276d06d6a2fb Mon Sep 17 00:00:00 2001
2 From: Jonathan Bell <jonathan@raspberrypi.org>
3 Date: Thu, 1 Aug 2019 16:41:20 +0100
4 Subject: [PATCH] hid: usb: Add device quirks for Freeway Airmouse T3
5 and MX3
6
7 These wireless mouse/keyboard combo remote control devices specify
8 multiple "wheel" events in their report descriptors. The wheel events
9 are incorrectly defined and apparently map to accelerometer data, leading
10 to spurious mouse scroll events being generated at an extreme rate when
11 the device is moved.
12
13 As a workaround, use HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE to mask
14 feeding the extra wheel events to the input subsystem.
15
16 See: https://github.com/raspberrypi/firmware/issues/1189
17
18 Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
19 ---
20 drivers/hid/hid-ids.h | 6 ++++++
21 drivers/hid/hid-quirks.c | 2 ++
22 2 files changed, 8 insertions(+)
23
24 --- a/drivers/hid/hid-ids.h
25 +++ b/drivers/hid/hid-ids.h
26 @@ -223,6 +223,9 @@
27 #define USB_VENDOR_ID_BAANTO 0x2453
28 #define USB_DEVICE_ID_BAANTO_MT_190W2 0x0100
29
30 +#define USB_VENDOR_ID_BEKEN 0x25a7
31 +#define USB_DEVICE_ID_AIRMOUSE_T3 0x2402
32 +
33 #define USB_VENDOR_ID_BELKIN 0x050d
34 #define USB_DEVICE_ID_FLIP_KVM 0x3201
35
36 @@ -1234,6 +1237,9 @@
37 #define USB_VENDOR_ID_XAT 0x2505
38 #define USB_DEVICE_ID_XAT_CSR 0x0220
39
40 +#define USB_VENDOR_ID_XENTA 0x1d57
41 +#define USB_DEVICE_ID_AIRMOUSE_MX3 0xad03
42 +
43 #define USB_VENDOR_ID_XIN_MO 0x16c0
44 #define USB_DEVICE_ID_XIN_MO_DUAL_ARCADE 0x05e1
45 #define USB_DEVICE_ID_THT_2P_ARCADE 0x75e1
46 --- a/drivers/hid/hid-quirks.c
47 +++ b/drivers/hid/hid-quirks.c
48 @@ -41,6 +41,7 @@ static const struct hid_device_id hid_qu
49 { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682), HID_QUIRK_NOGET },
50 { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS692), HID_QUIRK_NOGET },
51 { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUIRK_NOGET },
52 + { HID_USB_DEVICE(USB_VENDOR_ID_BEKEN, USB_DEVICE_ID_AIRMOUSE_T3), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
53 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
54 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
55 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
56 @@ -178,6 +179,7 @@ static const struct hid_device_id hid_qu
57 { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
58 { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
59 { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
60 + { HID_USB_DEVICE(USB_VENDOR_ID_XENTA, USB_DEVICE_ID_AIRMOUSE_MX3), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
61
62 { 0 }
63 };