Seth Forshee | d4b347b | 2011-11-07 19:53:15 -0800 | [diff] [blame^] | 1 | ALPS Touchpad Protocol |
| 2 | ---------------------- |
| 3 | |
| 4 | Introduction |
| 5 | ------------ |
| 6 | |
| 7 | Currently the ALPS touchpad driver supports two protocol versions in use by |
| 8 | ALPS touchpads, the "old" and "new" protocol versions. Fundamentally these |
| 9 | differ only in the format of their event packets (in reality many features may |
| 10 | be found on new protocol devices that aren't found on the old protocol |
| 11 | devices, but these are handled transparently as feature differences rather |
| 12 | than protocol differences). |
| 13 | |
| 14 | Detection |
| 15 | --------- |
| 16 | |
| 17 | All ALPS touchpads should respond to the "E6 report" command sequence: |
| 18 | E8-E6-E6-E6-E9. An ALPS touchpad should respond with either 00-00-0A or |
| 19 | 00-00-64. |
| 20 | |
| 21 | If the E6 report is successful, the touchpad model is identified using the "E7 |
| 22 | report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is |
| 23 | matched against known models in the alps_model_data_array. |
| 24 | |
| 25 | Packet Format |
| 26 | ------------- |
| 27 | |
| 28 | In the following tables, the following notation us used. |
| 29 | |
| 30 | CAPITALS = stick, miniscules = touchpad |
| 31 | |
| 32 | ?'s can have different meanings on different models, such as wheel rotation, |
| 33 | extra buttons, stick buttons on a dualpoint, etc. |
| 34 | |
| 35 | PS/2 packet format |
| 36 | ------------------ |
| 37 | |
| 38 | byte 0: 0 0 YSGN XSGN 1 M R L |
| 39 | byte 1: X7 X6 X5 X4 X3 X2 X1 X0 |
| 40 | byte 2: Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 |
| 41 | |
| 42 | Note that the device never signals overflow condition. |
| 43 | |
| 44 | ALPS Absolute Mode - Old Format |
| 45 | ------------------------------- |
| 46 | |
| 47 | byte 0: 1 0 0 0 1 x9 x8 x7 |
| 48 | byte 1: 0 x6 x5 x4 x3 x2 x1 x0 |
| 49 | byte 2: 0 ? ? l r ? fin ges |
| 50 | byte 3: 0 ? ? ? ? y9 y8 y7 |
| 51 | byte 4: 0 y6 y5 y4 y3 y2 y1 y0 |
| 52 | byte 5: 0 z6 z5 z4 z3 z2 z1 z0 |
| 53 | |
| 54 | ALPS Absolute Mode - New Format |
| 55 | ------------------------------- |
| 56 | |
| 57 | byte 0: 1 ? ? ? 1 ? ? ? |
| 58 | byte 1: 0 x6 x5 x4 x3 x2 x1 x0 |
| 59 | byte 2: 0 x10 x9 x8 x7 ? fin ges |
| 60 | byte 3: 0 y9 y8 y7 1 M R L |
| 61 | byte 4: 0 y6 y5 y4 y3 y2 y1 y0 |
| 62 | byte 5: 0 z6 z5 z4 z3 z2 z1 z0 |
| 63 | |
| 64 | Dualpoint device -- interleaved packet format |
| 65 | --------------------------------------------- |
| 66 | |
| 67 | byte 0: 1 1 0 0 1 1 1 1 |
| 68 | byte 1: 0 x6 x5 x4 x3 x2 x1 x0 |
| 69 | byte 2: 0 x10 x9 x8 x7 0 fin ges |
| 70 | byte 3: 0 0 YSGN XSGN 1 1 1 1 |
| 71 | byte 4: X7 X6 X5 X4 X3 X2 X1 X0 |
| 72 | byte 5: Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 |
| 73 | byte 6: 0 y9 y8 y7 1 m r l |
| 74 | byte 7: 0 y6 y5 y4 y3 y2 y1 y0 |
| 75 | byte 8: 0 z6 z5 z4 z3 z2 z1 z0 |