• Seth Forshee's avatar
    Input: synaptics - handle out of bounds values from the hardware · c0394506
    Seth Forshee authored
    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: default avatarSeth Forshee <seth.forshee@canonical.com>
    Reviewed-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
    Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    c0394506
synaptics.c 43.2 KB