How to handle Elantech touchpad that occasionally sends boguscoordinates?

From: Arjan Opmeer
Date: Wed Mar 04 2009 - 16:56:16 EST



Recently a user complained that when using the Elantech driver the mouse
pointer would occasionally jump some distance away, or that when scrolling
the scrolled page would suddenly jump back a bit.

It turns out that when starting a new touch action on this particular model
the touchpad does not reliably emit the new coordinates but can repeat one
or two of the coordinates of the last release point. This misreporting can
last several motion packets depending on the number of fingers that are
touching.

We came up with a workaround that basically discards mouse packets as long
as the number of fingers is increasing. Like so:


if (fingers > old_fingers) {
discard packet
}

With this fix in place the user no longer suffers from the jumpy mouse
cursor or the jumpy scrolling. He reports no impact on the responsiveness of
the touchpad.

My question now is whether this is the right approach to fix this issue? Is
such a workaround acceptable and should it live in the kernel? Can or should
this problem be better solved in the Xorg Synaptics driver?

Comments please! :)


Arjan
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/