diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-24 14:58:49 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-24 14:58:49 -0400 |
| commit | 4637f40f200063973553ce3c4c1ac6c247e4535c (patch) | |
| tree | ff317a0dfb67cae313a208d120edd5102730044d | |
| parent | 5129df03d0c44b2d5a5f9d7d52f3b079706b9a8f (diff) | |
| parent | b73077eb03f510a84b102fb97640e595a958403c (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (40 commits)
Input: ADP5589 - new driver for I2C Keypad Decoder and I/O Expander
Input: tsc2007 - add X, Y and Z fuzz factors to platform data
Input: tsc2007 - add poll_period parameter to platform data
Input: tsc2007 - add poll_delay parameter to platform data
Input: tsc2007 - add max_rt parameter to platform data
Input: tsc2007 - debounce pressure measurement
Input: ad714x - fix captouch wheel option algorithm
Input: ad714x - allow platform code to specify irqflags
Input: ad714x - fix threshold and completion interrupt masks
Input: ad714x - fix up input configuration
Input: elantech - remove support for proprietary X driver
Input: elantech - report multitouch with proper ABS_MT messages
Input: elantech - export pressure and width when supported
Input: elantech - describe further the protocol
Input: atmel_tsadcc - correct call to input_free_device
Input: add driver FSL MPR121 capacitive touch sensor
Input: remove useless synchronize_rcu() calls
Input: ads7846 - fix gpio_pendown configuration
Input: ads7846 - add possibility to use external vref on ads7846
Input: rotary-encoder - add support for half-period encoders
...
38 files changed, 2155 insertions, 359 deletions
diff --git a/Documentation/input/elantech.txt b/Documentation/input/elantech.txt index 56941ae1f5db..db798af5ef98 100644 --- a/Documentation/input/elantech.txt +++ b/Documentation/input/elantech.txt | |||
| @@ -34,7 +34,8 @@ Contents | |||
| 34 | Currently the Linux Elantech touchpad driver is aware of two different | 34 | Currently the Linux Elantech touchpad driver is aware of two different |
| 35 | hardware versions unimaginatively called version 1 and version 2. Version 1 | 35 | hardware versions unimaginatively called version 1 and version 2. Version 1 |
| 36 | is found in "older" laptops and uses 4 bytes per packet. Version 2 seems to | 36 | is found in "older" laptops and uses 4 bytes per packet. Version 2 seems to |
| 37 | be introduced with the EeePC and uses 6 bytes per packet. | 37 | be introduced with the EeePC and uses 6 bytes per packet, and provides |
| 38 | additional features such as position of two fingers, and width of the touch. | ||
| 38 | 39 | ||
| 39 | The driver tries to support both hardware versions and should be compatible | 40 | The driver tries to support both hardware versions and should be compatible |
| 40 | with the Xorg Synaptics touchpad driver and its graphical configuration | 41 | with the Xorg Synaptics touchpad driver and its graphical configuration |
| @@ -94,18 +95,44 @@ Currently the Linux Elantech touchpad driver provides two extra knobs under | |||
| 94 | can check these bits and reject any packet that appears corrupted. Using | 95 | can check these bits and reject any packet that appears corrupted. Using |
| 95 | this knob you can bypass that check. | 96 | this knob you can bypass that check. |
| 96 | 97 | ||
| 97 | It is not known yet whether hardware version 2 provides the same parity | 98 | Hardware version 2 does not provide the same parity bits. Only some basic |
| 98 | bits. Hence checking is disabled by default. Currently even turning it on | 99 | data consistency checking can be done. For now checking is disabled by |
| 99 | will do nothing. | 100 | default. Currently even turning it on will do nothing. |
| 100 | |||
| 101 | 101 | ||
| 102 | ///////////////////////////////////////////////////////////////////////////// | 102 | ///////////////////////////////////////////////////////////////////////////// |
| 103 | 103 | ||
| 104 | 3. Differentiating hardware versions | ||
| 105 | ================================= | ||
| 106 | |||
| 107 | To detect the hardware version, read the version number as param[0].param[1].param[2] | ||
| 108 | |||
| 109 | 4 bytes version: (after the arrow is the name given in the Dell-provided driver) | ||
| 110 | 02.00.22 => EF013 | ||
| 111 | 02.06.00 => EF019 | ||
| 112 | In the wild, there appear to be more versions, such as 00.01.64, 01.00.21, | ||
| 113 | 02.00.00, 02.00.04, 02.00.06. | ||
| 114 | |||
| 115 | 6 bytes: | ||
| 116 | 02.00.30 => EF113 | ||
| 117 | 02.08.00 => EF023 | ||
| 118 | 02.08.XX => EF123 | ||
| 119 | 02.0B.00 => EF215 | ||
| 120 | 04.01.XX => Scroll_EF051 | ||
| 121 | 04.02.XX => EF051 | ||
| 122 | In the wild, there appear to be more versions, such as 04.03.01, 04.04.11. There | ||
| 123 | appears to be almost no difference, except for EF113, which does not report | ||
| 124 | pressure/width and has different data consistency checks. | ||
| 125 | |||
| 126 | Probably all the versions with param[0] <= 01 can be considered as | ||
| 127 | 4 bytes/firmware 1. The versions < 02.08.00, with the exception of 02.00.30, as | ||
| 128 | 4 bytes/firmware 2. Everything >= 02.08.00 can be considered as 6 bytes. | ||
| 129 | |||
| 130 | ///////////////////////////////////////////////////////////////////////////// | ||
| 104 | 131 | ||
| 105 | 3. Hardware version 1 | 132 | 4. Hardware version 1 |
| 106 | ================== | 133 | ================== |
| 107 | 134 | ||
| 108 | 3.1 Registers | 135 | 4.1 Registers |
| 109 | ~~~~~~~~~ | 136 | ~~~~~~~~~ |
| 110 | 137 | ||
| 111 | By echoing a hexadecimal value to a register it contents can be altered. | 138 | By echoing a hexadecimal value to a register it contents can be altered. |
| @@ -168,7 +195,7 @@ For example: | |||
| 168 | smart edge activation area width? | 195 | smart edge activation area width? |
| 169 | 196 | ||
| 170 | 197 | ||
| 171 | 3.2 Native relative mode 4 byte packet format | 198 | 4.2 Native relative mode 4 byte packet format |
| 172 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 199 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 173 | 200 | ||
| 174 | byte 0: | 201 | byte 0: |
| @@ -226,9 +253,13 @@ byte 3: | |||
| 226 | positive = down | 253 | positive = down |
| 227 | 254 | ||
| 228 | 255 | ||
| 229 | 3.3 Native absolute mode 4 byte packet format | 256 | 4.3 Native absolute mode 4 byte packet format |
| 230 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 257 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 231 | 258 | ||
| 259 | EF013 and EF019 have a special behaviour (due to a bug in the firmware?), and | ||
| 260 | when 1 finger is touching, the first 2 position reports must be discarded. | ||
| 261 | This counting is reset whenever a different number of fingers is reported. | ||
| 262 | |||
| 232 | byte 0: | 263 | byte 0: |
| 233 | firmware version 1.x: | 264 | firmware version 1.x: |
| 234 | 265 | ||
| @@ -279,11 +310,11 @@ byte 3: | |||
| 279 | ///////////////////////////////////////////////////////////////////////////// | 310 | ///////////////////////////////////////////////////////////////////////////// |
| 280 | 311 | ||
| 281 | 312 | ||
| 282 | 4. Hardware version 2 | 313 | 5. Hardware version 2 |
| 283 | ================== | 314 | ================== |
| 284 | 315 | ||
| 285 | 316 | ||
| 286 | 4.1 Registers | 317 | 5.1 Registers |
| 287 | ~~~~~~~~~ | 318 | ~~~~~~~~~ |
| 288 | 319 | ||
| 289 | By echoing a hexadecimal value to a register it contents can be altered. | 320 | By echoing a hexadecimal value to a register it contents can be altered. |
| @@ -316,16 +347,41 @@ For example: | |||
| 316 | 0x7f = never i.e. tap again to release) | 347 | 0x7f = never i.e. tap again to release) |
| 317 | 348 | ||
| 318 | 349 | ||
| 319 | 4.2 Native absolute mode 6 byte packet format | 350 | 5.2 Native absolute mode 6 byte packet format |
| 320 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 351 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 321 | 352 | 5.2.1 Parity checking and packet re-synchronization | |
| 322 | 4.2.1 One finger touch | ||
