On Tue, Nov 29, 2011 at 02:43:35PM -0500, Daniel Manrique wrote: > On 11-11-29 12:53 PM, Dmitry Torokhov wrote: > > Hi Daniel, > > > > On Tue, Nov 29, 2011 at 11:26:19AM -0500, Daniel Manrique wrote: > >> Hello, > >> > >> I apologize for sending this bug report directly; with the kernel.org bugtracker > >> down I was told this was the best option for the time being. If this is not > >> correct, could you please let me know of a good place to submit this bug report? > >> > >> I have several Dell laptops with Synaptics touchpads, particularly a group of > >> Vostro V13 systems. On these, after a suspend/resume cycle, the touchpad > >> (Synaptics) is unresponsive; a workaround is to rmmod psmouse; modprobe psmouse. > >> > >> This was first reported on kernel 2.6.38, although I think the issue has been > >> present from as early as 2.6.32. I verified it for sure with Ubuntu 2.6.38 > >> kernels, 3.0.0 kernels, and a 3.2.0 kernel from the development release, as well > >> as a "mainline" 3.1.0-rc10 kernel. > >> > >> Since this problem was seen on Ubuntu, it's filed on the Launchpad bug tracker. > >> The first report I can find is this one: > >> > >> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/715267 > >> > >> This includes a series of log messages I don't see on my systems. I then filed > >> this other bug: > >> > >> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/879650 > >> > >> The last one contains specific information from one of my systems (a Vostro V13). > >> > >> I'd really appreciate any help or guidance on how to solve this problem. If you > >> need me to collect any information or run any tests on these machines, please > >> don't hesitate to ask, these systems are primarily used for testing. > >> > > > > Please do: > > > > - enable i8042 debug (echo 1 > /sys/module/i8042/parameters/debug) > > - rmmod psmouse; > > - suspend/resume; > > - collect dmesg; > > - suspend/resume; > > - collect dmesg again > > > > and we'll have to try and find what we do differently. > > > > Thanks. > > > > Hi Dmitry, > > Thanks so much for the quick reply! > > I just ran the tests you requested with some extra steps which I hope won't > confuse things. Here's the sequence I followed: > > - Enabled i8042 debug > - sudo rmmod psmouse. Touchpad of course becomes unresponsive. > - sudo pm-suspend > - Wake the machine by pressing power > - At this point touchpad is unresponsive. > - Collected dmesg-1.txt > - sudo pm-suspend > - wake the machine by pressing power > - At this point touchpad is still unresponsive. > - Collected dmesg-2.txt > - sudo modprobe psmouse. Touchpad begins responding. > - Collected dmesg-3.txt > - sudo pm-suspend > - wake the machine by pressing power > - At this point touchpad is again unresponsive. > - Collected dmesg-4.txt > > To avoid attaching largish files to this email, I put the logs on a > publically-accessible http server at: > http://people.canonical.com/~roadmr/lp715267/. Please let me know if you prefer > something else. > Hmm, it just does not want to admit that it is synaptics after reset. Does the patch below help any? -- Dmitry Input: synaptics - delay in reconnect From: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> Signed-off-by: Dmitry Torokhov <dtor@xxxxxxx> --- drivers/input/mouse/synaptics.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c index 06c9ee5..fa127ec 100644 --- a/drivers/input/mouse/synaptics.c +++ b/drivers/input/mouse/synaptics.c @@ -1279,6 +1279,7 @@ static void synaptics_disconnect(struct psmouse *psmouse) psmouse->private = NULL; } +#include <linux/delay.h> static int synaptics_reconnect(struct psmouse *psmouse) { struct synaptics_data *priv = psmouse->private; @@ -1288,6 +1289,17 @@ static int synaptics_reconnect(struct psmouse *psmouse) do { psmouse_reset(psmouse); + if (retry) { + unsigned char param[2]; + + psmouse_info(psmouse, "Delaying after reset.\n"); + ssleep(1); + + psmouse_info(psmouse, "Querying ID.\n"); + param[0] = 0xa5; + error = ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_GETID); + psmouse_info(psmouse, "ID: %x %x (%d).\n", param[0], param[1], error); + } error = synaptics_detect(psmouse, 0); } while (error && ++retry < 3); -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html