linux/drivers/input/mouse
Daniel Kurtz 3cdfee9ea7 Input: synaptics - add image sensor support
Synaptics makes (at least) two kinds of touchpad sensors:
 * Older pads use a profile sensor that could only infer the location
   of individual fingers based on the projection of their profiles
   onto row and column sensors.
 * Newer pads use an image sensor that can track true finger position
   using a two-dimensional sensor grid.

Both sensor types support an "Advanced Gesture Mode":
 When multiple fingers are detected, the touchpad sends alternating
 "Advanced Gesture Mode" (AGM) and "Simple Gesture Mode" (SGM)
 packets.
 The AGM packets have w=2, and contain reduced resolution finger data
 The SGM packets have w={0,1} and contain full resolution finger data

Profile sensors try to report the "upper" (larger y value) finger in
the SGM packet, and the lower (smaller y value) in the AGM packet.
However, due to the nature of the profile sensor, they easily get
confused when fingers cross, and can start reporting the x-coordinate
of one with the y-coordinate of the other.  Thus, for profile
sensors, "semi-mt" was created, which reports a "bounding box"
created by pairing min and max coordinates of the two pairs of
reported fingers.

Image sensors can report the actual coordinates of two of the fingers
present.  This patch detects if the touchpad is an image sensor and
reports finger data using the MT-B protocol.

NOTE: This patch only adds partial support for 2-finger gestures.
      The proper interpretation of the slot contents when more than
      two fingers are present is left to later patches.  Also,
      handling of 'number of fingers' transitions is incomplete.

Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Acked-by: Chase Douglas <chase.douglas@canonical.com>
Acked-by: Henrik Rydberg <rydberg@euromail.se>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2011-08-23 23:08:12 -07:00
..
alps.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2010-05-05 07:53:18 -07:00
alps.h
amimouse.c m68k: amiga - Mouse platform device conversion 2010-05-26 19:51:09 +02:00
appletouch.c Input: appletouch - remove extra KERN_DEBUG use from dprintk 2010-10-31 07:16:00 -07:00
atarimouse.c input/atari: Fix mouse movement and button mapping 2011-05-19 18:19:12 +02:00
bcm5974.c Fix common misspellings 2011-03-31 11:26:23 -03:00
elantech.c Input: elantech - remove support for proprietary X driver 2011-05-16 22:48:43 -07:00
elantech.h Input: elantech - export pressure and width when supported 2011-05-16 22:48:36 -07:00
gpio_mouse.c Input: update author email for gpio_mouse, at32psif, and atmel-wm97xx 2011-06-29 00:26:02 -07:00
hgpk.c Input: hgpk - fix powersave mode 2010-11-15 01:33:59 -08:00
hgpk.h Input: hgpk - extend jumpiness detection 2010-11-11 22:21:24 -08:00
inport.c
Kconfig kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
lifebook.c Input: lifebook - make dmi callback functions return 1 2011-07-13 00:08:15 -07:00
lifebook.h
logibm.c
logips2pp.c Input: psmouse - small formatting changes to better follow coding style 2010-05-19 11:31:51 -07:00
logips2pp.h
Makefile
maplemouse.c
pc110pad.c Input: switch to input_abs_*() access functions 2010-08-02 20:29:56 -07:00
psmouse-base.c Input: hgpk - support GlideSensor and PenTablet modes 2010-11-11 22:21:15 -08:00
psmouse.h Input: psmouse - ignore parity error for basic protocols 2010-04-19 00:50:42 -07:00
pxa930_trkball.c Input: remove unneeded version.h includes 2011-06-27 12:42:54 -07:00
rpcmouse.c
sentelic.c Input: remove unneeded version.h includes 2011-06-27 12:42:54 -07:00
sentelic.h
sermouse.c
synaptics_i2c.c Fix common misspellings 2011-03-31 11:26:23 -03:00
synaptics.c Input: synaptics - add image sensor support 2011-08-23 23:08:12 -07:00
synaptics.h Input: synaptics - add image sensor support 2011-08-23 23:08:12 -07:00
touchkit_ps2.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
touchkit_ps2.h
trackpoint.c Input: return -ENOMEM in select drivers when memory allocation fails 2010-10-13 07:49:23 -07:00
trackpoint.h
vsxxxaa.c Fix common misspellings 2011-03-31 11:26:23 -03:00