Re: [PATCH] Input: synaptics - Adjust threshold for treating position values as negative

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 10, 2012 at 10:29 PM, Seth Forshee
<seth.forshee@xxxxxxxxxxxxx> wrote:
>
> On Mon, Sep 10, 2012 at 09:31:52PM +0800, Daniel Kurtz wrote:
> > On Mon, Sep 10, 2012 at 8:47 PM, Seth Forshee
> > <seth.forshee@xxxxxxxxxxxxx>wrote:
> >
> > > Commit c039450 (Input: synaptics - handle out of bounds values from
> > > the
> > > hardware) caused any hardware reported values over 7167 to be treated
> > > as
> > > a wrapped-around negative value. It turns out that some firmware uses
> > > the value 8176 to indicate a finger near the edge of the touchpad
> > > whose
> > > actual position cannot be determined. This value now gets treated as
> > > negative, which can cause pointer jumps and broken edge scrolling on
> > > these machines.
> >
> >
> > > I only know of one touchpad which reports negative values, and this
> > > hardware never reports any value lower than -8 (i.e. 8184). Moving the
> > > threshold for treating a value as negative up to 8176 should work fine
> > > then for any hardware we currently know about, and since we're dealing
> > > with unspecified behavior it's probably the best we can do. The
> > > special
> > > 8176 value is also likely to result in sudden jumps in position, so
> > > let's also clamp this to the maximum speicified value for the axis.
> > >
> >
> > Would 8176 still be reported if it was near the X/Y_MIN edge but cannot
> > be
> > determined?
>
> I've been told 0 is reported in that case.
>
> > If we just report MAX, will that warp the position all the way across
> > the
> > pad?
>
> I don't follow. How would this have any impact on the other positions?

Sorry I was confusing, but you answered already:
* If the unknown position is near "max", then 8176 (0x1ff0) is reported.
* If the unknown position is near 0, then 0 is reported, so no fear
that we would warp from 0 -> 8176 if the TP lost track of the finger.

Reviewed-by: Daniel Kurtz <djkurtz@xxxxxxxxxxxx>

>
> The only place where I'd expect to see some sort of impact is
> immediately above or to the left of the location where the touchpad
> starts reporting this value. Reporting MAX seems more reasonable to me
> than reporting 8176, since the adjacent position is almost certainly
> nowhere near 8176. An argument could be made for using the bezel limits
> instead, which probably would be better for devices conforming to the
> published documentation, but then we know that some devices operate
> outside of these parameters.
>
> Or we could just go back to reporting 8176 directly, which is what we
> were doing before my previous patch.
>
> > If this behavior gets too bizarre, instead of making this "one size fits
> > all" solution, is it possible to use some quirks?  I recently added a
> > patch
> > that reads the board_id for the synaptics pads - we could use this to
> > identify a particular type of pad and handle it appropriately.
>
> That could make sense for the touchpad that reports negative values, as
> this appears to be a problem isolated to one or a very small number of
> machines.
>
> But I've had reports of multiple machines reporting 8176, two of which
> I've confirmed and one of which is almost certainly the same issue.
> These are all Asus machines, but different models. There's also a report
> on an Acer machine that could be the same thing, but it's far less
> certain. The bug reports are coming from a 3.2-based kernel, so I don't
> have the board and firmware ids printed in dmesg.
>
> Seth
>
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux