Skip to content

Commit

Permalink
HID: uclogic: Always shift touch reports to zero
Browse files Browse the repository at this point in the history
Always decrement touch report values to have the range start with zero,
regardless if flipped or not. This fixes the future non-flipped touch
strip reports.

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>
Nikolai Kondrashov authored and Jiri Kosina committed May 11, 2022
1 parent caf7e93 commit fbc08b4
Showing 2 changed files with 9 additions and 8 deletions.
15 changes: 8 additions & 7 deletions drivers/hid/hid-uclogic-core.c
Original file line number Diff line number Diff line change
@@ -386,15 +386,16 @@ static int uclogic_raw_event_frame(
}

/* If need to, and can, transform the touch ring reports */
if (frame->touch_byte > 0 && frame->touch_byte < size &&
frame->touch_flip_at != 0) {
if (frame->touch_byte > 0 && frame->touch_byte < size) {
__s8 value = data[frame->touch_byte];
if (value != 0) {
value = frame->touch_flip_at - value;
if (value < 0)
value = frame->touch_max + value;

data[frame->touch_byte] = value;
if (value != 0) {
if (frame->touch_flip_at != 0) {
value = frame->touch_flip_at - value;
if (value <= 0)
value = frame->touch_max + value;
}
data[frame->touch_byte] = value - 1;
}
}

2 changes: 1 addition & 1 deletion drivers/hid/hid-uclogic-params.c
Original file line number Diff line number Diff line change
@@ -889,7 +889,7 @@ static int uclogic_params_huion_init(struct uclogic_params *params,
UCLOGIC_RDESC_V2_FRAME_TOUCH_DEV_ID_BYTE;
p.frame_list[1].touch_byte = 5;
p.frame_list[1].touch_max = 12;
p.frame_list[1].touch_flip_at = 6;
p.frame_list[1].touch_flip_at = 7;

/* Create v2 frame dial parameters */
rc = uclogic_params_frame_init_with_desc(

0 comments on commit fbc08b4

Please sign in to comment.