lkml.org 
[lkml]   [2011]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 06/12] Input: synaptics - fuzz position if touchpad reports reduced filtering
    Date
    From: Daniel Kurtz <djkurtz@chromium.org>

    Synaptics touchpads indicate via a capability bit when they perform
    reduced filtering on position data.
    In such a case, use a non-zero fuzz value.
    Fuzz = 8 was chosen empirically by observing the raw position data
    reported by a clickpad indicating it had reduced filtering.

    Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
    ---
    drivers/input/mouse/synaptics.c | 17 ++++++++++-------
    drivers/input/mouse/synaptics.h | 3 +++
    2 files changed, 13 insertions(+), 7 deletions(-)

    diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
    index 74b1222..dc54675 100644
    --- a/drivers/input/mouse/synaptics.c
    +++ b/drivers/input/mouse/synaptics.c
    @@ -687,23 +687,27 @@ static psmouse_ret_t synaptics_process_byte(struct psmouse *psmouse)
    static void set_input_params(struct input_dev *dev, struct synaptics_data *priv)
    {
    int i;
    + int fuzz = 0;

    __set_bit(INPUT_PROP_POINTER, dev->propbit);

    + if (SYN_CAP_REDUCED_FILTERING(priv->ext_cap_0c))
    + fuzz = SYN_REDUCED_FILTER_FUZZ;
    +
    __set_bit(EV_ABS, dev->evbit);
    - input_set_abs_params(dev, ABS_X,
    - XMIN_NOMINAL, priv->x_max ?: XMAX_NOMINAL, 0, 0);
    - input_set_abs_params(dev, ABS_Y,
    - YMIN_NOMINAL, priv->y_max ?: YMAX_NOMINAL, 0, 0);
    + input_set_abs_params(dev, ABS_X, XMIN_NOMINAL,
    + priv->x_max ?: XMAX_NOMINAL, fuzz, 0);
    + input_set_abs_params(dev, ABS_Y, YMIN_NOMINAL,
    + priv->y_max ?: YMAX_NOMINAL, fuzz, 0);
    input_set_abs_params(dev, ABS_PRESSURE, 0, 255, 0, 0);

    if (SYN_CAP_ADV_GESTURE(priv->ext_cap_0c)) {
    __set_bit(INPUT_PROP_SEMI_MT, dev->propbit);
    input_mt_init_slots(dev, 2);
    input_set_abs_params(dev, ABS_MT_POSITION_X, XMIN_NOMINAL,
    - priv->x_max ?: XMAX_NOMINAL, 0, 0);
    + priv->x_max ?: XMAX_NOMINAL, fuzz, 0);
    input_set_abs_params(dev, ABS_MT_POSITION_Y, YMIN_NOMINAL,
    - priv->y_max ?: YMAX_NOMINAL, 0, 0);
    + priv->y_max ?: YMAX_NOMINAL, fuzz, 0);

    input_abs_set_res(dev, ABS_MT_POSITION_X, priv->x_res);
    input_abs_set_res(dev, ABS_MT_POSITION_Y, priv->y_res);
    @@ -977,4 +981,3 @@ bool synaptics_supported(void)
    }

    #endif /* CONFIG_MOUSE_PS2_SYNAPTICS */
    -
    diff --git a/drivers/input/mouse/synaptics.h b/drivers/input/mouse/synaptics.h
    index 34bedde..8a68e66 100644
    --- a/drivers/input/mouse/synaptics.h
    +++ b/drivers/input/mouse/synaptics.h
    @@ -110,6 +110,9 @@
    #define SYN_NEWABS_RELAXED 2
    #define SYN_OLDABS 3

    +/* amount to fuzz position data when touchpad reports reduced filtering */
    +#define SYN_REDUCED_FILTER_FUZZ 8
    +
    /*
    * A structure to describe the state of the touchpad hardware (buttons and pad)
    */
    --
    1.7.3.1


    \
     
     \ /
      Last update: 2011-06-29 07:13    [W:4.305 / U:0.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site