On Fri, Sep 28, 2018 at 2:33 PM Julian Sax <jsbc@xxxxxx> wrote: > > Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> writes: > > > On Thu, Sep 27, 2018 at 3:13 AM Benjamin Tissoires > > <benjamin.tissoires@xxxxxxxxxx> wrote: > >> > >> On Wed, Sep 19, 2018 at 11:47 AM Julian Sax <jsbc@xxxxxx> wrote: > >> > > >> > A particular touchpad (SIPODEV SP1064) refuses to supply the HID > >> > descriptors. This patch provides the framework for overriding these > >> > descriptors based on DMI data. It also includes the descriptors for > >> > said touchpad, which were extracted by listening to the traffic of the > >> > windows filter driver, as well as the DMI data for the laptops known > >> > to use this device. > >> > > >> > Relevant Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1526312 > >> > > >> > Cc: Hans de Goede <hdegoede@xxxxxxxxxx> > >> > Reported-and-tested-by: ahormann@xxxxxxx > >> > Reported-and-tested-by: Bruno Jesus <bruno.fl.jesus@xxxxxxxxx> > >> > Reported-and-tested-by: Dietrich <enaut.w@xxxxxxxxxxxxxx> > >> > Reported-and-tested-by: kloxdami@xxxxxxxxx > >> > Signed-off-by: Julian Sax <jsbc@xxxxxx> > >> > --- > >> > >> Looks good AFAICT: > >> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx> > > > > So wait, looking at the patch description, Windows is able to fetch > > the descriptors from the device. Why can't we do what Windows does? It > > seems that we do not recognize bcdVersion value, what else is > > different? If we adjust for that, can we fetch the rest of descriptors > > from the device? I think there was another controller with weird > > descriptor layout (Cypress)... > > > > Thanks. > > In this case, on Windows a filter driver sneaks in between the device > and the HID layer and provides the descriptors. When you compare the i2c > traffic on Windows before and after the filter driver, in the > device-facing communication the descriptor requests does not appear, > while on the HID-facing side, they do. If you try to read directly from > the standard locations of the HID and report descriptor, you only get > the report starting from that offset. This was probably done to make the > actual chip as cheap as possible by not storing the descriptors there > and not implementing real address handling at all. I see. Thank you for the clarification. -- Dmitry