linux/drivers/input
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
..
gameport Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
joystick Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2013-02-20 11:00:43 -08:00
keyboard Input: tegra-kbc - support for defining row/columns based on SoC 2013-03-31 00:48:29 -07:00
misc Input: adxl34x - use spi_get_drvdata() 2013-04-07 21:02:29 -07:00
mouse Input: synaptics - fix sync lost after resume on some laptops 2013-06-04 09:33:16 -07:00
serio Input: apbps2 - convert to devm_ioremap_resource() 2013-04-15 13:40:33 -07:00
tablet Input: wacom - add an eraser to DTH2242/DTK2241 2013-05-23 09:01:28 -07:00
touchscreen Input: egalax_ts - ABS_MT_POSITION_Y not reported well 2013-05-05 20:13:10 -07:00
apm-power.c Input: random formatting fixes 2012-08-21 22:29:49 -07:00
evbug.c Input: use pr_fmt and pr_<level> 2010-11-30 23:10:26 -08:00
evdev.c Input: fix use-after-free introduced with dynamic minor changes 2012-10-22 08:50:37 +03:00
ff-core.c Input: random formatting fixes 2012-08-21 22:29:49 -07:00
ff-memless.c Input: random formatting fixes 2012-08-21 22:29:49 -07:00
input-compat.c compat: Use COMPAT_USE_64BIT_TIME in the input subsystem 2012-02-20 12:48:47 -08:00
input-compat.h compat: Use COMPAT_USE_64BIT_TIME in the input subsystem 2012-02-20 12:48:47 -08:00
input-mt.c Input: MT - handle semi-mt devices in core 2013-04-07 21:02:32 -07:00
input-polldev.c Merge commit 'v3.2-rc3' into next 2011-11-29 01:51:07 -08:00
input.c Input: document that unregistering managed devices is not necessary 2013-01-09 09:07:56 -08:00
joydev.c Input: fix use-after-free introduced with dynamic minor changes 2012-10-22 08:50:37 +03:00
Kconfig Input: add couple of missing GENERIC_HARDIRQS dependencies 2013-02-13 20:21:07 -08:00
Makefile Input: matrix-keymap - uninline and prepare for device tree support 2012-05-10 22:38:47 -07:00
matrix-keymap.c Merge branch 'next' into for-linus 2012-12-16 22:04:14 -08:00
mousedev.c Input: mousedev - move /dev/input/mice to the correct minor 2012-11-18 23:15:16 -08:00
sparse-keymap.c Input: random formatting fixes 2012-08-21 22:29:49 -07:00