aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/input/elantech.txt
diff options
context:
space:
mode:
authorJJ Ding <jj_ding@emc.com.tw>2011-09-09 13:30:31 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2011-09-09 13:34:58 -0400
commit28f49616113f3a1fbef789319bfd2122d0c3663f (patch)
tree5f0dba8f912dfcd19c0457bc4b2c8c3a823f9757 /Documentation/input/elantech.txt
parent3c8bbb951ab23dc1192473ccad76cde89c172d27 (diff)
Input: elantech - add v3 hardware support
v3 hardware's packet format is almost identical to v2 (one/three finger touch), except when sensing two finger touch, the hardware sends 12 bytes of data. Signed-off-by: JJ Ding <jj_ding@emc.com.tw> Acked-by: Daniel Kurtz <djkurtz@chromium.org> Acked-by: Éric Piel <eric.piel@tremplin-utc.net> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'Documentation/input/elantech.txt')
-rw-r--r--Documentation/input/elantech.txt117
1 files changed, 105 insertions, 12 deletions
diff --git a/Documentation/input/elantech.txt b/Documentation/input/elantech.txt
index bce9941ffa94..cee08eecda43 100644
--- a/Documentation/input/elantech.txt
+++ b/Documentation/input/elantech.txt
@@ -16,15 +16,22 @@ Contents
16 16
17 1. Introduction 17 1. Introduction
18 2. Extra knobs 18 2. Extra knobs
19 3. Hardware version 1 19 3. Differentiating hardware versions
20 3.1 Registers 20 4. Hardware version 1
21 3.2 Native relative mode 4 byte packet format
22 3.3 Native absolute mode 4 byte packet format
23 4. Hardware version 2
24 4.1 Registers 21 4.1 Registers
25 4.2 Native absolute mode 6 byte packet format 22 4.2 Native relative mode 4 byte packet format
26 4.2.1 One finger touch 23 4.3 Native absolute mode 4 byte packet format
27 4.2.2 Two finger touch 24 5. Hardware version 2
25 5.1 Registers
26 5.2 Native absolute mode 6 byte packet format
27 5.2.1 Parity checking and packet re-synchronization
28 5.2.2 One/Three finger touch
29 5.2.3 Two finger touch
30 6. Hardware version 3
31 6.1 Registers
32 6.2 Native absolute mode 6 byte packet format
33 6.2.1 One/Three finger touch
34 6.2.2 Two finger touch
28 35
29 36
30 37
@@ -375,7 +382,7 @@ For all the other ones, there are just a few constant bits:
375 382
376In case an error is detected, all the packets are shifted by one (and packet[0] is discarded). 383In case an error is detected, all the packets are shifted by one (and packet[0] is discarded).
377 384
3785.2.1 One/Three finger touch 3855.2.2 One/Three finger touch
379 ~~~~~~~~~~~~~~~~ 386 ~~~~~~~~~~~~~~~~
380 387
381byte 0: 388byte 0:
@@ -384,7 +391,7 @@ byte 0:
384 n1 n0 w3 w2 . . R L 391 n1 n0 w3 w2 . . R L
385 392
386 L, R = 1 when Left, Right mouse button pressed 393 L, R = 1 when Left, Right mouse button pressed
387 n1..n0 = numbers of fingers on touchpad 394 n1..n0 = number of fingers on touchpad
388 395
389byte 1: 396byte 1:
390 397
@@ -432,7 +439,7 @@ byte 5:
432 y11..y0 = absolute y value (vertical) 439 y11..y0 = absolute y value (vertical)
433 440
434 441
4354.2.2 Two finger touch 4425.2.3 Two finger touch
436 ~~~~~~~~~~~~~~~~ 443 ~~~~~~~~~~~~~~~~
437 444
438Note that the two pairs of coordinates are not exactly the coordinates of the 445Note that the two pairs of coordinates are not exactly the coordinates of the
@@ -446,7 +453,7 @@ byte 0:
446 n1 n0 ay8 ax8 . . R L 453 n1 n0 ay8 ax8 . . R L
447 454
448 L, R = 1 when Left, Right mouse button pressed 455 L, R = 1 when Left, Right mouse button pressed
449 n1..n0 = numbers of fingers on touchpad 456 n1..n0 = number of fingers on touchpad
450 457
451byte 1: 458byte 1:
452 459
@@ -480,3 +487,89 @@ byte 5:
480 by7 by8 by5 by4 by3 by2 by1 by0 487 by7 by8 by5 by4 by3 by2 by1 by0
481 488
482 by8..by0 = upper-right finger absolute y value 489 by8..by0 = upper-right finger absolute y value
490
491/////////////////////////////////////////////////////////////////////////////
492
4936. Hardware version 3
494 ==================
495
4966.1 Registers
497 ~~~~~~~~~
498* reg_10
499
500 bit 7 6 5 4 3 2 1 0
501 0 0 0 0 0 0 0 A
502
503 A: 1 = enable absolute tracking
504
5056.2 Native absolute mode 6 byte packet format
506 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5071 and 3 finger touch shares the same 6-byte packet format, except that
5083 finger touch only reports the position of the center of all three fingers.
509
510Firmware would send 12 bytes of data for 2 finger touch.
511
512Note on debounce:
513In case the box has unstable power supply or other electricity issues, or
514when number of finger changes, F/W would send "debounce packet" to inform
515driver that the hardware is in debounce status.
516The debouce packet has the following signature:
517 byte 0: 0xc4
518 byte 1: 0xff
519 byte 2: 0xff
520 byte 3: 0x02
521 byte 4: 0xff
522 byte 5: 0xff
523When we encounter this kind of packet, we just ignore it.
524
5256.2.1 One/Three finger touch
526 ~~~~~~~~~~~~~~~~~~~~~~
527
528byte 0:
529
530 bit 7 6 5 4 3 2 1 0
531 n1 n0 w3 w2 0 1 R L
532
533 L, R = 1 when Left, Right mouse button pressed
534 n1..n0 = number of fingers on touchpad
535
536byte 1:
537
538 bit 7 6 5 4 3 2 1 0
539 p7 p6 p5 p4 x11 x10 x9 x8
540
541byte 2:
542
543 bit 7 6 5 4 3 2 1 0
544 x7 x6 x5 x4 x3 x2 x1 x0
545
546 x11..x0 = absolute x value (horizontal)
547
548byte 3:
549
550 bit 7 6 5 4 3 2 1 0
551 0 0 w1 w0 0 0 1 0
552
553 w3..w0 = width of the finger touch
554
555byte 4:
556
557 bit 7 6 5 4 3 2 1 0
558 p3 p1 p2 p0 y11 y10 y9 y8
559
560 p7..p0 = pressure
561
562byte 5:
563
564 bit 7 6 5 4 3 2 1 0
565 y7 y6 y5 y4 y3 y2 y1 y0
566
567 y11..y0 = absolute y value (vertical)
568
5696.2.2 Two finger touch
570 ~~~~~~~~~~~~~~~~
571
572The packet format is exactly the same for two finger touch, except the hardware
573sends two 6 byte packets. The first packet contains data for the first finger,
574the second packet has data for the second finger. So for two finger touch a
575total of 12 bytes are sent.