aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/mouse/alps.c
diff options
context:
space:
mode:
authorPali Rohár <pali.rohar@gmail.com>2014-11-08 15:58:57 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2014-11-10 01:58:38 -0500
commit9d720b34c0a432639252f63012e18b0507f5b432 (patch)
treeb20b89c810e4f345ec3ee11f727522d9b029ac98 /drivers/input/mouse/alps.c
parent4ab8f7f320f91f279c3f06a9795cfea5c972888a (diff)
Input: alps - allow up to 2 invalid packets without resetting device
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> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Cc: stable@vger.kernel.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/mouse/alps.c')
-rw-r--r--drivers/input/mouse/alps.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index da18c977e7b8..433638e7e4af 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -2395,6 +2395,9 @@ int alps_init(struct psmouse *psmouse)
2395 /* We are having trouble resyncing ALPS touchpads so disable it for now */ 2395 /* We are having trouble resyncing ALPS touchpads so disable it for now */
2396 psmouse->resync_time = 0; 2396 psmouse->resync_time = 0;
2397 2397
2398 /* Allow 2 invalid packets without resetting device */
2399 psmouse->resetafter = psmouse->pktsize * 2;
2400
2398 return 0; 2401 return 0;
2399 2402
2400init_fail: 2403init_fail: