From: Marc Dietrich <marvin24@gmx.de>
To: linux-input@vger.kernel.org
Cc: "Dmitry Torokhov" <dmitry.torokhov@gmail.com>,
"JJ Ding" <jj_ding@emc.com.tw>,
"Éric Piel" <E.A.B.Piel@tudelft.nl>
Subject: elantech touchpad problem (long)
Date: Sat, 05 Nov 2011 22:57:38 +0100 [thread overview]
Message-ID: <6476830.8pz05UnHgs@ax5200p> (raw)
Hi,
my small arm netbook contains a elantech touchpad. It is connected via a
keyboard controller which communicates over a i2c bus with the host cpu. The
keyboard controller/host cpu communication is handled by a special driver (see
drivers/staging/nvec_ps2.c). Up to commmit 28f49616 (Input: elantech - add v3
hardware support) the touchpad was recognized as a Logitech mouse and it
worked fine this way.
Since commit 28f49616, the touchpad is detected as an elantech device (I
checked the hw and it is really one). The detected HW version is 2 and the
firmware version 0x150500). Unfortunately, the device still streams 3 byte
packets which are of course not handled by the elantech driver.
>From what I understood so far, the touchpad needs to be switched to something
called "absolute mode". This is done by programming some tp registers. I
checked these registers and found that register 21 is still 0, while it should
be 0x60 (reg 10 and 11 are ok).
So here is a register dump:
0x07 => 0x00
0x10 => 0x54
0x11 => 0x88
0x20 => 0x00
0x21 => 0x00 // should be 60 ?
0x22 => 0x00
0x23 => 0x00
0x24 => 0x00
0x25 => 0x00
0x26 => 0x00
Tried "echo -n 0x60 > reg_21" didn't helped (just manipulates other
registers?).
So here is the xorg output:
[ 16.598] (II) LoadModule: "synaptics"
[ 16.600] (II) Loading /usr/lib/xorg/modules/input/synaptics_drv.so
[ 16.600] (II) Module synaptics: vendor="X.Org Foundation"
[ 16.600] compiled for 1.10.4, module version = 1.4.1
[ 16.601] Module class: X.Org XInput Driver
[ 16.601] ABI class: X.Org XInput driver, version 12.3
[ 16.601] (II) Using input driver 'synaptics' for 'ETPS/2 Elantech
Touchpad'
[ 16.601] (II) Loading /usr/lib/xorg/modules/input/synaptics_drv.so
[ 16.601] (**) ETPS/2 Elantech Touchpad: always reports core events
[ 16.601] (**) Option "Device" "/dev/input/event6"
[ 16.800] (--) ETPS/2 Elantech Touchpad: x-axis range 0 - 1344
[ 16.800] (--) ETPS/2 Elantech Touchpad: y-axis range 0 - 448
[ 16.800] (--) ETPS/2 Elantech Touchpad: pressure range 0 - 255
[ 16.800] (--) ETPS/2 Elantech Touchpad: finger width range 0 - 15
[ 16.800] (--) ETPS/2 Elantech Touchpad: buttons: left right double triple
[ 16.949] (--) ETPS/2 Elantech Touchpad: touchpad found
[ 16.949] (**) ETPS/2 Elantech Touchpad: always reports core events
[ 17.049] (**) Option "config_info"
"udev:/sys/devices/serio0/input/input6/event6"
[ 17.049] (II) XINPUT: Adding extended input device "ETPS/2 Elantech
Touchpad" (type: TOUCHPAD)
[ 17.050] (**) ETPS/2 Elantech Touchpad: (accel) MinSpeed is now constant
deceleration 2.5
[ 17.050] (**) ETPS/2 Elantech Touchpad: MaxSpeed is now 1.75
[ 17.050] (**) ETPS/2 Elantech Touchpad: AccelFactor is now 0.141
[ 17.050] (**) ETPS/2 Elantech Touchpad: (accel) keeping acceleration
scheme 1
[ 17.050] (**) ETPS/2 Elantech Touchpad: (accel) acceleration profile 1
[ 17.051] (**) ETPS/2 Elantech Touchpad: (accel) acceleration factor: 2.000
[ 17.051] (**) ETPS/2 Elantech Touchpad: (accel) acceleration threshold: 4
[ 17.292] (--) ETPS/2 Elantech Touchpad: touchpad found
[ 17.293] (II) config/udev: Adding input device ETPS/2 Elantech Touchpad
(/dev/input/mouse0)
... and here is traffic dump (sorry a bit long):
[ 5.887554] psmouse serio0: Sending ps2 cmd f2
[ 5.928870] nvec_ps2: got response fa 00
[ 5.928883] psmouse serio0: Sending ps2 cmd f6
[ 5.938252] nvec_ps2: got response fa
[ 5.938267] psmouse serio0: Sending ps2 cmd f3
[ 5.948270] nvec_ps2: got response fa
[ 5.948283] psmouse serio0: Sending ps2 cmd 0a
[ 5.957831] nvec_ps2: got response fa
[ 5.957844] psmouse serio0: Sending ps2 cmd e8
[ 5.970079] nvec_ps2: got response fa
[ 5.970175] psmouse serio0: Sending ps2 cmd 00
[ 5.979733] nvec_ps2: got response fa
[ 5.990101] psmouse serio0: Sending ps2 cmd f3
[ 5.999384] nvec_ps2: got response fa
[ 5.999396] psmouse serio0: Sending ps2 cmd 14
[ 6.008871] nvec_ps2: got response fa
[ 6.008883] psmouse serio0: Sending ps2 cmd f3
[ 6.018769] nvec_ps2: got response fa
[ 6.018781] psmouse serio0: Sending ps2 cmd 3c
[ 6.028603] nvec_ps2: got response fa
[ 6.030088] psmouse serio0: Sending ps2 cmd f3
[ 6.038575] nvec_ps2: got response fa
[ 6.038586] psmouse serio0: Sending ps2 cmd 28
[ 6.048213] nvec_ps2: got response fa
[ 6.048226] psmouse serio0: Sending ps2 cmd f3
[ 6.057895] nvec_ps2: got response fa
[ 6.057906] psmouse serio0: Sending ps2 cmd 14
[ 6.067674] nvec_ps2: got response fa
[ 6.067687] psmouse serio0: Sending ps2 cmd f3
[ 6.077354] nvec_ps2: got response fa
[ 6.077366] psmouse serio0: Sending ps2 cmd 14
[ 6.086930] nvec_ps2: got response fa
[ 6.086942] psmouse serio0: Sending ps2 cmd f3
[ 6.097024] nvec_ps2: got response fa
[ 6.100154] psmouse serio0: Sending ps2 cmd 3c
[ 6.113333] nvec_ps2: got response fa
[ 6.113349] psmouse serio0: Sending ps2 cmd f3
[ 6.119508] nvec_ps2: got response fa
[ 6.119520] psmouse serio0: Sending ps2 cmd 28
[ 6.131131] nvec_ps2: got response fa
[ 6.131143] psmouse serio0: Sending ps2 cmd f3
[ 6.138858] nvec_ps2: got response fa
[ 6.138870] psmouse serio0: Sending ps2 cmd 14
[ 6.148702] nvec_ps2: got response fa
[ 6.148714] psmouse serio0: Sending ps2 cmd f3
[ 6.158898] nvec_ps2: got response fa
[ 6.158910] psmouse serio0: Sending ps2 cmd 14
[ 6.168193] nvec_ps2: got response fa
[ 6.168205] psmouse serio0: Sending ps2 cmd f2
[ 6.183092] nvec_ps2: got response fa 00
[ 6.183104] psmouse serio0: Sending ps2 cmd e8
[ 6.192177] nvec_ps2: got response fa
[ 6.200109] psmouse serio0: Sending ps2 cmd 00
[ 6.207287] nvec_ps2: got response fa
[ 6.207300] psmouse serio0: Sending ps2 cmd e8
[ 6.217568] nvec_ps2: got response fa
[ 6.217580] psmouse serio0: Sending ps2 cmd 00
[ 6.226747] nvec_ps2: got response fa
[ 6.226760] psmouse serio0: Sending ps2 cmd e8
[ 6.236774] nvec_ps2: got response fa
[ 6.237062] psmouse serio0: Sending ps2 cmd 00
[ 6.246454] nvec_ps2: got response fa
[ 6.246466] psmouse serio0: Sending ps2 cmd e8
[ 6.256148] nvec_ps2: got response fa
[ 6.256161] psmouse serio0: Sending ps2 cmd 00
[ 6.265893] nvec_ps2: got response fa
[ 6.265907] psmouse serio0: Sending ps2 cmd e9
[ 6.281059] nvec_ps2: got response fa 00 00 14
[ 6.281071] psmouse serio0: Sending ps2 cmd f6
[ 6.290198] nvec_ps2: got response fa
[ 6.291736] psmouse serio0: Sending ps2 cmd e8
[ 6.304879] nvec_ps2: got response fa
[ 6.305723] psmouse serio0: Sending ps2 cmd 00
[ 6.314646] nvec_ps2: got response fa
[ 6.314969] psmouse serio0: Sending ps2 cmd e6
[ 6.324389] nvec_ps2: got response fa
[ 6.324444] psmouse serio0: Sending ps2 cmd e6
[ 6.334351] nvec_ps2: got response fa
[ 6.334363] psmouse serio0: Sending ps2 cmd e6
[ 6.343863] nvec_ps2: got response fa
[ 6.343875] psmouse serio0: Sending ps2 cmd e9
[ 6.358959] nvec_ps2: got response fa 3c 03 00
[ 6.358972] psmouse serio0: Sending ps2 cmd f6
[ 6.367935] nvec_ps2: got response fa
[ 6.367948] psmouse serio0: Sending ps2 cmd f5
[ 6.377930] nvec_ps2: got response fa
[ 6.377943] psmouse serio0: Sending ps2 cmd e6
[ 6.387570] nvec_ps2: got response fa
[ 6.387582] psmouse serio0: Sending ps2 cmd e6
[ 6.397423] nvec_ps2: got response fa
[ 6.397435] psmouse serio0: Sending ps2 cmd e6
[ 6.407058] nvec_ps2: got response fa
[ 6.407070] psmouse serio0: Sending ps2 cmd e9
[ 6.420677] nvec_ps2: got response fa 3c 03 00
[ 6.420812] psmouse serio0: Sending ps2 cmd e6
[ 6.428976] nvec_ps2: got response fa
[ 6.428989] psmouse serio0: Sending ps2 cmd e8
[ 6.438950] nvec_ps2: got response fa
[ 6.438962] psmouse serio0: Sending ps2 cmd 00
[ 6.448514] nvec_ps2: got response fa
[ 6.456744] psmouse serio0: Sending ps2 cmd e8
[ 6.465721] nvec_ps2: got response fa
[ 6.465734] psmouse serio0: Sending ps2 cmd 00
[ 6.475475] nvec_ps2: got response fa
[ 6.475486] psmouse serio0: Sending ps2 cmd e8
[ 6.485327] nvec_ps2: got response fa
[ 6.485338] psmouse serio0: Sending ps2 cmd 00
[ 6.495187] nvec_ps2: got response fa
[ 6.495199] psmouse serio0: Sending ps2 cmd e8
[ 6.504898] nvec_ps2: got response fa
[ 6.504911] psmouse serio0: Sending ps2 cmd 01
[ 6.515155] nvec_ps2: got response fa
[ 6.515166] psmouse serio0: Sending ps2 cmd e9
[ 6.530131] nvec_ps2: got response fa 15 05 00
[ 6.530142] elantech: Elantech version query result 0x15, 0x05, 0x00.
[ 6.530162] psmouse serio0: Sending ps2 cmd e6
[ 6.539482] nvec_ps2: got response fa
[ 6.539494] psmouse serio0: Sending ps2 cmd e8
[ 6.549442] nvec_ps2: got response fa
[ 6.549454] psmouse serio0: Sending ps2 cmd 00
[ 6.559917] nvec_ps2: got response fa
[ 6.559929] psmouse serio0: Sending ps2 cmd e8
[ 6.569310] nvec_ps2: got response fa
[ 6.569321] psmouse serio0: Sending ps2 cmd 00
[ 6.578560] nvec_ps2: got response fa
[ 6.578575] psmouse serio0: Sending ps2 cmd e8
[ 6.588320] nvec_ps2: got response fa
[ 6.588482] psmouse serio0: Sending ps2 cmd 00
[ 6.598152] nvec_ps2: got response fa
[ 6.599215] psmouse serio0: Sending ps2 cmd e8
[ 6.612103] nvec_ps2: got response fa
[ 6.612125] psmouse serio0: Sending ps2 cmd 01
[ 6.622191] nvec_ps2: got response fa
[ 6.622203] psmouse serio0: Sending ps2 cmd e9
[ 6.634470] nvec_ps2: got response fa 15 05 00
[ 6.634482] elantech: assuming hardware version 2 (with firmware version
0x150500)
[ 6.634496] psmouse serio0: Sending ps2 cmd e6
[ 6.644172] nvec_ps2: got response fa
[ 6.644184] psmouse serio0: Sending ps2 cmd e8
[ 6.653619] nvec_ps2: got response fa
[ 6.653631] psmouse serio0: Sending ps2 cmd 00
[ 6.663864] nvec_ps2: got response fa
[ 6.663876] psmouse serio0: Sending ps2 cmd e8
[ 6.674343] nvec_ps2: got response fa
[ 6.675328] psmouse serio0: Sending ps2 cmd 00
[ 6.684437] nvec_ps2: got response fa
[ 6.684450] psmouse serio0: Sending ps2 cmd e8
[ 6.692962] nvec_ps2: got response fa
[ 6.692974] psmouse serio0: Sending ps2 cmd 00
[ 6.702492] nvec_ps2: got response fa
[ 6.702504] psmouse serio0: Sending ps2 cmd e8
[ 6.712488] nvec_ps2: got response fa
[ 6.713122] psmouse serio0: Sending ps2 cmd 02
[ 6.722199] nvec_ps2: got response fa
[ 6.722211] psmouse serio0: Sending ps2 cmd e9
[ 6.739803] nvec_ps2: got response fa 69 17 09
[ 6.739814] elantech: Synaptics capabilities query result 0x69, 0x17, 0x09.
[ 6.739828] psmouse serio0: Sending ps2 cmd f8
[ 6.749168] nvec_ps2: got response fa
[ 6.749180] psmouse serio0: Sending ps2 cmd 11
[ 6.758987] nvec_ps2: got response fa
[ 6.759000] psmouse serio0: Sending ps2 cmd f8
[ 6.769015] nvec_ps2: got response fa
[ 6.769028] psmouse serio0: Sending ps2 cmd 10
[ 6.778532] nvec_ps2: got response fa
[ 6.779000] psmouse serio0: Sending ps2 cmd f8
[ 6.790669] nvec_ps2: got response fa
[ 6.790682] psmouse serio0: Sending ps2 cmd 54
[ 6.800648] nvec_ps2: got response fa
[ 6.804250] psmouse serio0: Sending ps2 cmd e6
[ 6.813012] nvec_ps2: got response fa
[ 6.813025] psmouse serio0: Sending ps2 cmd f8
[ 6.822806] nvec_ps2: got response fa
[ 6.822824] psmouse serio0: Sending ps2 cmd 11
[ 6.840090] nvec_ps2: got response fa
[ 6.841091] psmouse serio0: Sending ps2 cmd f8
[ 6.849371] nvec_ps2: got response fa
[ 6.850834] psmouse serio0: Sending ps2 cmd 11
[ 6.862394] nvec_ps2: got response fa
[ 6.862408] psmouse serio0: Sending ps2 cmd f8
[ 6.871858] nvec_ps2: got response fa
[ 6.871870] psmouse serio0: Sending ps2 cmd 88
[ 6.881467] nvec_ps2: got response fa
[ 6.881478] psmouse serio0: Sending ps2 cmd e6
[ 6.891346] nvec_ps2: got response fa
[ 6.891359] psmouse serio0: Sending ps2 cmd f8
[ 6.901264] nvec_ps2: got response fa
[ 6.901278] psmouse serio0: Sending ps2 cmd 11
[ 6.910984] nvec_ps2: got response fa
[ 6.911082] psmouse serio0: Sending ps2 cmd f8
[ 6.921680] nvec_ps2: got response fa
[ 6.921692] psmouse serio0: Sending ps2 cmd 21
[ 6.930327] nvec_ps2: got response fa
[ 6.930340] psmouse serio0: Sending ps2 cmd f8
[ 6.940142] nvec_ps2: got response fa
[ 6.940184] psmouse serio0: Sending ps2 cmd 60
[ 6.949914] nvec_ps2: got response fa
[ 6.949926] psmouse serio0: Sending ps2 cmd e6
[ 6.959720] nvec_ps2: got response fc
[ 7.140108] elantech: retrying ps2 command 0xe6 (2).
[ 7.650070] psmouse serio0: Sending ps2 cmd e6
[ 7.660088] nvec_ps2: got response fa
[ 7.660100] psmouse serio0: Sending ps2 cmd f8
[ 7.669533] nvec_ps2: got response fe
[ 7.669542] elantech: retrying ps2 command 0xf8 (2).
[ 8.170058] psmouse serio0: Sending ps2 cmd f8
[ 8.180588] nvec_ps2: got response fc
[ 8.370050] elantech: retrying ps2 command 0xf8 (1).
[ 8.880062] psmouse serio0: Sending ps2 cmd f8
[ 8.888444] nvec_ps2: got response fa
[ 8.888454] psmouse serio0: Sending ps2 cmd 10
[ 8.898301] nvec_ps2: got response fa
[ 8.898312] psmouse serio0: Sending ps2 cmd f8
[ 8.908129] nvec_ps2: got response fa
[ 8.908143] psmouse serio0: Sending ps2 cmd 10
[ 8.918150] nvec_ps2: got response fa
[ 8.918230] psmouse serio0: Sending ps2 cmd e9
[ 8.930670] nvec_ps2: got response fa 54 02 64
[ 8.930685] psmouse serio0: Sending ps2 cmd e6
[ 8.939816] nvec_ps2: got response fa
[ 8.939824] psmouse serio0: Sending ps2 cmd e8
[ 8.949201] nvec_ps2: got response fa
[ 8.949209] psmouse serio0: Sending ps2 cmd 00
[ 8.959326] nvec_ps2: got response fa
[ 8.959334] psmouse serio0: Sending ps2 cmd e8
[ 8.969008] nvec_ps2: got response fa
[ 8.969016] psmouse serio0: Sending ps2 cmd 00
[ 8.978357] nvec_ps2: got response fa
[ 8.978365] psmouse serio0: Sending ps2 cmd e8
[ 8.988536] nvec_ps2: got response fa
[ 8.988544] psmouse serio0: Sending ps2 cmd 00
[ 8.998182] nvec_ps2: got response fa
[ 8.998190] psmouse serio0: Sending ps2 cmd e8
[ 9.008213] nvec_ps2: got response fa
[ 9.008221] psmouse serio0: Sending ps2 cmd 00
[ 9.017767] nvec_ps2: got response fa
[ 9.017775] psmouse serio0: Sending ps2 cmd e9
[ 9.035410] nvec_ps2: got response fa 14 6e 7a
[ 9.035470] psmouse serio0: Sending ps2 cmd f3
[ 9.044827] nvec_ps2: got response fa
[ 9.044835] psmouse serio0: Sending ps2 cmd 64
[ 9.054645] nvec_ps2: got response fa
[ 9.054655] psmouse serio0: Sending ps2 cmd e8
[ 9.064290] nvec_ps2: got response fa
[ 9.064298] psmouse serio0: Sending ps2 cmd 03
[ 9.074112] nvec_ps2: got response fa
[ 9.074123] psmouse serio0: Sending ps2 cmd e6
[ 9.083828] nvec_ps2: got response fa
[ 9.084064] input: ETPS/2 Elantech Touchpad as /devices/serio0/input/input6
[ 9.084510] psmouse serio0: Sending ps2 cmd f4
[ 9.093769] nvec_ps2: got response fa
[ 12.239652] psmouse serio0: Sending ps2 cmd f5
[ 12.248772] nvec_ps2: got response fa
[ 12.248797] psmouse serio0: Sending ps2 cmd f4
[ 12.258601] nvec_ps2: got response fa
.. now some finger move from right to left:
[ 2226.798147] nvec_ps2: got event 18 ff 00
[ 2226.810750] elantech: PS/2 packet [ 0x18 , 0xff , 0x00 , 0x18 , 0xff , 0x01
]
[ 2226.810812] nvec_ps2: got event 18 ff 01
[ 2226.824962] nvec_ps2: got event 18 fe 00
[ 2226.836464] elantech: PS/2 packet [ 0x18 , 0xfe , 0x00 , 0x18 , 0xfb , 0x01
]
[ 2226.836500] nvec_ps2: got event 18 fb 01
[ 2226.849539] nvec_ps2: got event 18 f8 01
[ 2226.863195] elantech: PS/2 packet [ 0x18 , 0xf8 , 0x01 , 0x18 , 0xf4 , 0x02
]
[ 2226.863230] nvec_ps2: got event 18 f4 02
[ 2226.874269] nvec_ps2: got event 18 ef 01
[ 2226.886808] elantech: PS/2 packet [ 0x18 , 0xef , 0x01 , 0x18 , 0xef , 0x02
]
[ 2226.886919] nvec_ps2: got event 18 ef 02
[ 2226.899225] nvec_ps2: got event 18 ef 02
[ 2226.913083] elantech: PS/2 packet [ 0x18 , 0xef , 0x02 , 0x18 , 0xf0 , 0x02
]
[ 2226.913194] nvec_ps2: got event 18 f0 02
[ 2226.924667] nvec_ps2: got event 18 ee 02
[ 2226.937733] elantech: PS/2 packet [ 0x18 , 0xee , 0x02 , 0x18 , 0xf1 , 0x00
]
[ 2226.937843] nvec_ps2: got event 18 f1 00
[ 2226.951434] nvec_ps2: got event 18 ee 01
[ 2226.962277] elantech: PS/2 packet [ 0x18 , 0xee , 0x01 , 0x18 , 0xf1 , 0x00
]
[ 2226.962388] nvec_ps2: got event 18 f1 00
[ 2226.974781] nvec_ps2: got event 18 f0 00
[ 2226.987177] elantech: PS/2 packet [ 0x18 , 0xf0 , 0x00 , 0x18 , 0xf7 , 0x01
]
[ 2226.987286] nvec_ps2: got event 18 f7 01
[ 2227.000963] nvec_ps2: got event 18 fb 00
[ 2227.012722] elantech: PS/2 packet [ 0x18 , 0xfb , 0x00 , 0x18 , 0xfe , 0x00
]
[ 2227.012832] nvec_ps2: got event 18 fe 00
[ 2227.025664] nvec_ps2: got event 18 ff 00
[ 2227.039411] elantech: PS/2 packet [ 0x18 , 0xff , 0x00 , 0x18 , 0xff , 0x00
]
[ 2227.039520] nvec_ps2: got event 18 ff 00
So AFAIK, this looks like mouse streaming proto. I disabled packet validity
checking to get this dump.
And finally, this is a special kernel version (chromeos kernel v2.6.38 with
elantech patches backported). I can test mainline also if required. Anything
more I can do to get it going?
Thanks
Marc
next reply other threads:[~2011-11-05 21:58 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-05 21:57 Marc Dietrich [this message]
2011-11-07 5:48 ` elantech touchpad problem (long) JJ Ding
2011-11-07 13:03 ` Marc Dietrich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6476830.8pz05UnHgs@ax5200p \
--to=marvin24@gmx.de \
--cc=E.A.B.Piel@tudelft.nl \
--cc=dmitry.torokhov@gmail.com \
--cc=jj_ding@emc.com.tw \
--cc=linux-input@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).