ALPS input driver problem with DualPoint on Dell E6400/E6500

From: Matthew Chapman
Date: Sat Nov 01 2008 - 00:48:43 EST


I have a Dell Latitude E6400 laptop with an ALPS touchpad/touchstick
combination, aka DualPoint. Individually, the touchpad and touchstick
work fine. However, if I accidentally touch both together, or use the
touchpad buttons while using the touchstick (or vice versa), things go
astray. The pointer jumps around, stray mouse buttons are pressed, and
the driver typically loses sync:

[13333.661085] psmouse.c: DualPoint TouchPad at isa0060/serio1/input0
lost sync at byte 5
[13333.662353] psmouse.c: DualPoint TouchPad at isa0060/serio1/input0
lost sync at byte 1
[13333.669493] psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 -
driver resynched.

To cut a long story short, it seems that in this case the ALPS device
sends a 9-byte packet format, with both a relative update and an
absolute update combined (why oh why...). Has anyone else seen
something like this?


When I use just the touchstick and its buttons, the packets are normal
PS/2 relative mode packets, e.g.:

08 01 00 dx=1 dy=0
09 01 00 dx=1 dy=0 left T/S button down
08 00 01 dx=0 dy=1 left T/S button up

When I use just the touchpad and its buttons, the packets look like
this, which also works fine with the current ALPS code:

cf 27 1a 38 24 46 x=423 y=420 z=70 fin=1
cf 2c 1a 39 1e 45 x=428 y=414 z=69 fin=1 left T/P button down
cf 2f 1a 38 17 44 x=431 y=407 z=68 fin=1 left T/P button up

Let's say now I use the touchpad and press a touchstick button...

cf 15 1a 38 5e 3d x=405 y=478 z=61
cf 19 1a 0f 00 00 39 56 3d x=409 y=470 z=61 left T/P button down
^^^^^^^^
cf 1d 1a 39 4e 3d x=413 y=462 z=61

cf 21 1a 0f 00 00 38 49 3f x=417 y=456 z=63 left T/P button up
^^^^^^^^
cf 21 1a 38 48 3e x=417 y=455 z=62

Now let's try moving the touchstick also...

cf 3d 12 3f fa fd 18 4c 21 dx=-6 dy=-3 x=317 y=204 z=33
^^^^^^^^
38 fa fd dx=-6 dy=-3
cf 3a 12 3f f9 fc 18 4c 20 dx=-7 dy=-4 x=314 y=204 z=32
^^^^^^^^
38 fa fd dx=-6 dy=-3
etc.

In other words, it seems like there's a relative update embedded right
in the middle of the absolute mode packet, which can be identified by
all the buttons being set to 1.

I can put together a patch, but it's a non-trivial change... I'm
interested in hearing whether anyone else has the same problem with
their E6400/E6500 or other DualPoint laptop, or has better ideas
regarding how to deal with this.

Matt

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/