diff options
| -rw-r--r-- | Documentation/input/elantech.txt | 81 |
1 files changed, 75 insertions, 6 deletions
diff --git a/Documentation/input/elantech.txt b/Documentation/input/elantech.txt index e1ae127ed099..1ec0db7879d3 100644 --- a/Documentation/input/elantech.txt +++ b/Documentation/input/elantech.txt | |||
| @@ -38,22 +38,38 @@ Contents | |||
| 38 | 7.2.1 Status packet | 38 | 7.2.1 Status packet |
| 39 | 7.2.2 Head packet | 39 | 7.2.2 Head packet |
| 40 | 7.2.3 Motion packet | 40 | 7.2.3 Motion packet |
| 41 | 8. Trackpoint (for Hardware version 3 and 4) | ||
| 42 | 8.1 Registers | ||
| 43 | 8.2 Native relative mode 6 byte packet format | ||
| 44 | 8.2.1 Status Packet | ||
| 41 | 45 | ||
| 42 | 46 | ||
| 43 | 47 | ||
| 44 | 1. Introduction | 48 | 1. Introduction |
| 45 | ~~~~~~~~~~~~ | 49 | ~~~~~~~~~~~~ |
| 46 | 50 | ||
| 47 | Currently the Linux Elantech touchpad driver is aware of two different | 51 | Currently the Linux Elantech touchpad driver is aware of four different |
| 48 | hardware versions unimaginatively called version 1 and version 2. Version 1 | 52 | hardware versions unimaginatively called version 1,version 2, version 3 |
| 49 | is found in "older" laptops and uses 4 bytes per packet. Version 2 seems to | 53 | and version 4. Version 1 is found in "older" laptops and uses 4 bytes per |
| 50 | be introduced with the EeePC and uses 6 bytes per packet, and provides | 54 | packet. Version 2 seems to be introduced with the EeePC and uses 6 bytes |
| 51 | additional features such as position of two fingers, and width of the touch. | 55 | per packet, and provides additional features such as position of two fingers, |
| 56 | and width of the touch. Hardware version 3 uses 6 bytes per packet (and | ||
| 57 | for 2 fingers the concatenation of two 6 bytes packets) and allows tracking | ||
| 58 | of up to 3 fingers. Hardware version 4 uses 6 bytes per packet, and can | ||
| 59 | combine a status packet with multiple head or motion packets. Hardware version | ||
| 60 | 4 allows tracking up to 5 fingers. | ||
| 61 | |||
| 62 | Some Hardware version 3 and version 4 also have a trackpoint which uses a | ||
| 63 | separate packet format. It is also 6 bytes per packet. | ||
| 52 | 64 | ||
| 53 | The driver tries to support both hardware versions and should be compatible | 65 | The driver tries to support both hardware versions and should be compatible |
| 54 | with the Xorg Synaptics touchpad driver and its graphical configuration | 66 | with the Xorg Synaptics touchpad driver and its graphical configuration |
| 55 | utilities. | 67 | utilities. |
| 56 | 68 | ||
| 69 | Note that a mouse button is also associated with either the touchpad or the | ||
| 70 | trackpoint when a trackpoint is available. Disabling the Touchpad in xorg | ||
| 71 | (TouchPadOff=0) will also disable the buttons associated with the touchpad. | ||
| 72 | |||
| 57 | Additionally the operation of the touchpad can be altered by adjusting the | 73 | Additionally the operation of the touchpad can be altered by adjusting the |
| 58 | contents of some of its internal registers. These registers are represented | 74 | contents of some of its internal registers. These registers are represented |
| 59 | by the driver as sysfs entries under /sys/bus/serio/drivers/psmouse/serio? | 75 | by the driver as sysfs entries under /sys/bus/serio/drivers/psmouse/serio? |
| @@ -78,7 +94,7 @@ completeness sake. | |||
| 78 | 2. Extra knobs | 94 | 2. Extra knobs |
| 79 | ~~~~~~~~~~~ | 95 | ~~~~~~~~~~~ |
| 80 | 96 | ||
| 81 | Currently the Linux Elantech touchpad driver provides two extra knobs under | 97 | Currently the Linux Elantech touchpad driver provides three extra knobs under |
| 82 | /sys/bus/serio/drivers/psmouse/serio? for the user. | 98 | /sys/bus/serio/drivers/psmouse/serio? for the user. |
| 83 | 99 | ||
| 84 | * debug | 100 | * debug |
| @@ -112,6 +128,20 @@ Currently the Linux Elantech touchpad driver provides two extra knobs under | |||
| 112 | data consistency checking can be done. For now checking is disabled by | 128 | data consistency checking can be done. For now checking is disabled by |
| 113 | default. Currently even turning it on will do nothing. | 129 | default. Currently even turning it on will do nothing. |
| 114 | 130 | ||
| 131 | * crc_enabled | ||
| 132 | |||
| 133 | Sets crc_enabled to 0/1. The name "crc_enabled" is the official name of | ||
| 134 | this integrity check, even though it is not an actual cyclic redundancy | ||
| 135 | check. | ||
| 136 | |||
| 137 | Depending on the state of crc_enabled, certain basic data integrity | ||
| 138 | verification is done by the driver on hardware version 3 and 4. The | ||
| 139 | driver will reject any packet that appears corrupted. Using this knob, | ||
| 140 | The state of crc_enabled can be altered with this knob. | ||
| 141 | |||
| 142 | Reading the crc_enabled value will show the active value. Echoing | ||
| 143 | "0" or "1" to this file will set the state to "0" or "1". | ||
| 144 | |||
| 115 | ///////////////////////////////////////////////////////////////////////////// | 145 | ///////////////////////////////////////////////////////////////////////////// |
| 116 | 146 | ||
| 117 | 3. Differentiating hardware versions | 147 | 3. Differentiating hardware versions |
| @@ -746,3 +776,42 @@ byte 5: | |||
| 746 | 776 | ||
| 747 | byte 0 ~ 2 for one finger | 777 | byte 0 ~ 2 for one finger |
| 748 | byte 3 ~ 5 for another | 778 | byte 3 ~ 5 for another |
| 779 | |||
| 780 | |||
| 781 | 8. Trackpoint (for Hardware version 3 and 4) | ||
| 782 | ========================================= | ||
| 783 | 8.1 Registers | ||
| 784 | ~~~~~~~~~ | ||
| 785 | No special registers have been identified. | ||
| 786 | |||
| 787 | 8.2 Native relative mode 6 byte packet format | ||
| 788 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| 789 | 8.2.1 Status Packet | ||
| 790 | ~~~~~~~~~~~~~ | ||
| 791 | |||
| 792 | byte 0: | ||
| 793 | bit 7 6 5 4 3 2 1 0 | ||
| 794 | 0 0 sx sy 0 M R L | ||
| 795 | byte 1: | ||
| 796 | bit 7 6 5 4 3 2 1 0 | ||
| 797 | ~sx 0 0 0 0 0 0 0 | ||
| 798 | byte 2: | ||
| 799 | bit 7 6 5 4 3 2 1 0 | ||
| 800 | ~sy 0 0 0 0 0 0 0 | ||
| 801 | byte 3: | ||
| 802 | bit 7 6 5 4 3 2 1 0 | ||
| 803 | 0 0 ~sy ~sx 0 1 1 0 | ||
| 804 | byte 4: | ||
| 805 | bit 7 6 5 4 3 2 1 0 | ||
| 806 | x7 x6 x5 x4 x3 x2 x1 x0 | ||
| 807 | byte 5: | ||
| 808 | bit 7 6 5 4 3 2 1 0 | ||
| 809 | y7 y6 y5 y4 y3 y2 y1 y0 | ||
| 810 | |||
| 811 | |||
| 812 | x and y are written in two's complement spread | ||
| 813 | over 9 bits with sx/sy the relative top bit and | ||
| 814 | x7..x0 and y7..y0 the lower bits. | ||
| 815 | ~sx is the inverse of sx, ~sy is the inverse of sy. | ||
| 816 | The sign of y is opposite to what the input driver | ||
| 817 | expects for a relative movement | ||
