linux/drivers/input/mouse
Eric Miao eeb065582a Input: synaptics - fix sync lost after resume on some laptops
In summary, the symptom is intermittent key events lost after resume
on some machines with synaptics touchpad (seems this is synaptics _only_),
and key events loss is due to serio port reconnect after psmouse sync lost.
Removing psmouse and inserting it back during the suspend/resume process
is able to work around the issue, so the difference between psmouse_connect()
and psmouse_reconnect() is the key to the root cause of this problem.

After comparing the two different paths, synaptics driver has its own
implementation of synaptics_reconnect(), and the missing psmouse_probe()
seems significant, the patch below added psmouse_probe() to the reconnect
process, and has been verified many times that the issue could not be reliably
reproduced.

There are two PS/2 commands in psmouse_probe():

  1. PSMOUSE_CMD_GETID
  2. PSMOUSE_CMD_RESET_DIS

Only the PSMOUSE_CMD_GETID seems to be significant. The
PSMOUSE_CMD_RESET_DIS is irrelevant to this issue after trying
several times.  So we have only implemented this patch to issue
the PSMOUSE_CMD_GETID so far.

Tested-by: Daniel Manrique <daniel.manrique@canonical.com>
Signed-off-by: James M Leddy <james.leddy@canonical.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2013-06-04 09:33:16 -07:00
..
alps.c Input: ALPS - use %ph to print buffers 2013-04-15 13:40:22 -07:00
alps.h Input: ALPS - add "Dolphin V1" touchpad support 2013-02-22 00:10:30 -08:00
amimouse.c Input: amimouse - use module_platform_driver_probe macro 2013-03-17 21:37:25 -07:00
appletouch.c USB: input: appletouch: fix up compiler warning 2012-05-04 15:35:56 -07:00
atarimouse.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
bcm5974.c HID: Add support for the MacBook Pro 10,2 keyboard / touchpad 2012-10-31 10:42:33 +01:00
cyapa.c Input: cyapa - add support for smbus protocol 2013-02-13 20:21:17 -08:00
cypress_ps2.c Input: cypress_ps2 - fix trackpadi found in Dell XPS12 2013-02-22 00:09:04 -08:00
cypress_ps2.h Input: add support for Cypress PS/2 Trackpads 2013-01-17 00:27:34 -08:00
elantech.c Input: MT - Add flags to input_mt_init_slots() 2012-09-19 19:50:18 +02:00
elantech.h Input: elantech - add resolution query support for v4 hardware 2011-11-20 22:28:34 -08:00
gpio_mouse.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
hgpk.c Input: hgpk - use %*ph to dump small buffer 2012-09-12 21:57:13 -07:00
hgpk.h Input: psmouse - switch to using dev_*() for messages 2011-10-10 18:28:16 -07:00
inport.c Input: remove CVS keywords 2008-05-20 12:17:39 -04:00
Kconfig Input: add driver for Cypress APA I2C Trackpad 2013-01-17 00:28:10 -08:00
lifebook.c Input: psmouse - switch to using dev_*() for messages 2011-10-10 18:28:16 -07:00
lifebook.h Input: psmouse - do not carry DMI data around 2009-12-03 23:25:36 -08:00
logibm.c Input: remove CVS keywords 2008-05-20 12:17:39 -04:00
logips2pp.c Input: convert obsolete strict_strtox to kstrtox 2011-11-09 21:23:26 -08:00
logips2pp.h Input: psmouse - use boolean type 2009-09-10 22:11:38 -07:00
Makefile Input: add driver for Cypress APA I2C Trackpad 2013-01-17 00:28:10 -08:00
maplemouse.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
navpoint.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
pc110pad.c Input: switch to input_abs_*() access functions 2010-08-02 20:29:56 -07:00
psmouse-base.c Input: add support for Cypress PS/2 Trackpads 2013-01-17 00:27:34 -08:00
psmouse.h Input: add support for Cypress PS/2 Trackpads 2013-01-17 00:27:34 -08:00
pxa930_trkball.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
rpcmouse.c input: rpcmouse: use __iomem pointers for MMIO 2012-09-19 15:37:13 +02:00
sentelic.c Input: sentelic - only report position of first finger as ST coordinates 2012-12-24 09:51:21 -08:00
sentelic.h Input: sentelic - report device's production serial number 2012-05-10 20:39:04 -07:00
sermouse.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
synaptics_i2c.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
synaptics_usb.c Input: synaptics_usb - Remove TrackPoint name trailing whitespace 2012-07-06 19:12:17 -07:00
synaptics.c Input: synaptics - fix sync lost after resume on some laptops 2013-06-04 09:33:16 -07:00
synaptics.h Input: synaptics - print firmware ID and board number at init 2012-07-07 18:20:08 -07:00
touchkit_ps2.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
touchkit_ps2.h Input: psmouse - use boolean type 2009-09-10 22:11:38 -07:00
trackpoint.c Input: trackpoint - Optimize trackpoint init to use power-on reset 2013-04-19 09:05:44 -07:00
trackpoint.h Input: trackpoint - Optimize trackpoint init to use power-on reset 2013-04-19 09:05:44 -07:00
vsxxxaa.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00