HID: Add driver fixing Glorious PC Gaming Race mouse report descriptor
authorSamuel Čavoj <sammko@sammserver.com>
Fri, 13 Mar 2020 02:12:38 +0000 (03:12 +0100)
committerJiri Kosina <jkosina@suse.cz>
Wed, 18 Mar 2020 12:36:21 +0000 (13:36 +0100)
commit77a36a3ab4ff17fad23831192e3694a3c5a1750d
tree5f181a064cac936f529ef976b67573de2fd173ba
parentac309e7744bee222df6de0122facaf2d9706fa70
HID: Add driver fixing Glorious PC Gaming Race mouse report descriptor

The Glorious Model O mice (and also at least the Model O-, which is
driver-wise the same mouse) have a bug in the descriptor of HID
Report with ID 2. This report is used for Consumer Control buttons,
which can be mapped using the provided Windows only software.

Here is an excerpt from the original descriptor:

  INPUT(2)[INPUT]
    Field(0)
      Flags( Constant Variable Absolute )
    Field(1)
      Flags( Constant Variable Absolute )
    Field(2)
      Flags( Constant Variable Absolute )

The issue is the Constant flag specified on all 3 fields, which
causes the hid driver to ignore changes in these fields and
essentialy causes the buttons to not work at all. The submitted driver
patches the descriptor to end up with the following:

  INPUT(2)[INPUT]
    Field(0)
      Flags( Variable Relative )
    Field(1)
      Flags( Variable Relative )
    Field(2)
      Flags( Variable Relative )

The Constant bit is reset and the Relative bit has been set in
order to prevent repeat events when holding down the button.

Additionally, the device name is changed from the hardware-reported
"SINOWEALTH Wired Gaming Mouse" to "Glorious Model O" or "Glorious
Model D".

Signed-off-by: Samuel Čavoj <sammko@sammserver.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/Kconfig
drivers/hid/Makefile
drivers/hid/hid-glorious.c [new file with mode: 0644]
drivers/hid/hid-ids.h