linux/drivers/input/mouse
Benjamin Tissoires e9e8520f22 Input: synaptics - use in-kernel tracking for reporting mt data
The current code tries to consider all states and transitions to properly
detect which finger is attached to which slot. The code is quite huge
and difficult to read.

If the sensor manages to group the touch points but is not reliable in
giving tracking ids, we can simply use the kernel tracking method. Note
that it is already used by Cr-48 Chromebooks.

Incidentaly, this fixes a bug reported by Peter Hutterer:
"""
on the Lenovo T440, run:
evemu-record /dev/input/event4 | grep BTN_

then put one, two, three, two fingers down
when you go from 3 to 2 fingers the driver sends a spurious BTN_TOUCH 0
event:

E: 0.000000 0001 014a 0001      # EV_KEY / BTN_TOUCH            1
E: 0.000000 0001 0145 0001      # EV_KEY / BTN_TOOL_FINGER      1
E: 0.770008 0001 0145 0000      # EV_KEY / BTN_TOOL_FINGER      0
E: 0.770008 0001 014d 0001      # EV_KEY / BTN_TOOL_DOUBLETAP   1
E: 1.924716 0001 014d 0000      # EV_KEY / BTN_TOOL_DOUBLETAP   0
E: 1.924716 0001 014e 0001      # EV_KEY / BTN_TOOL_TRIPLETAP   1

.. changing from 3 to 2 fingers now

E: 3.152641 0001 014a 0000      # EV_KEY / BTN_TOUCH            0
E: 3.152641 0001 014d 0001      # EV_KEY / BTN_TOOL_DOUBLETAP   1
E: 3.152641 0001 014e 0000      # EV_KEY / BTN_TOOL_TRIPLETAP   0
E: 3.176948 0001 014a 0001      # EV_KEY / BTN_TOUCH            1

quick look in the kernel shows it's caused by hw.z going to 0 for a packet,
so probably a firmware bug. either way, it makes it hard to track BTN_TOUCH
as signal that at least one finger is down.
"""

The in-kernel tracking is enough to remove this spurious BTN_TOUCH 0.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2014-12-29 14:23:00 -08:00
..
alps.c Input: alps - v7: document the v7 touchpad packet protocol 2014-12-18 10:01:28 -08:00
alps.h Input: alps - Rushmore and v7 resolution support 2014-07-30 22:53:20 -07:00
amimouse.c Input: amimouse - remove redundant platform_set_drvdata() 2013-05-05 20:15:14 -07:00
appletouch.c Input: appletouch - fix jumps when additional fingers are detected 2014-03-30 23:44:17 -07:00
atarimouse.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
bcm5974.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
cyapa.c Input: cyapa - use 'error' for error codes 2014-12-04 09:26:40 -08:00
cypress_ps2.c Input: cypress_ps2 - don't report as a button pads 2014-03-26 13:33:58 -07:00
cypress_ps2.h Input: add support for Cypress PS/2 Trackpads 2013-01-17 00:27:34 -08:00
elan_i2c_core.c Input: add driver for Elan I2C/SMbus touchpad 2014-10-24 13:54:24 -07:00
elan_i2c_i2c.c Input: add driver for Elan I2C/SMbus touchpad 2014-10-24 13:54:24 -07:00
elan_i2c_smbus.c Input: add driver for Elan I2C/SMbus touchpad 2014-10-24 13:54:24 -07:00
elan_i2c.h Input: add driver for Elan I2C/SMbus touchpad 2014-10-24 13:54:24 -07:00
elantech.c Input: add missing POINTER / DIRECT properties to a bunch of drivers 2014-09-08 14:58:12 -07:00
elantech.h Input: elantech - add support for trackpoint found on some v3 models 2014-08-26 15:17:41 -07:00
focaltech.c Input: psmouse - support for the FocalTech PS/2 protocol extensions 2014-12-29 09:51:37 -08:00
focaltech.h Input: psmouse - support for the FocalTech PS/2 protocol extensions 2014-12-29 09:51:37 -08:00
gpio_mouse.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -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: psmouse - support for the FocalTech PS/2 protocol extensions 2014-12-29 09:51:37 -08:00
lifebook.c Input: lifebook - fix incorrect placement of __initconst 2013-08-12 22:32:38 -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 Input: remove CVS keywords 2008-05-20 12:17:39 -04:00
logips2pp.c Input: logips2pp - fix spelling s/reciver/receiver/ 2014-01-12 11:41:38 -08:00
logips2pp.h Input: psmouse - use boolean type 2009-09-10 22:11:38 -07:00
Makefile Input: add driver for Elan I2C/SMbus touchpad 2014-10-24 13:54:24 -07:00
maplemouse.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
navpoint.c Input: mouse - use __maybe_unused instead of ifdef around suspend/resume 2014-11-02 00:10:07 -07:00
pc110pad.c Input: switch to input_abs_*() access functions 2010-08-02 20:29:56 -07:00
psmouse-base.c Input: psmouse - support for the FocalTech PS/2 protocol extensions 2014-12-29 09:51:37 -08:00
psmouse.h Input: psmouse - support for the FocalTech PS/2 protocol extensions 2014-12-29 09:51:37 -08: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 - 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: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
synaptics_i2c.c Input: mouse - use __maybe_unused instead of ifdef around suspend/resume 2014-11-02 00:10:07 -07:00
synaptics_usb.c Input: add missing POINTER / DIRECT properties to a bunch of drivers 2014-09-08 14:58:12 -07:00
synaptics.c Input: synaptics - use in-kernel tracking for reporting mt data 2014-12-29 14:23:00 -08:00
synaptics.h Input: synaptics - use in-kernel tracking for reporting mt data 2014-12-29 14:23:00 -08: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: psmouse - expose drift duration for IBM trackpoints 2014-12-17 15:46:51 -08:00
trackpoint.h Input: psmouse - expose drift duration for IBM trackpoints 2014-12-17 15:46:51 -08:00
vsxxxaa.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00