On Wed, 13 May 2020, Scott Shumate wrote:
Hi Roderick,
The official DS3 has a Report Count(19) instead of Report Count(13) in the
exact same offset. I have no idea what the silicon vendor for these dongles
was thinking but it's suspicious that the official count of 19 (0x13) turned
into 13 (0xd) in the knock-off. It makes you wonder if the engineers confused
the decimal/hex numbers.
As buggy as all of these third-party devices are, I'm afraid relying on the
HID parser to get it right is only going to worse over time. I do like your
idea of having each device register themselves. It would be nice to have each
device provide a callback to decode its own report rather than handle a bunch
of special conditions and quirks in a unified report decoding function. The
drawback of course is that its going to be a little more effort to maintain.
I've added Cc: stable and Fixes: tag, and applied.
Thanks,
--
Jiri Kosina
SUSE Labs