diff options
author | Nikolai Kondrashov <spbnick@gmail.com> | 2022-02-10 22:04:37 +0300 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2022-02-16 18:41:54 +0300 |
commit | 044fa8162dc10686fcffa5501d4ca3947df047ca (patch) | |
tree | ebf73f77608584cbf011057516ea29f2679b5442 /drivers/hid/hid-uclogic-core.c | |
parent | fea53b9f159cd039e86aebde5cbbfd37765257fb (diff) | |
download | linux-044fa8162dc10686fcffa5501d4ca3947df047ca.tar.xz |
HID: uclogic: Handle virtual frame reports
Explicitly change report ID to virtual ID and handle virtual frame
reports as real for consistency.
Signed-off-by: Nikolai Kondrashov <spbnick@gmail.com>
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-uclogic-core.c')
-rw-r--r-- | drivers/hid/hid-uclogic-core.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/hid/hid-uclogic-core.c b/drivers/hid/hid-uclogic-core.c index 8aac3f7a9cda..73d79d149869 100644 --- a/drivers/hid/hid-uclogic-core.c +++ b/drivers/hid/hid-uclogic-core.c @@ -365,6 +365,7 @@ static int uclogic_raw_event(struct hid_device *hdev, struct hid_report *report, u8 *data, int size) { + unsigned int report_id = report->id; struct uclogic_drvdata *drvdata = hid_get_drvdata(hdev); struct uclogic_params *params = &drvdata->params; @@ -374,20 +375,20 @@ static int uclogic_raw_event(struct hid_device *hdev, /* Tweak pen reports, if necessary */ if (!params->pen_unused && - (report->id == params->pen.id) && + (report_id == params->pen.id) && (size >= 2)) { /* If it's the "virtual" frame controls report */ if (params->frame.id != 0 && data[1] & params->pen_frame_flag) { /* Change to virtual frame controls report ID */ - data[0] = params->frame.id; - return 0; + report_id = data[0] = params->frame.id; + } else { + return uclogic_raw_event_pen(drvdata, data, size); } - return uclogic_raw_event_pen(drvdata, data, size); } /* Tweak frame control reports, if necessary */ - if (report->id == params->frame.id) + if (report_id == params->frame.id) return uclogic_raw_event_frame(drvdata, data, size); return 0; |