mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
HID: uhid: report to user-space whether reports are numbered
This makes UHID_START include a "dev_flags" field that describes details of the hid-device in the kernel. The first flags we introduce describe whether a given report-type uses numbered reports. This is useful for transport layers that force report-numbers and therefore might have to prefix kernel-provided HID-messages with the report-number. Currently, only HoG needs this and the spec only talks about "global report numbers". That is, it's a global boolean not a per-type boolean. However, given the quirks we already have in kernel-space, a per-type value seems much more appropriate. Signed-off-by: David Herrmann <[email protected]> Signed-off-by: Jiri Kosina <[email protected]>
This commit is contained in:
parent
11c2215530
commit
c2b2f16c5c
2 changed files with 31 additions and 1 deletions
|
|
@ -92,8 +92,27 @@ static int uhid_queue_event(struct uhid_device *uhid, __u32 event)
|
|||
static int uhid_hid_start(struct hid_device *hid)
|
||||
{
|
||||
struct uhid_device *uhid = hid->driver_data;
|
||||
struct uhid_event *ev;
|
||||
unsigned long flags;
|
||||
|
||||
return uhid_queue_event(uhid, UHID_START);
|
||||
ev = kzalloc(sizeof(*ev), GFP_KERNEL);
|
||||
if (!ev)
|
||||
return -ENOMEM;
|
||||
|
||||
ev->type = UHID_START;
|
||||
|
||||
if (hid->report_enum[HID_FEATURE_REPORT].numbered)
|
||||
ev->u.start.dev_flags |= UHID_DEV_NUMBERED_FEATURE_REPORTS;
|
||||
if (hid->report_enum[HID_OUTPUT_REPORT].numbered)
|
||||
ev->u.start.dev_flags |= UHID_DEV_NUMBERED_OUTPUT_REPORTS;
|
||||
if (hid->report_enum[HID_INPUT_REPORT].numbered)
|
||||
ev->u.start.dev_flags |= UHID_DEV_NUMBERED_INPUT_REPORTS;
|
||||
|
||||
spin_lock_irqsave(&uhid->qlock, flags);
|
||||
uhid_queue(uhid, ev);
|
||||
spin_unlock_irqrestore(&uhid->qlock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void uhid_hid_stop(struct hid_device *hid)
|
||||
|
|
|
|||
Loading…
Reference in a new issue