linux/drivers/input/mouse
Anthony Martin 3f9db52dc8 Input: synaptics - fix device info appearing different on reconnect
User-modified input settings no longer survive a suspend/resume cycle.
Starting with 4.12, the touchpad is reinitialized on every reconnect
because the hardware appears to be different. This can be reproduced
by running the following as root:

    echo -n reconnect >/sys/devices/platform/i8042/serio1/drvctl

A line like the following will show up in dmesg:

    [30378.295794] psmouse serio1: synaptics: hardware appears to be
                   different: id(149271-149271), model(114865-114865),
                   caps(d047b3-d047b1), ext(b40000-b40000).

Note the single bit difference in caps: bit 1 (SYN_CAP_MULTIFINGER).

This happens because we modify our stored copy of the device info
capabilities when we enable advanced gesture mode but this change is
not reflected in the actual hardware capabilities.

It worked in the past because synaptics_query_hardware used to modify
the stored synaptics_device_info struct instead of filling in a new
one, as it does now.

Fix it by no longer faking the SYN_CAP_MULTIFINGER bit when setting
advanced gesture mode. This necessitated a small refactoring.

Fixes: 6c53694fb2 ("Input: synaptics - split device info into a separate structure")
Signed-off-by: Anthony Martin <ality@pbrane.org>
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2017-08-28 10:36:46 -07:00
..
Kconfig Input: synaptics - add support for Intertouch devices 2017-03-25 10:37:30 -07:00
Makefile Input: psmouse - add support for SMBus companions 2017-03-25 10:37:29 -07:00
alps.c Input: ALPS - fix two-finger scroll breakage in right side on ALPS touchpad 2017-08-24 15:53:46 -07:00
alps.h Input: ALPS - fix two-finger scroll breakage in right side on ALPS touchpad 2017-08-24 15:53:46 -07:00
amimouse.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
appletouch.c Input: appletouch - fix jumps when additional fingers are detected 2014-03-30 23:44:17 -07:00
atarimouse.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
bcm5974.c Input: mouse - use local variables consistently 2017-01-21 23:52:22 -08:00
byd.c Merge branch 'next' into for-linus 2016-05-16 17:25:08 -07:00
byd.h Input: byd - add BYD PS/2 touchpad driver 2016-01-27 17:27:25 -08:00
cyapa.c Input: mouse - use local variables consistently 2017-01-21 23:52:22 -08:00
cyapa.h Input: cyapa - fix for losing events during device power transitions 2016-03-04 11:32:13 -08:00
cyapa_gen3.c Input: cyapa - use msleep() for long delay 2017-01-15 15:40:23 -08:00
cyapa_gen5.c Input: cyapa - fix for losing events during device power transitions 2016-03-04 11:32:13 -08:00
cyapa_gen6.c Input: cyapa - fix for losing events during device power transitions 2016-03-04 11:32:13 -08:00
cypress_ps2.c Input: mouse - drop unnecessary calls to input_set_drvdata 2017-01-22 17:22:28 -08:00
cypress_ps2.h Input: psmouse - use IS_ENABLED instead of homegrown code 2015-02-15 16:08:35 -08:00
elan_i2c.h Input: elan_i2c - add support for fetching chip type on newer hardware 2017-05-11 17:44:23 -07:00
elan_i2c_core.c Input: elan_i2c - add ELAN0602 ACPI ID to support Lenovo Yoga310 2017-08-18 17:03:57 -07:00
elan_i2c_i2c.c Linux 4.12-rc3 2017-05-29 19:54:21 -07:00
elan_i2c_smbus.c Input: elan_i2c - add support for fetching chip type on newer hardware 2017-05-11 17:44:23 -07:00
elantech.c Merge branch 'next' into for-linus 2017-07-06 13:51:43 -07:00
elantech.h Input: elantech - add special check for fw_version 0x470f01 touchpad 2015-08-07 14:54:15 -07:00
focaltech.c Input: psmouse - cleanup Focaltech code 2016-10-24 17:19:25 -07:00
focaltech.h Input: psmouse - rearrange Focaltech init code 2015-12-17 15:23:54 -08:00
gpio_mouse.c input: mouse: drop owner assignment from platform_drivers 2014-10-20 16:20:40 +02:00
hgpk.c Input: mouse - use local variables consistently 2017-01-21 23:52:22 -08:00
hgpk.h Input: psmouse - switch to using dev_*() for messages 2011-10-10 18:28:16 -07:00
inport.c Annotate hardware config module parameters in drivers/input/ 2017-04-20 12:02:32 +01:00
lifebook.c Input: psmouse - use same format for secondary devices as for primary 2016-06-18 17:39:23 -07:00
lifebook.h Input: lifebook - use "static inline" instead of "inline" in lifebook.h 2014-11-09 22:59:25 -08:00
logibm.c Annotate hardware config module parameters in drivers/input/ 2017-04-20 12:02:32 +01:00
logips2pp.c Input: mouse - use local variables consistently 2017-01-21 23:52:22 -08:00
logips2pp.h Input: psmouse - rename ps2pp_init() to ps2pp_detect() 2015-12-17 15:24:37 -08:00
maplemouse.c Input: mouse - drop unnecessary calls to input_set_drvdata 2017-01-22 17:22:28 -08:00
navpoint.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2014-12-17 10:06:02 -08:00
pc110pad.c Input: switch to input_abs_*() access functions 2010-08-02 20:29:56 -07:00
psmouse-base.c Input: synaptics - add support for Intertouch devices 2017-03-25 10:37:30 -07:00
psmouse-smbus.c Input: psmouse - use i2c_client_type to locate i2c clients 2017-04-03 12:03:55 -07:00
psmouse.h Input: synaptics - add support for Intertouch devices 2017-03-25 10:37:30 -07:00
pxa930_trkball.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
rpcmouse.c input: rpcmouse: use __iomem pointers for MMIO 2012-09-19 15:37:13 +02:00
sentelic.c Input: sentelic - silence some underflow warnings 2015-08-21 09:32:59 -07:00
sentelic.h Input: sentelic - use "static inline" instead of "inline" 2015-05-22 10:59:54 -07:00
sermouse.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
synaptics.c Input: synaptics - fix device info appearing different on reconnect 2017-08-28 10:36:46 -07:00
synaptics.h Input: synaptics - use u8 instead of unsigned char 2017-04-03 16:23:58 -07:00
synaptics_i2c.c Input: synaptics_i2c - add OF device ID table 2017-03-23 14:46:32 -07:00
synaptics_usb.c Input: add missing POINTER / DIRECT properties to a bunch of drivers 2014-09-08 14:58:12 -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 - add new trackpoint firmware ID 2017-08-18 17:04:11 -07:00
trackpoint.h Input: trackpoint - add new trackpoint firmware ID 2017-08-18 17:04:11 -07:00
vmmouse.c Input: vmmouse - remove port reservation 2016-06-23 17:41:18 -07:00
vmmouse.h Input: add vmmouse driver 2015-04-14 14:29:03 -07:00
vsxxxaa.c Input: vsxxxaa - fix code dropping bytes from queue 2014-10-28 10:33:48 -07:00