Message ID | 1414884310-19842-3-git-send-email-pali.rohar@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sun, Nov 02, 2014 at 12:25:08AM +0100, Pali Rohár wrote: > On some Dell Latitude laptops ALPS device or Dell EC send one invalid byte in > 6 bytes ALPS packet. In this case psmouse driver enter out of sync state. It > looks like that all other bytes in packets are valid and also device working > properly. So there is no need to do full device reset, just need to wait > for byte which match condition for first byte (start of packet). Because ALPS > packets are bigger (6 or 8 bytes) default limit is small. > > This patch increase number of invalid bytes to size of 2 ALPS packets which > psmouse driver can drop before do full reset. > > Resetting ALPS devices take some time and when doing reset on some Dell laptops > touchpad, trackstick and also keyboard do not respond. So it is better to do it > only if really necessary. > > Signed-off-by: Pali Rohár <pali.rohar@gmail.com> > Tested-by: Pali Rohár <pali.rohar@gmail.com> > Cc: stable@vger.kernel.org Applied, thank you. > --- > drivers/input/mouse/alps.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c > index a772745..7c47e97 100644 > --- a/drivers/input/mouse/alps.c > +++ b/drivers/input/mouse/alps.c > @@ -2391,6 +2391,9 @@ int alps_init(struct psmouse *psmouse) > /* We are having trouble resyncing ALPS touchpads so disable it for now */ > psmouse->resync_time = 0; > > + /* Allow 2 invalid packets without resetting device */ > + psmouse->resetafter = psmouse->pktsize * 2; > + > return 0; > > init_fail: > -- > 1.7.9.5 >
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c index a772745..7c47e97 100644 --- a/drivers/input/mouse/alps.c +++ b/drivers/input/mouse/alps.c @@ -2391,6 +2391,9 @@ int alps_init(struct psmouse *psmouse) /* We are having trouble resyncing ALPS touchpads so disable it for now */ psmouse->resync_time = 0; + /* Allow 2 invalid packets without resetting device */ + psmouse->resetafter = psmouse->pktsize * 2; + return 0; init_fail: