On Wed, Feb 11, 2009 at 01:17:02PM +0100, Jiri Kosina wrote: > On Wed, 11 Feb 2009, Matthew Garrett wrote: > > > https://lists.ubuntu.com/archives/kernel-team/2009-February/004335.html > > be related? It seems quite plausible that we want to do this on all > > hardware. > > Actually I have also hit this on several machines. Dmitry, I would propose > to take Andy's patch (maybe even for 2.6.29?), it would save us a lot of > bugreports in the future. Yes I was about to push this upstream. I was supprised we had not seen any other reports of it, seems that we have all been seeing it and not realised. Including the patch inline for those who prefer to avoid links. -apw >From cce152ae74a5084c7e3dffc25032d43908a5fa77 Mon Sep 17 00:00:00 2001 From: Andy Whitcroft <apw@xxxxxxxxxxxxx> Date: Mon, 2 Feb 2009 16:32:25 +0000 Subject: [PATCH 1/1] psmouse/synaptics: ensure we reset the device on resume When resuming from suspend newer Synaptics touchpads do not recover correctly. Analysis of the resume sequence as applied in Linux was compared to that of other operating systems. This indicated that the other OSs were resetting the mouse before attempting to detect it (for all Synaptics touchpads, old and new). Applying this same modification fixes these newer Synaptics touchpads and brings the driver into line with common OS reset behaviour. This patch adds this reset by default providing a module option to restore the previous non-reset behaviour: psmouse.synaptics_resume_reset=N Also a message is emmitted on resume hinting as to how to fix a broken touchpad. Signed-off-by: Andy Whitcroft <apw@xxxxxxxxxxxxx> --- drivers/input/mouse/synaptics.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c index d349c4a..5b01c14 100644 --- a/drivers/input/mouse/synaptics.c +++ b/drivers/input/mouse/synaptics.c @@ -60,11 +60,21 @@ static int synaptics_mode_cmd(struct psmouse *psmouse, unsigned char mode) return 0; } +static int synaptics_resume_reset = 1; +module_param(synaptics_resume_reset, bool, 0); +MODULE_PARM_DESC(synaptics_resume_reset, + "Enable reset on resume for Synaptics"); + int synaptics_detect(struct psmouse *psmouse, int set_properties) { struct ps2dev *ps2dev = &psmouse->ps2dev; unsigned char param[4]; + if (synaptics_resume_reset) { + printk(KERN_CRIT "WARNING: synaptics was reset on resume, see synaptics_resume_reset if you have trouble on resume\n"); + psmouse_reset(psmouse); + } + param[0] = 0; ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES); -- 1.6.1.2.419.g0d87e -- 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