[15/67] Input: synaptics - fix touchpad not working after S2R on Vostro V13
From: Greg KH <gregkh@suse.de>
Date: 2012-01-03 22:36:45
Also in:
lkml
3.0-stable review patch. If anyone has any objections, please let me know. ------------------ From: Dmitry Torokhov <dmitry.torokhov@gmail.com> commit 8521478f67e95ada4e87970c7b41e504c724b2cf upstream. 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: Daniel Manrique <redacted> Tested-by: Daniel Manrique <redacted> Signed-off-by: Dmitry Torokhov <redacted> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- drivers/input/mouse/synaptics.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c@@ -24,6 +24,7 @@ */ #include <linux/module.h> +#include <linux/delay.h> #include <linux/dmi.h> #include <linux/input/mt.h> #include <linux/serio.h>
@@ -760,6 +761,16 @@ static int synaptics_reconnect(struct ps do { 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); } while (error && ++retry < 3);