HID: uHID: implement .raw_request
uHID is missing a SET_REPORT protocol implementation, but as .hid_get_raw_report() as been removed from struct hid_device, there were no means to access GET_REPORT in uhid. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Reviewed-by: David Herrmann <dh.herrmann@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
289a716217
commit
706daeffaf
|
@ -250,6 +250,21 @@ static int uhid_hid_output_report(struct hid_device *hid, __u8 *buf,
|
||||||
return uhid_hid_output_raw(hid, buf, count, HID_OUTPUT_REPORT);
|
return uhid_hid_output_raw(hid, buf, count, HID_OUTPUT_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int uhid_raw_request(struct hid_device *hid, unsigned char reportnum,
|
||||||
|
__u8 *buf, size_t len, unsigned char rtype,
|
||||||
|
int reqtype)
|
||||||
|
{
|
||||||
|
switch (reqtype) {
|
||||||
|
case HID_REQ_GET_REPORT:
|
||||||
|
return uhid_hid_get_raw(hid, reportnum, buf, len, rtype);
|
||||||
|
case HID_REQ_SET_REPORT:
|
||||||
|
/* TODO: implement proper SET_REPORT functionality */
|
||||||
|
return -ENOSYS;
|
||||||
|
default:
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static struct hid_ll_driver uhid_hid_driver = {
|
static struct hid_ll_driver uhid_hid_driver = {
|
||||||
.start = uhid_hid_start,
|
.start = uhid_hid_start,
|
||||||
.stop = uhid_hid_stop,
|
.stop = uhid_hid_stop,
|
||||||
|
@ -257,6 +272,7 @@ static struct hid_ll_driver uhid_hid_driver = {
|
||||||
.close = uhid_hid_close,
|
.close = uhid_hid_close,
|
||||||
.parse = uhid_hid_parse,
|
.parse = uhid_hid_parse,
|
||||||
.output_report = uhid_hid_output_report,
|
.output_report = uhid_hid_output_report,
|
||||||
|
.raw_request = uhid_raw_request,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
|
|
Loading…
Reference in New Issue