linux/drivers/input
Seth Forshee c0394506e6 Input: synaptics - handle out of bounds values from the hardware
The touchpad on the Acer Aspire One D250 will report out of range values
in the extreme lower portion of the touchpad. These appear as abrupt
changes in the values reported by the hardware from very low values to
very high values, which can cause unexpected vertical jumps in the
position of the mouse pointer.

What seems to be happening is that the value is wrapping to a two's
compliment negative value of higher resolution than the 13-bit value
reported by the hardware, with the high-order bits being truncated. This
patch adds handling for these values by converting them to the
appropriate negative values.

The only tricky part about this is deciding when to treat a number as
negative. It stands to reason that if out of range values can be
reported on the low end then it could also happen on the high end, so
not all out of range values should be treated as negative. The approach
taken here is to split the difference between the maximum legitimate
value for the axis and the maximum possible value that the hardware can
report, treating values greater than this number as negative and all
other values as positive. This can be tweaked later if hardware is found
that operates outside of these parameters.

BugLink: http://bugs.launchpad.net/bugs/1001251
Cc: stable@vger.kernel.org
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2012-07-24 23:55:15 -07:00
..
gameport Input: use module_pci_driver 2012-04-21 23:48:58 -07:00
joystick Merge branch 'for-linus' to bring in change ensuring that drivers that 2012-07-07 16:07:48 -07:00
keyboard Input: add support for key scan interface of the LPC32xx SoC 2012-07-17 23:16:16 -07:00
misc Merge branch 'for-linus' to bring in change ensuring that drivers that 2012-07-07 16:07:48 -07:00
mouse Input: synaptics - handle out of bounds values from the hardware 2012-07-24 23:55:15 -07:00
serio Input: serio_raw - signal EFAULT even if read/write partially succeeds 2012-05-02 00:21:13 -07:00
tablet Input: wacom - add support to Cintiq 22HD 2012-07-24 23:55:10 -07:00
touchscreen Input: add driver for FT5x06 based EDT displays 2012-07-24 23:55:03 -07:00
apm-power.c
evbug.c
evdev.c Input: evdev - properly handle read/write with count 0 2012-05-02 00:23:58 -07:00
ff-core.c Input: force feedback - potential integer wrap in input_ff_create() 2011-10-12 21:13:11 -07:00
ff-memless.c Input: ff-memless - fix a couple min_t() casts 2012-07-07 18:20:12 -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 - fix null pointer warning 2012-06-04 16:33:34 +02:00
input-polldev.c Merge commit 'v3.2-rc3' into next 2011-11-29 01:51:07 -08:00
input.c Input: Use accessor for MT values 2012-02-02 14:42:20 +01:00
joydev.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
Kconfig Input: matrix-keymap - uninline and prepare for device tree support 2012-05-10 22:38:47 -07:00
Makefile Input: matrix-keymap - uninline and prepare for device tree support 2012-05-10 22:38:47 -07:00
matrix-keymap.c Input: matrix-keymap - fix building keymaps 2012-05-24 01:12:20 -07:00
mousedev.c
sparse-keymap.c drivers/input: Add module.h to modular drivers implicitly using it 2011-10-31 19:31:16 -04:00