On Sat, 01 Nov 2008 15:48:28 +1100, Matthew Chapman wrote: > 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? I can definitely confirm this problem, also on a Dell Latitutde E6400 with 2.6.27 kernel. dmesg contains errors like this: psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 lost sync at byte 6 psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 - driver resynched. psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 lost sync at byte 5 psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 lost sync at byte 1 psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 - driver resynched. psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 lost sync at byte 5 psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 lost sync at byte 6 psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 lost sync at byte 3 psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 lost sync at byte 3 psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 lost sync at byte 3 psmouse.c: issuing reconnect request input: PS/2 Generic Mouse as /class/input/input13 (Note also that this patch is still required to make this patch to make the synaptic driver recognize the touchpad: http://lkml.org/lkml/2008/9/7/133 ) # cat /proc/bus/input/devices I: Bus=0017 Vendor=0001 Product=0001 Version=0100 N: Name="Macintosh mouse button emulation" P: Phys= S: Sysfs=/class/input/input0 U: Uniq= H: Handlers=mouse0 event0 B: EV=7 B: KEY=70000 0 0 0 0 B: REL=3 I: Bus=0011 Vendor=0001 Product=0001 Version=ab41 N: Name="AT Translated Set 2 keyboard" P: Phys=isa0060/serio0/input0 S: Sysfs=/class/input/input1 U: Uniq= H: Handlers=kbd event1 B: EV=120013 B: KEY=800000000000 0 0 500f02102002 380303cf810d001 feffffdfffefffff ffffffffffffffff B: MSC=10 B: LED=7 I: Bus=0019 Vendor=0000 Product=0005 Version=0000 N: Name="Lid Switch" P: Phys=PNP0C0D/button/input0 S: Sysfs=/class/input/input4 U: Uniq= H: Handlers=event4 B: EV=21 B: SW=1 I: Bus=0019 Vendor=0000 Product=0001 Version=0000 N: Name="Power Button (CM)" P: Phys=PNP0C0C/button/input0 S: Sysfs=/class/input/input5 U: Uniq= H: Handlers=kbd event5 B: EV=3 B: KEY=10000000000000 0 I: Bus=0019 Vendor=0000 Product=0003 Version=0000 N: Name="Sleep Button (CM)" P: Phys=PNP0C0E/button/input0 S: Sysfs=/class/input/input6 U: Uniq= H: Handlers=kbd event6 B: EV=3 B: KEY=4000 0 0 I: Bus=0019 Vendor=0000 Product=0006 Version=0000 N: Name="Video Bus" P: Phys=/video/input0 S: Sysfs=/class/input/input7 U: Uniq= H: Handlers=kbd event7 B: EV=3 B: KEY=3f000b00000000 0 0 0 I: Bus=0019 Vendor=0000 Product=0006 Version=0000 N: Name="Video Bus" P: Phys=/video/input0 S: Sysfs=/class/input/input8 U: Uniq= H: Handlers=kbd event8 B: EV=3 B: KEY=3f000b00000000 0 0 0 I: Bus=0019 Vendor=0000 Product=0006 Version=0000 N: Name="Video Bus" P: Phys=/video/input0 S: Sysfs=/class/input/input9 U: Uniq= H: Handlers=kbd event9 B: EV=3 B: KEY=3f000b00000000 0 0 0 I: Bus=0003 Vendor=413c Product=8157 Version=0111 N: Name="HID 413c:8157" P: Phys=usb-0000:00:1a.0-1.1/input0 S: Sysfs=/class/input/input10 U: Uniq= H: Handlers=kbd event10 B: EV=120013 B: KEY=1000000000007 ff800000000007ff febeffdff3cfffff fffffffffffffffe B: MSC=10 B: LED=7 I: Bus=0001 Vendor=111d Product=76b2 Version=0001 N: Name="HDA Digital PCBeep" P: Phys=card0/codec#0/beep0 S: Sysfs=/class/input/input12 U: Uniq= H: Handlers=kbd event12 B: EV=40001 B: SND=6 I: Bus=0011 Vendor=0002 Product=0001 Version=0000 N: Name="PS/2 Generic Mouse" P: Phys=isa0060/serio1/input0 S: Sysfs=/class/input/input13 U: Uniq= H: Handlers=mouse1 event2 B: EV=7 B: KEY=70000 0 0 0 0 B: REL=3 > 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. -- Frederik Himpe -- 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