Message ID | 20220929082119.22112-2-nyanpasu256@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | Input: Fix incorrectly halved touchpad range on ELAN v3 touchpads | expand |
Hi Eirin, Thank you for your patch. On Thu, Sep 29, 2022 at 01:21, Eirin Nya <nyanpasu256@gmail.com> wrote: > elantech_data::y_max is copied from elantech_device_info::y_max, and > neither is mutated after initialization. So remove the redundant > variable to prevent future bugs when updating y_max. > > Signed-off-by: Eirin Nya <nyanpasu256@gmail.com> > --- > drivers/input/mouse/elantech.c | 17 ++++++++--------- > drivers/input/mouse/elantech.h | 1 - > 2 files changed, 8 insertions(+), 10 deletions(-) Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> > > diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c > index ece97f8c6a..79e31611fc 100644 > --- a/drivers/input/mouse/elantech.c > +++ b/drivers/input/mouse/elantech.c > @@ -360,7 +360,7 @@ static void elantech_report_absolute_v1(struct psmouse *psmouse) > input_report_abs(dev, ABS_X, > ((packet[1] & 0x0c) << 6) | packet[2]); > input_report_abs(dev, ABS_Y, > - etd->y_max - (((packet[1] & 0x03) << 8) | packet[3])); > + etd->info.y_max - (((packet[1] & 0x03) << 8) | packet[3])); > } > > input_report_key(dev, BTN_TOOL_FINGER, fingers == 1); > @@ -435,7 +435,7 @@ static void elantech_report_absolute_v2(struct psmouse *psmouse) > * byte 4: . . . . y11 y10 y9 y8 > * byte 5: y7 y6 y5 y4 y3 y2 y1 y0 > */ > - y1 = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); > + y1 = etd->info.y_max - (((packet[4] & 0x0f) << 8) | packet[5]); > > pres = (packet[1] & 0xf0) | ((packet[4] & 0xf0) >> 4); > width = ((packet[0] & 0x30) >> 2) | ((packet[3] & 0x30) >> 4); > @@ -450,7 +450,7 @@ static void elantech_report_absolute_v2(struct psmouse *psmouse) > */ > x1 = (((packet[0] & 0x10) << 4) | packet[1]) << 2; > /* byte 2: ay7 ay6 ay5 ay4 ay3 ay2 ay1 ay0 */ > - y1 = etd->y_max - > + y1 = etd->info.y_max - > ((((packet[0] & 0x20) << 3) | packet[2]) << 2); > /* > * byte 3: . . by8 bx8 . . . . > @@ -458,7 +458,7 @@ static void elantech_report_absolute_v2(struct psmouse *psmouse) > */ > x2 = (((packet[3] & 0x10) << 4) | packet[4]) << 2; > /* byte 5: by7 by8 by5 by4 by3 by2 by1 by0 */ > - y2 = etd->y_max - > + y2 = etd->info.y_max - > ((((packet[3] & 0x20) << 3) | packet[5]) << 2); > > /* Unknown so just report sensible values */ > @@ -579,7 +579,7 @@ static void elantech_report_absolute_v3(struct psmouse *psmouse, > * byte 4: . . . . y11 y10 y9 y8 > * byte 5: y7 y6 y5 y4 y3 y2 y1 y0 > */ > - y1 = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); > + y1 = etd->info.y_max - (((packet[4] & 0x0f) << 8) | packet[5]); > break; > > case 2: > @@ -593,7 +593,7 @@ static void elantech_report_absolute_v3(struct psmouse *psmouse, > * byte 4: . . . . ay11 ay10 ay9 ay8 > * byte 5: ay7 ay6 ay5 ay4 ay3 ay2 ay1 ay0 > */ > - etd->mt[0].y = etd->y_max - > + etd->mt[0].y = etd->info.y_max - > (((packet[4] & 0x0f) << 8) | packet[5]); > /* > * wait for next packet > @@ -605,7 +605,7 @@ static void elantech_report_absolute_v3(struct psmouse *psmouse, > x1 = etd->mt[0].x; > y1 = etd->mt[0].y; > x2 = ((packet[1] & 0x0f) << 8) | packet[2]; > - y2 = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); > + y2 = etd->info.y_max - (((packet[4] & 0x0f) << 8) | packet[5]); > break; > } > > @@ -681,7 +681,7 @@ static void process_packet_head_v4(struct psmouse *psmouse) > return; > > etd->mt[id].x = ((packet[1] & 0x0f) << 8) | packet[2]; > - etd->mt[id].y = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); > + etd->mt[id].y = etd->info.y_max - (((packet[4] & 0x0f) << 8) | packet[5]); > pres = (packet[1] & 0xf0) | ((packet[4] & 0xf0) >> 4); > traces = (packet[0] & 0xf0) >> 4; > > @@ -1253,7 +1253,6 @@ static int elantech_set_input_params(struct psmouse *psmouse) > input_abs_set_res(dev, ABS_MT_POSITION_Y, info->y_res); > } > > - etd->y_max = y_max; > etd->width = width; > > return 0; > diff --git a/drivers/input/mouse/elantech.h b/drivers/input/mouse/elantech.h > index 571e6ca11d..1ec004f72d 100644 > --- a/drivers/input/mouse/elantech.h > +++ b/drivers/input/mouse/elantech.h > @@ -180,7 +180,6 @@ struct elantech_data { > unsigned char reg_25; > unsigned char reg_26; > unsigned int single_finger_reports; > - unsigned int y_max; > unsigned int width; > struct finger_pos mt[ETP_MAX_FINGERS]; > unsigned char parity[256]; > -- > 2.37.3
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c index ece97f8c6a..79e31611fc 100644 --- a/drivers/input/mouse/elantech.c +++ b/drivers/input/mouse/elantech.c @@ -360,7 +360,7 @@ static void elantech_report_absolute_v1(struct psmouse *psmouse) input_report_abs(dev, ABS_X, ((packet[1] & 0x0c) << 6) | packet[2]); input_report_abs(dev, ABS_Y, - etd->y_max - (((packet[1] & 0x03) << 8) | packet[3])); + etd->info.y_max - (((packet[1] & 0x03) << 8) | packet[3])); } input_report_key(dev, BTN_TOOL_FINGER, fingers == 1); @@ -435,7 +435,7 @@ static void elantech_report_absolute_v2(struct psmouse *psmouse) * byte 4: . . . . y11 y10 y9 y8 * byte 5: y7 y6 y5 y4 y3 y2 y1 y0 */ - y1 = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); + y1 = etd->info.y_max - (((packet[4] & 0x0f) << 8) | packet[5]); pres = (packet[1] & 0xf0) | ((packet[4] & 0xf0) >> 4); width = ((packet[0] & 0x30) >> 2) | ((packet[3] & 0x30) >> 4); @@ -450,7 +450,7 @@ static void elantech_report_absolute_v2(struct psmouse *psmouse) */ x1 = (((packet[0] & 0x10) << 4) | packet[1]) << 2; /* byte 2: ay7 ay6 ay5 ay4 ay3 ay2 ay1 ay0 */ - y1 = etd->y_max - + y1 = etd->info.y_max - ((((packet[0] & 0x20) << 3) | packet[2]) << 2); /* * byte 3: . . by8 bx8 . . . . @@ -458,7 +458,7 @@ static void elantech_report_absolute_v2(struct psmouse *psmouse) */ x2 = (((packet[3] & 0x10) << 4) | packet[4]) << 2; /* byte 5: by7 by8 by5 by4 by3 by2 by1 by0 */ - y2 = etd->y_max - + y2 = etd->info.y_max - ((((packet[3] & 0x20) << 3) | packet[5]) << 2); /* Unknown so just report sensible values */ @@ -579,7 +579,7 @@ static void elantech_report_absolute_v3(struct psmouse *psmouse, * byte 4: . . . . y11 y10 y9 y8 * byte 5: y7 y6 y5 y4 y3 y2 y1 y0 */ - y1 = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); + y1 = etd->info.y_max - (((packet[4] & 0x0f) << 8) | packet[5]); break; case 2: @@ -593,7 +593,7 @@ static void elantech_report_absolute_v3(struct psmouse *psmouse, * byte 4: . . . . ay11 ay10 ay9 ay8 * byte 5: ay7 ay6 ay5 ay4 ay3 ay2 ay1 ay0 */ - etd->mt[0].y = etd->y_max - + etd->mt[0].y = etd->info.y_max - (((packet[4] & 0x0f) << 8) | packet[5]); /* * wait for next packet @@ -605,7 +605,7 @@ static void elantech_report_absolute_v3(struct psmouse *psmouse, x1 = etd->mt[0].x; y1 = etd->mt[0].y; x2 = ((packet[1] & 0x0f) << 8) | packet[2]; - y2 = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); + y2 = etd->info.y_max - (((packet[4] & 0x0f) << 8) | packet[5]); break; } @@ -681,7 +681,7 @@ static void process_packet_head_v4(struct psmouse *psmouse) return; etd->mt[id].x = ((packet[1] & 0x0f) << 8) | packet[2]; - etd->mt[id].y = etd->y_max - (((packet[4] & 0x0f) << 8) | packet[5]); + etd->mt[id].y = etd->info.y_max - (((packet[4] & 0x0f) << 8) | packet[5]); pres = (packet[1] & 0xf0) | ((packet[4] & 0xf0) >> 4); traces = (packet[0] & 0xf0) >> 4; @@ -1253,7 +1253,6 @@ static int elantech_set_input_params(struct psmouse *psmouse) input_abs_set_res(dev, ABS_MT_POSITION_Y, info->y_res); } - etd->y_max = y_max; etd->width = width; return 0; diff --git a/drivers/input/mouse/elantech.h b/drivers/input/mouse/elantech.h index 571e6ca11d..1ec004f72d 100644 --- a/drivers/input/mouse/elantech.h +++ b/drivers/input/mouse/elantech.h @@ -180,7 +180,6 @@ struct elantech_data { unsigned char reg_25; unsigned char reg_26; unsigned int single_finger_reports; - unsigned int y_max; unsigned int width; struct finger_pos mt[ETP_MAX_FINGERS]; unsigned char parity[256];
elantech_data::y_max is copied from elantech_device_info::y_max, and neither is mutated after initialization. So remove the redundant variable to prevent future bugs when updating y_max. Signed-off-by: Eirin Nya <nyanpasu256@gmail.com> --- drivers/input/mouse/elantech.c | 17 ++++++++--------- drivers/input/mouse/elantech.h | 1 - 2 files changed, 8 insertions(+), 10 deletions(-)