]> git.ipfire.org Git - thirdparty/openwrt.git/blob
1c13a65b2194f29f46ff2558fd6f7c3da8bc531b
[thirdparty/openwrt.git] /
1 From b3578c5bc6c75ea98aebe249813a58fed6afa9e3 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 and MX3
5
6 These wireless mouse/keyboard combo remote control devices specify
7 multiple "wheel" events in their report descriptors. The wheel events
8 are incorrectly defined and apparently map to accelerometer data, leading
9 to spurious mouse scroll events being generated at an extreme rate when
10 the device is moved.
11
12 As a workaround, use HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE to mask
13 feeding the extra wheel events to the input subsystem.
14
15 See: https://github.com/raspberrypi/firmware/issues/1189
16
17 Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
18 ---
19 drivers/hid/hid-ids.h | 6 ++++++
20 drivers/hid/hid-quirks.c | 2 ++
21 2 files changed, 8 insertions(+)
22
23 --- a/drivers/hid/hid-ids.h
24 +++ b/drivers/hid/hid-ids.h
25 @@ -254,6 +254,9 @@
26 #define USB_VENDOR_ID_BAANTO 0x2453
27 #define USB_DEVICE_ID_BAANTO_MT_190W2 0x0100
28
29 +#define USB_VENDOR_ID_BEKEN 0x25a7
30 +#define USB_DEVICE_ID_AIRMOUSE_T3 0x2402
31 +
32 #define USB_VENDOR_ID_BELKIN 0x050d
33 #define USB_DEVICE_ID_FLIP_KVM 0x3201
34
35 @@ -1460,6 +1463,9 @@
36 #define USB_VENDOR_ID_XIAOMI 0x2717
37 #define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014
38
39 +#define USB_VENDOR_ID_XENTA 0x1d57
40 +#define USB_DEVICE_ID_AIRMOUSE_MX3 0xad03
41 +
42 #define USB_VENDOR_ID_XIN_MO 0x16c0
43 #define USB_DEVICE_ID_XIN_MO_DUAL_ARCADE 0x05e1
44 #define USB_DEVICE_ID_THT_2P_ARCADE 0x75e1
45 --- a/drivers/hid/hid-quirks.c
46 +++ b/drivers/hid/hid-quirks.c
47 @@ -44,6 +44,7 @@ static const struct hid_device_id hid_qu
48 { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682), HID_QUIRK_NOGET },
49 { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS692), HID_QUIRK_NOGET },
50 { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUIRK_NOGET },
51 + { HID_USB_DEVICE(USB_VENDOR_ID_BEKEN, USB_DEVICE_ID_AIRMOUSE_T3), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
52 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
53 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
54 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
55 @@ -211,6 +212,7 @@ static const struct hid_device_id hid_qu
56 { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
57 { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
58 { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET },
59 + { HID_USB_DEVICE(USB_VENDOR_ID_XENTA, USB_DEVICE_ID_AIRMOUSE_MX3), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
60
61 { 0 }
62 };