Re: Bug: touchpad unresponsive after resume from S3 (psmouse driver)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux