linux/drivers/input/mouse
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
..
alps.c Input: ALPS - switch to using input_mt_report_finger_count 2012-05-10 22:32:33 -07:00
alps.h Input: ALPS - add semi-MT support for v4 protocol 2012-05-10 22:32:20 -07:00
amimouse.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
appletouch.c USB: input: appletouch: fix up compiler warning 2012-05-04 15:35:56 -07:00
atarimouse.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
bcm5974.c USB: input: bcm5974.c: fix up dev_* messages 2012-05-04 15:33:02 -07:00
elantech.c Input: elantech - v4 is a clickpad, with only one button 2012-04-10 00:40:35 -07:00
elantech.h Input: elantech - add resolution query support for v4 hardware 2011-11-20 22:28:34 -08:00
gpio_mouse.c Input: gpio_mouse - use linux/gpio.h rather than asm/gpio.h 2012-04-10 09:05:27 -07:00
hgpk.c Input: psmouse - use psmouse_[de]activate() from sentelic and hgpk drivers 2012-02-24 00:55:33 -08: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: Add Synaptics NavPoint (PXA27x SSP/SPI) driver 2012-05-10 22:12:39 -07:00
lifebook.c Input: psmouse - switch to using dev_*() for messages 2011-10-10 18:28:16 -07:00
lifebook.h Input: psmouse - do not carry DMI data around 2009-12-03 23:25:36 -08:00
logibm.c Input: remove CVS keywords 2008-05-20 12:17:39 -04:00
logips2pp.c Input: convert obsolete strict_strtox to kstrtox 2011-11-09 21:23:26 -08:00
logips2pp.h Input: psmouse - use boolean type 2009-09-10 22:11:38 -07:00
Makefile Input: Add Synaptics NavPoint (PXA27x SSP/SPI) driver 2012-05-10 22:12:39 -07:00
maplemouse.c maple: input: fix up maple mouse driver 2009-04-27 09:22:31 +09:00
navpoint.c Input: Add Synaptics NavPoint (PXA27x SSP/SPI) driver 2012-05-10 22:12:39 -07:00
pc110pad.c Input: switch to input_abs_*() access functions 2010-08-02 20:29:56 -07:00
psmouse-base.c Merge commit 'v3.3-rc6' into next 2012-03-09 10:55:17 -08:00
psmouse.h Input: psmouse - allow drivers to use psmouse_{de,}activate 2012-02-24 00:55:28 -08:00
pxa930_trkball.c Input: mouse - use macro module_platform_driver() 2011-11-30 23:41:42 -08:00
rpcmouse.c [ARM] acorn,ebsa110,footbridge,integrator,sa1100: Convert asm/io.h to linux/io.h 2009-03-25 10:21:35 +00:00
sentelic.c Input: sentelic - report device's production serial number 2012-05-10 20:39:04 -07:00
sentelic.h Input: sentelic - report device's production serial number 2012-05-10 20:39:04 -07:00
sermouse.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00
synaptics_i2c.c Input: convert I2C drivers to use module_i2c_driver() 2012-03-16 23:06:19 -07:00
synaptics_usb.c Input: synaptics_usb - Remove TrackPoint name trailing whitespace 2012-07-06 19:12:17 -07:00
synaptics.c Input: synaptics - handle out of bounds values from the hardware 2012-07-24 23:55:15 -07:00
synaptics.h Input: synaptics - print firmware ID and board number at init 2012-07-07 18:20:08 -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 - use psmouse_fmt() for messages 2012-04-10 00:40:39 -07:00
trackpoint.h Input: psmouse - use boolean type 2009-09-10 22:11:38 -07:00
vsxxxaa.c Input: serio - use module_serio_driver 2012-04-04 09:25:43 -07:00