[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130213215250.GE23390@core.coreip.homeip.net>
Date: Wed, 13 Feb 2013 13:52:50 -0800
From: Dmitry Torokhov <dmitry.torokhov@...il.com>
To: Daniel Kurtz <djkurtz@...omium.org>
Cc: Henrik Rydberg <rydberg@...omail.se>,
Seth Forshee <seth.forshee@...onical.com>,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
Chung-Yih Wang <cywang@...omium.org>,
Chase Douglas <chase.douglas@...onical.com>,
linux-input@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] Input: synaptics - disable fuzz when using mt slots
On Fri, Feb 01, 2013 at 04:28:32PM +0800, Daniel Kurtz wrote:
> The input fuzz algorithm does a pretty good job filtering out small
> jitter on input samples.
>
> However, there is a subtle problem when fuzz is used with mt drivers that
> also use input_mt_report_pointer_emulation() to report legacy single
> touch coordinates. The reported single touch coordinates are taken from
> the active MT slot with smallest tracking id. However, since the MT data
> is sent first, it has already had FUZZ applied. Thus, the ST coordinates
> actually get FUZZ applied a second time, with the just-fuzzed MT value as
> the 'old value'.
>
> It appears that it is non-trivial to fix this in the mt layer/input core,
> so, for now, just disable fuzz for the synaptics IMAGE_SENSOR path that
> uses input_mt_report_pointer_emulation().
>
> Signed-off-by: Daniel Kurtz <djkurtz@...omium.org>
> ---
> drivers/input/mouse/synaptics.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
> index 12d12ca..b6c6838 100644
> --- a/drivers/input/mouse/synaptics.c
> +++ b/drivers/input/mouse/synaptics.c
> @@ -1211,7 +1211,8 @@ static void set_abs_position_params(struct input_dev *dev,
> int x_max = priv->x_max ?: XMAX_NOMINAL;
> int y_min = priv->y_min ?: YMIN_NOMINAL;
> int y_max = priv->y_max ?: YMAX_NOMINAL;
> - int fuzz = SYN_CAP_REDUCED_FILTERING(priv->ext_cap_0c) ?
> + int fuzz = (SYN_CAP_REDUCED_FILTERING(priv->ext_cap_0c) &&
> + !SYN_CAP_IMAGE_SENSOR(priv->ext_cap_0c)) ?
> SYN_REDUCED_FILTER_FUZZ : 0;
Hmm, instead of disabling fuzz completely maybe we should disable it
only on the derived axes (ABS_X/ABS_Y) for multitouch devices?
Thanks.
--
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists