[REGRESSION] wrong coord from Thinkpad TrackPoint since 6.2 kernel

From: Takashi Iwai
Date: Wed Mar 29 2023 - 04:18:20 EST


Hi,

we've received a bug report about Thinkpad TrackPoint (ALPS DualPoint
Stick) on 6.2 kernel:
https://bugzilla.opensuse.org/show_bug.cgi?id=1209805

The device reports the wrong values as the movements, e.g. sometimes a
value such as 255, 254 or -255 is returned while usually it should be
a smaller value like -1 or 2.

The evtest on 6.2.x kernel shows the wrong values like:

Event: time 1680037542.898747, type 2 (EV_REL), code 0 (REL_X), value 255
Event: time 1680037542.898747, -------------- SYN_REPORT ------------
Event: time 1680037543.145196, type 2 (EV_REL), code 0 (REL_X), value 1
Event: time 1680037543.145196, -------------- SYN_REPORT ------------
Event: time 1680037543.175087, type 2 (EV_REL), code 1 (REL_Y), value -255
Event: time 1680037543.175087, -------------- SYN_REPORT ------------
Event: time 1680037543.185421, type 2 (EV_REL), code 0 (REL_X), value 1
Event: time 1680037543.185421, type 2 (EV_REL), code 1 (REL_Y), value -255
Event: time 1680037543.185421, -------------- SYN_REPORT ------------

while 6.1.x kernel shows the correct values like:

Event: time 1680037386.318058, type 2 (EV_REL), code 0 (REL_X), value -1
Event: time 1680037386.318058, type 2 (EV_REL), code 1 (REL_Y), value -1
Event: time 1680037386.318058, -------------- SYN_REPORT ------------
Event: time 1680037386.328087, type 2 (EV_REL), code 0 (REL_X), value -1
Event: time 1680037386.328087, type 2 (EV_REL), code 1 (REL_Y), value -1
Event: time 1680037386.328087, -------------- SYN_REPORT ------------
Event: time 1680037386.338046, type 2 (EV_REL), code 0 (REL_X), value -1
Event: time 1680037386.338046, type 2 (EV_REL), code 1 (REL_Y), value -2
Event: time 1680037386.338046, -------------- SYN_REPORT ------------

I couldn't see any relevant changes in alps.c between those versions,
so this is likely a breakage in a lower layer.

Could you guys take a look?


Thanks!

Takashi