Re: hidp_output_raw_report, HID_OUTPUT_REPORT and Sixaxis
From: pascal@pabr.org <hidden>
Date: 2010-12-01 22:41:15
Antonio Ospite wrote:
The non-standard USB behavior made me think that the patch proposed could not be an actual fix but another non-standard sixaxis quirk;
That sounds right; I hadn't noticed hid-sony.c overriding
usbhid_output_raw_report(). Maybe it should simply override
hidp_output_raw_report() as well.
And maybe the default hidp_output_raw_report() should be
patched to behave like the default usbhid_output_raw_report(),
for the sake of consistency.
I am not sure you will find a final answer in the HID spec, but
the default usbhid_output_raw_report() certainly makes sense:
Send OUTPUT reports as interrupt messages because this is more
efficient e.g. for streaming reports to force-feedback devices;
and use the control channel only when the spec leaves no other
choice, i.e. for other report types.
Of course there is also the option of adding a specific function
in struct hid_device for transactions on the control channel.
That would be a good opportunity to enforce section 7.9.1
("no more than one outstanding request on the control channel")
and to implement callbacks for handshake results; but currently
nobody needs these features AFAIK.
Pascal