On Fri, 1 Oct 2010 00:03:09 +0200 Antonio Ospite <ospite@xxxxxxxxxxxxxxxxx> wrote: > > Alan I am still talking about GET_FEATURE here, not SET, the question > here is what value the first byte (buf[0]) is expected to have in a > buffer returned from a GET. If it has to be the report ID then I > suspect my device is changing it behind our backs, maybe a failsafe > measure like the following could do? > > diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c > index df80532..83e1b48 100644 > --- a/drivers/hid/usbhid/hid-core.c > +++ b/drivers/hid/usbhid/hid-core.c > @@ -875,6 +875,9 @@ static int usbhid_output_raw_report(struct hid_device *hid, __u8 *buf, size_t co Actually I meant to change the code in usbhid_get_raw_report() instead, like the following: diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index df80532..c6648d3 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -825,6 +825,11 @@ static int usbhid_get_raw_report(struct hid_device *hid, interface->desc.bInterfaceNumber, buf, count, USB_CTRL_SET_TIMEOUT); + /* restore report number into buf[0], + * some non conformant device might be mangling it + */ + buf[0] = report_number; + /* count also the report id */ if (ret > 0 && skipped_report_id) ret++; But again, I haven't checked yet what the specs say about byte 0 in the returned buffer. Regards, Antonio -- Antonio Ospite http://ao2.it PGP public key ID: 0x4553B001 A: Because it messes up the order in which people normally read text. See http://en.wikipedia.org/wiki/Posting_style Q: Why is top-posting such a bad thing?
Attachment:
pgpESiTlGVPme.pgp
Description: PGP signature