[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1412329392-5580-4-git-send-email-pali.rohar@gmail.com>
Date: Fri, 3 Oct 2014 11:43:12 +0200
From: Pali Rohár <pali.rohar@...il.com>
To: Dmitry Torokhov <dmitry.torokhov@...il.com>,
Hans de Goede <hdegoede@...hat.com>,
Yunkang Tang <yunkang.tang@...alps.com>,
Tommy Will <tommywill2011@...il.com>
Cc: linux-input@...r.kernel.org, linux-kernel@...r.kernel.org,
Pali Rohár <pali.rohar@...il.com>
Subject: [PATCH 3/3] input: alps: Reset mouse and ALPS driver immediately after first invalid packet
For unknown reasons linux psmouse alps driver sometimes receive totally invalid
packet sequences on Dell Latitude laptops. According to ALPS HW engineers these
invalid packets do not come from ALPS devices. So it looks like bug in BIOS and
EC incorrectly split keyboard and touchpad PS/2 data when laptops are under
heavy loads (big I/O together with powersave governor, running on battery).
There are sequences of invalid packets (which are dropeed) and some sequences
which look like valid. But these valid packets cause random trackstick button
pressing, random cursor moving/jumping and in these condition it is not possible
to use ALPS device (trackstick+touchpad).
To prevent random button press and random cursor jumps immediately reset ALPS
device after first invalid packet. This will cause that touchpad and trackstick
will not respond for one or two seconds and it better then random cursor jumps.
Signed-off-by: Pali Rohár <pali.rohar@...il.com>
Tested-by: Pali Rohár <pali.rohar@...il.com>
---
drivers/input/mouse/alps.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index b1f44d4..d2b144f 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -2399,6 +2399,10 @@ int alps_init(struct psmouse *psmouse)
/* We are having trouble resyncing ALPS touchpads so disable it for now */
psmouse->resync_time = 0;
+ /* Reset immediately after bad packet. When bad packet arrives then
+ cursor pointer jumps and trackstick buttons are randomly pressed. */
+ psmouse->resetafter = 1;
+
return 0;
init_fail:
--
1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists