diff mbox

PROBLEM: Missing events on thinkpad trackpoint buttons

Message ID CAMmwwr-7fQcMa=DiiCO+GU7R1ZLgh6o2SD40q+gTPmcu=A_8uA@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Gabor Balla Aug. 20, 2015, 8:50 p.m. UTC
Hi,

I could also reproduce this issue using a T450s, but have probably found the
issue behind it.

At some point a new PS/2 mode was introduced by Synaptics, called EWmode. This
can be enabled by setting bit 2 of the mode byte. But previously this bit was
used for 'Disable Gesture', whatever that stands for, and it was reused for
selecting EWmode. Now if plain Wmode is selected, with bit 0 of the mode byte,
than disable gesture is on by default and bit 2 selects EWmode instead.

Reference:
http://www.synaptics.com/sites/default/files/511-000275-01_RevB.pdf

The current implementation of the driver doesn't take EWmode into account, and
enables it, when setting both Wmode and what it thinks to be the disable
gesture bit. It is probably selecting EWmode that causes the glitch.

A quick fix follows:


Regards,
Gabor
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff -ru a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
--- a/drivers/input/mouse/synaptics.c2015-08-20 22:25:05.261546729 +0200
+++ b/drivers/input/mouse/synaptics.c2015-08-20 22:21:28.560038539 +0200
@@ -521,7 +521,7 @@ 
 priv->mode = 0;
 if (priv->absolute_mode)
 priv->mode |= SYN_BIT_ABSOLUTE_MODE;
-if (priv->disable_gesture && !SYN_CAP_EXTENDED(priv->capabilities))
+if (priv->disable_gesture)
 priv->mode |= SYN_BIT_DISABLE_GESTURE;
 if (psmouse->rate >= 80)
 priv->mode |= SYN_BIT_HIGH_RATE;