Commit 8521478f authored by Dmitry Torokhov's avatar Dmitry Torokhov

Input: synaptics - fix touchpad not working after S2R on Vostro V13

Synaptics touchpads on several Dell laptops, particularly Vostro V13
systems, may not respond properly to PS/2 commands and queries immediately
after resuming from suspend to RAM. This leads to unresponsive touchpad
after suspend/resume cycle.

Adding a 1-second delay after resetting the device allows touchpad to
finish initializing (calibrating?) and start reacting properly.
Reported-by: default avatarDaniel Manrique <daniel.manrique@canonical.com>
Tested-by: default avatarDaniel Manrique <daniel.manrique@canonical.com>
Cc: stable@kernel.org
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 3a7f8fb1
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
*/ */
#include <linux/module.h> #include <linux/module.h>
#include <linux/delay.h>
#include <linux/dmi.h> #include <linux/dmi.h>
#include <linux/input/mt.h> #include <linux/input/mt.h>
#include <linux/serio.h> #include <linux/serio.h>
...@@ -1220,6 +1221,16 @@ static int synaptics_reconnect(struct psmouse *psmouse) ...@@ -1220,6 +1221,16 @@ static int synaptics_reconnect(struct psmouse *psmouse)
do { do {
psmouse_reset(psmouse); psmouse_reset(psmouse);
if (retry) {
/*
* On some boxes, right after resuming, the touchpad
* needs some time to finish initializing (I assume
* it needs time to calibrate) and start responding
* to Synaptics-specific queries, so let's wait a
* bit.
*/
ssleep(1);
}
error = synaptics_detect(psmouse, 0); error = synaptics_detect(psmouse, 0);
} while (error && ++retry < 3); } while (error && ++retry < 3);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment