Skip to content

Commit

Permalink
HID: uclogic: Handle virtual frame reports
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Nikolai Kondrashov authored and Jiri Kosina committed Feb 16, 2022
1 parent fea53b9 commit 044fa81
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions drivers/hid/hid-uclogic-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;
Expand Down

0 comments on commit 044fa81

Please sign in to comment.