On Wed, 29 Jul 2020, Frank Yang wrote: > The Varmilo VA104M Keyboard (04b4:07b1, reported as Varmilo Z104M) > exposes media control hotkeys as a USB HID consumer control device, > but these keys do not work in the current (5.8-rc1) kernel due to > the incorrect HID report descriptor. Fix the problem by modifying > the internal HID report descriptor. > > More specifically, the keyboard report descriptor specifies the > logical boundary as 572~10754 (0x023c ~ 0x2a02) while the usage > boundary is specified as 0~10754 (0x00 ~ 0x2a02). This results in an > incorrect interpretation of input reports, causing inputs to be ignored. > By setting the Logical Minimum to zero, we align the logical boundary > with the Usage ID boundary. > > Some notes: > > * There seem to be multiple variants of the VA104M keyboard. This > patch specifically targets 04b4:07b1 variant. > > * The device works out-of-the-box on Windows platform with the generic > consumer control device driver (hidserv.inf). This suggests that > Windows either ignores the Logical Minimum/Logical Maximum or > interprets the Usage ID assignment differently from the linux > implementation; Maybe there are other devices out there that only > works on Windows due to this problem? > > Signed-off-by: Frank Yang <puilp0502@xxxxxxxxx> > --- > drivers/hid/Kconfig | 6 ++++ > drivers/hid/Makefile | 1 + > drivers/hid/hid-ids.h | 2 ++ > drivers/hid/hid-varmilo.c | 58 +++++++++++++++++++++++++++++++++++++++ Hi Frank, thanks for the patch. Given the fact that the device presents itself with CYPRESS VID (0x04b4, 'officially' assigned to cypress), can we avoid creating extra driver, and rather extend hid-cypress.c with this quirk, please? Thanks, -- Jiri Kosina SUSE Labs