lkml.org 
[lkml]   [2018]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.14 020/161] Input: synaptics - reset the ABS_X/Y fuzz after initializing MT axes
    Date
    From: Peter Hutterer <peter.hutterer@who-t.net>

    [ Upstream commit 19eb4ed1141bd1096b9bc84ba9c4d03d5830c143 ]

    input_mt_init_slots() resets the ABS_X/Y fuzz to 0 and expects the driver
    to call input_mt_report_pointer_emulation(). That is based on the MT
    position bits which are already defuzzed - hence a fuzz of 0.

    In the case of synaptics semi-mt devices, we report the ABS_X/Y axes
    manually. This results in the MT position being defuzzed but the
    single-touch emulation missing that defuzzing.

    Work around this by re-initializing the ABS_X/Y axes after the MT axis to
    get the same fuzz value back.

    https://bugs.freedesktop.org/show_bug.cgi?id=104533

    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/input/mouse/synaptics.c | 10 ++++++++++
    1 file changed, 10 insertions(+)

    diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
    index ee5466a374bf..a246fc686bb7 100644
    --- a/drivers/input/mouse/synaptics.c
    +++ b/drivers/input/mouse/synaptics.c
    @@ -1280,6 +1280,16 @@ static void set_input_params(struct psmouse *psmouse,
    INPUT_MT_POINTER |
    (cr48_profile_sensor ?
    INPUT_MT_TRACK : INPUT_MT_SEMI_MT));
    +
    + /*
    + * For semi-mt devices we send ABS_X/Y ourselves instead of
    + * input_mt_report_pointer_emulation. But
    + * input_mt_init_slots() resets the fuzz to 0, leading to a
    + * filtered ABS_MT_POSITION_X but an unfiltered ABS_X
    + * position. Let's re-initialize ABS_X/Y here.
    + */
    + if (!cr48_profile_sensor)
    + set_abs_position_params(dev, &priv->info, ABS_X, ABS_Y);
    }

    if (SYN_CAP_PALMDETECT(info->capabilities))
    --
    2.15.1
    \
     
     \ /
      Last update: 2018-04-09 02:23    [W:4.429 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site