fd3f2c749eeeddb26894ca2f2d38378c4066b961
[oweals/openwrt.git] /
1 From 16c1e20b50e121f836f434bb6c22c73e2f51d29f 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 730/806] 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 @@ -222,6 +222,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 @@ -1190,6 +1193,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 @@ -43,6 +43,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 @@ -174,6 +175,7 @@ static const struct hid_device_id hid_qu
57         { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SIRIUS_BATTERY_FREE_TABLET), HID_QUIRK_MULTI_INPUT },
58         { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
59         { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | 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  };