From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Gabor Balla <gaborwho@gmail.com>
Cc: linux-input@vger.kernel.org,
Benjamin Tissoires <benjamin.tissoires@gmail.com>,
Stephen Chandler Paul <thatslyude@gmail.com>,
Nick Bowler <nbowler@draconx.ca>,
Andrew Duggan <andrew.duggan@gmail.com>
Subject: Re: PROBLEM: Missing events on thinkpad trackpoint buttons
Date: Thu, 20 Aug 2015 14:35:26 -0700 [thread overview]
Message-ID: <20150820213526.GA10980@localhost> (raw)
In-Reply-To: <CAMmwwr-7fQcMa=DiiCO+GU7R1ZLgh6o2SD40q+gTPmcu=A_8uA@mail.gmail.com>
Hi Gabor,
On Thu, Aug 20, 2015 at 10:50:27PM +0200, Gabor Balla wrote:
> 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:
>
> 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)
It looks like the patch "direction" is reverted. Also, the presence of
extended capabilities is not the indication that gesture mode should not
be used: in relative mode bit 2 disables gesture reporting, in absolute
mode it enables Extended W-mode.
Does the patch below also work for you?
Thanks.
--
Dmitry
Input: synaptics - fix handling of disabling gesture mode
Bit 2 of the mode byte only disables gesture reporting when touchpad is in
relative mode, when in absolute mode it activates the so-called Extended
W-mode that confuses driver and causes missing button presses on some
Thinkpads (x250, T450s).
Reported-by: Nick Bowler <nbowler@draconx.ca>
Suggested-by: Gabor Balla <gaborwho@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
drivers/input/mouse/synaptics.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index 28daca1..97c5dde 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -519,12 +519,15 @@ static int synaptics_set_mode(struct psmouse *psmouse)
struct synaptics_data *priv = psmouse->private;
priv->mode = 0;
+
if (priv->absolute_mode)
priv->mode |= SYN_BIT_ABSOLUTE_MODE;
- if (priv->disable_gesture)
+ else if (priv->disable_gesture)
priv->mode |= SYN_BIT_DISABLE_GESTURE;
+
if (psmouse->rate >= 80)
priv->mode |= SYN_BIT_HIGH_RATE;
+
if (SYN_CAP_EXTENDED(priv->capabilities))
priv->mode |= SYN_BIT_W_MODE;
@@ -1482,7 +1485,7 @@ static int __synaptics_init(struct psmouse *psmouse, bool absolute_mode)
}
priv->absolute_mode = absolute_mode;
- if (SYN_ID_DISGEST_SUPPORTED(priv->identity))
+ if (!absolute_mode && SYN_ID_DISGEST_SUPPORTED(priv->identity))
priv->disable_gesture = true;
/*
next prev parent reply other threads:[~2015-08-20 21:35 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-20 20:50 PROBLEM: Missing events on thinkpad trackpoint buttons Gabor Balla
2015-08-20 21:35 ` Dmitry Torokhov [this message]
2015-08-20 22:24 ` Gabor Balla
2015-08-20 22:42 ` Gabor Balla
2015-08-20 22:56 ` Dmitry Torokhov
2015-08-20 23:01 ` Dmitry Torokhov
2015-08-20 23:05 ` Gabor Balla
2015-08-20 23:08 ` Dmitry Torokhov
2015-08-20 23:13 ` Dmitry Torokhov
2015-08-20 23:35 ` Gabor Balla
2015-08-21 0:06 ` Dmitry Torokhov
2015-08-24 17:57 ` Dmitry Torokhov
2015-08-24 23:44 ` Nick Bowler
[not found] ` <CAN+gG=H88uVbRun=Vs1r1b8jM=wpnC1285BquFpDsh8HQdr07Q@mail.gmail.com>
2015-09-27 12:14 ` Benjamin Tissoires
2015-09-28 22:52 ` Dmitry Torokhov
2015-09-29 0:22 ` Nick Bowler
2015-09-29 0:26 ` Dmitry Torokhov
-- strict thread matches above, loose matches on Subject: below --
2015-08-18 2:31 Nick Bowler
2015-08-18 19:06 ` Benjamin Tissoires
2015-08-19 13:52 ` Benjamin Tissoires
2015-08-19 14:10 ` Nick Bowler
2015-08-19 14:12 ` Benjamin Tissoires
2015-08-19 21:27 ` Dmitry Torokhov
2015-08-19 21:33 ` Stephen Chandler Paul
2015-08-19 21:34 ` Benjamin Tissoires
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150820213526.GA10980@localhost \
--to=dmitry.torokhov@gmail.com \
--cc=andrew.duggan@gmail.com \
--cc=benjamin.tissoires@gmail.com \
--cc=gaborwho@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=nbowler@draconx.ca \
--cc=thatslyude@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox