950-0169-hid-usb-Add-device-quirks-for-Freeway-Airmouse-T3-an.patch 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. From 5226bda44e9da513da7836b3481bf4e7ce36954f Mon Sep 17 00:00:00 2001
  2. From: Jonathan Bell <[email protected]>
  3. Date: Thu, 1 Aug 2019 16:41:20 +0100
  4. Subject: [PATCH 0169/1085] hid: usb: Add device quirks for Freeway Airmouse T3
  5. and MX3
  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. As a workaround, use HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE to mask
  12. feeding the extra wheel events to the input subsystem.
  13. See: https://github.com/raspberrypi/firmware/issues/1189
  14. Signed-off-by: Jonathan Bell <[email protected]>
  15. ---
  16. drivers/hid/hid-ids.h | 6 ++++++
  17. drivers/hid/hid-quirks.c | 2 ++
  18. 2 files changed, 8 insertions(+)
  19. --- a/drivers/hid/hid-ids.h
  20. +++ b/drivers/hid/hid-ids.h
  21. @@ -248,6 +248,9 @@
  22. #define USB_VENDOR_ID_BAANTO 0x2453
  23. #define USB_DEVICE_ID_BAANTO_MT_190W2 0x0100
  24. +#define USB_VENDOR_ID_BEKEN 0x25a7
  25. +#define USB_DEVICE_ID_AIRMOUSE_T3 0x2402
  26. +
  27. #define USB_VENDOR_ID_BELKIN 0x050d
  28. #define USB_DEVICE_ID_FLIP_KVM 0x3201
  29. @@ -1449,6 +1452,9 @@
  30. #define USB_VENDOR_ID_XIAOMI 0x2717
  31. #define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014
  32. +#define USB_VENDOR_ID_XENTA 0x1d57
  33. +#define USB_DEVICE_ID_AIRMOUSE_MX3 0xad03
  34. +
  35. #define USB_VENDOR_ID_XIN_MO 0x16c0
  36. #define USB_DEVICE_ID_XIN_MO_DUAL_ARCADE 0x05e1
  37. #define USB_DEVICE_ID_THT_2P_ARCADE 0x75e1
  38. --- a/drivers/hid/hid-quirks.c
  39. +++ b/drivers/hid/hid-quirks.c
  40. @@ -44,6 +44,7 @@ static const struct hid_device_id hid_qu
  41. { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682), HID_QUIRK_NOGET },
  42. { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS692), HID_QUIRK_NOGET },
  43. { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUIRK_NOGET },
  44. + { HID_USB_DEVICE(USB_VENDOR_ID_BEKEN, USB_DEVICE_ID_AIRMOUSE_T3), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
  45. { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
  46. { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
  47. { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
  48. @@ -213,6 +214,7 @@ static const struct hid_device_id hid_qu
  49. { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
  50. { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
  51. { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET },
  52. + { HID_USB_DEVICE(USB_VENDOR_ID_XENTA, USB_DEVICE_ID_AIRMOUSE_MX3), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
  53. { 0 }
  54. };