Message ID | 20150820225633.GA12900@localhost (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Aug 20, 2015 at 3:56 PM, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote: > On Fri, Aug 21, 2015 at 12:24:59AM +0200, Gabor Balla wrote: >> Hi Dmitry, >> >> On Thu, Aug 20, 2015 at 11:35 PM, Dmitry Torokhov >> <dmitry.torokhov@gmail.com> wrote: >> > On Thu, Aug 20, 2015 at 10:50:27PM +0200, Gabor Balla wrote: >> [...] >> >> 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 >> [...] >> >> A quick fix follows: >> [...] >> > >> > 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? >> >> If I'm not mistaken, the function of bit 2 depends on the state of W mode rather >> than absolute vs relative mode. From page 40 of the PDF: >> >> "If the Wmode bit is not set (0), then Gesture is reported and bit 2 refers to >> DisGest. (..) When this bit is 1, the Relative mode mouse packet reports the >> true physical button states, and the Absolute mode packet’s Gesture bit always >> reports as zero." >> >> So it still has a meaning in absolute mode, when Wmode is disabled. >> I've tried the patch, it works, but I don't believe it's correct. > > Yes, you are right, the bot does have meaning on Absolute mode, however > we want to give option to enable gestures only when in relative mode; > I've adjusted the description accordingly. Ah, wait, not quite still. So we actually do want to disable gestures when in Absolute mode (non extended). Although frankly I do not think we'll ever see pre 4.0 Synaptics device in a wild. Thanks.
Hi Dmitry, On Fri, Aug 21, 2015 at 1:01 AM, Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote: > On Thu, Aug 20, 2015 at 3:56 PM, Dmitry Torokhov > <dmitry.torokhov@gmail.com> wrote: >> On Fri, Aug 21, 2015 at 12:24:59AM +0200, Gabor Balla wrote: >>> Hi Dmitry, >>> >>> On Thu, Aug 20, 2015 at 11:35 PM, Dmitry Torokhov >>> <dmitry.torokhov@gmail.com> wrote: >>> > On Thu, Aug 20, 2015 at 10:50:27PM +0200, Gabor Balla wrote: [...] > Ah, wait, not quite still. So we actually do want to disable gestures > when in Absolute mode (non extended). Although frankly I do not think > we'll ever see pre 4.0 Synaptics device in a wild. Also notice there is a function called synaptics_set_disable_gesture that can change that bit regardless of current mode. Thanks (also for your patience), 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
Hi Gabor, On Fri, Aug 21, 2015 at 01:05:46AM +0200, Gabor Balla wrote: > Hi Dmitry, > > On Fri, Aug 21, 2015 at 1:01 AM, Dmitry Torokhov > <dmitry.torokhov@gmail.com> wrote: > > On Thu, Aug 20, 2015 at 3:56 PM, Dmitry Torokhov > > <dmitry.torokhov@gmail.com> wrote: > >> On Fri, Aug 21, 2015 at 12:24:59AM +0200, Gabor Balla wrote: > >>> Hi Dmitry, > >>> > >>> On Thu, Aug 20, 2015 at 11:35 PM, Dmitry Torokhov > >>> <dmitry.torokhov@gmail.com> wrote: > >>> > On Thu, Aug 20, 2015 at 10:50:27PM +0200, Gabor Balla wrote: > [...] > > Ah, wait, not quite still. So we actually do want to disable gestures > > when in Absolute mode (non extended). Although frankly I do not think > > we'll ever see pre 4.0 Synaptics device in a wild. > > Also notice there is a function called synaptics_set_disable_gesture that can > change that bit regardless of current mode. That attribute is only created when touchpad is used in relative mode, so should be OK. Thanks.
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c index 28daca1..298f65d 100644 --- a/drivers/input/mouse/synaptics.c +++ b/drivers/input/mouse/synaptics.c @@ -519,14 +519,17 @@ static int synaptics_set_mode(struct psmouse *psmouse) struct synaptics_data *priv = psmouse->private; priv->mode = 0; - if (priv->absolute_mode) + + if (priv->absolute_mode) { priv->mode |= SYN_BIT_ABSOLUTE_MODE; - if (priv->disable_gesture) + if (SYN_CAP_EXTENDED(priv->capabilities)) + priv->mode |= SYN_BIT_W_MODE; + } 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; if (synaptics_mode_cmd(psmouse, priv->mode)) return -1; @@ -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; /*