mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 06:10:56 +00:00
Input: ALPS - move protocol information to Documentation
In preparation for new protocol support, move the protocol information currently documented in alps.c to Documentation/input/alps.txt, where it can be expanded without cluttering up the driver. Signed-off-by: Seth Forshee <seth.forshee@canonical.com> Acked-by: Chase Douglas <chase.douglas@canonical.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
5a6c865d98
commit
d4b347b29b
2 changed files with 76 additions and 36 deletions
75
Documentation/input/alps.txt
Normal file
75
Documentation/input/alps.txt
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
ALPS Touchpad Protocol
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
Currently the ALPS touchpad driver supports two protocol versions in use by
|
||||||
|
ALPS touchpads, the "old" and "new" protocol versions. Fundamentally these
|
||||||
|
differ only in the format of their event packets (in reality many features may
|
||||||
|
be found on new protocol devices that aren't found on the old protocol
|
||||||
|
devices, but these are handled transparently as feature differences rather
|
||||||
|
than protocol differences).
|
||||||
|
|
||||||
|
Detection
|
||||||
|
---------
|
||||||
|
|
||||||
|
All ALPS touchpads should respond to the "E6 report" command sequence:
|
||||||
|
E8-E6-E6-E6-E9. An ALPS touchpad should respond with either 00-00-0A or
|
||||||
|
00-00-64.
|
||||||
|
|
||||||
|
If the E6 report is successful, the touchpad model is identified using the "E7
|
||||||
|
report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is
|
||||||
|
matched against known models in the alps_model_data_array.
|
||||||
|
|
||||||
|
Packet Format
|
||||||
|
-------------
|
||||||
|
|
||||||
|
In the following tables, the following notation us used.
|
||||||
|
|
||||||
|
CAPITALS = stick, miniscules = touchpad
|
||||||
|
|
||||||
|
?'s can have different meanings on different models, such as wheel rotation,
|
||||||
|
extra buttons, stick buttons on a dualpoint, etc.
|
||||||
|
|
||||||
|
PS/2 packet format
|
||||||
|
------------------
|
||||||
|
|
||||||
|
byte 0: 0 0 YSGN XSGN 1 M R L
|
||||||
|
byte 1: X7 X6 X5 X4 X3 X2 X1 X0
|
||||||
|
byte 2: Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
|
||||||
|
|
||||||
|
Note that the device never signals overflow condition.
|
||||||
|
|
||||||
|
ALPS Absolute Mode - Old Format
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
byte 0: 1 0 0 0 1 x9 x8 x7
|
||||||
|
byte 1: 0 x6 x5 x4 x3 x2 x1 x0
|
||||||
|
byte 2: 0 ? ? l r ? fin ges
|
||||||
|
byte 3: 0 ? ? ? ? y9 y8 y7
|
||||||
|
byte 4: 0 y6 y5 y4 y3 y2 y1 y0
|
||||||
|
byte 5: 0 z6 z5 z4 z3 z2 z1 z0
|
||||||
|
|
||||||
|
ALPS Absolute Mode - New Format
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
byte 0: 1 ? ? ? 1 ? ? ?
|
||||||
|
byte 1: 0 x6 x5 x4 x3 x2 x1 x0
|
||||||
|
byte 2: 0 x10 x9 x8 x7 ? fin ges
|
||||||
|
byte 3: 0 y9 y8 y7 1 M R L
|
||||||
|
byte 4: 0 y6 y5 y4 y3 y2 y1 y0
|
||||||
|
byte 5: 0 z6 z5 z4 z3 z2 z1 z0
|
||||||
|
|
||||||
|
Dualpoint device -- interleaved packet format
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
byte 0: 1 1 0 0 1 1 1 1
|
||||||
|
byte 1: 0 x6 x5 x4 x3 x2 x1 x0
|
||||||
|
byte 2: 0 x10 x9 x8 x7 0 fin ges
|
||||||
|
byte 3: 0 0 YSGN XSGN 1 1 1 1
|
||||||
|
byte 4: X7 X6 X5 X4 X3 X2 X1 X0
|
||||||
|
byte 5: Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
|
||||||
|
byte 6: 0 y9 y8 y7 1 m r l
|
||||||
|
byte 7: 0 y6 y5 y4 y3 y2 y1 y0
|
||||||
|
byte 8: 0 z6 z5 z4 z3 z2 z1 z0
|
|
@ -67,42 +67,7 @@ static const struct alps_model_info alps_model_data[] = {
|
||||||
* isn't valid per PS/2 spec.
|
* isn't valid per PS/2 spec.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/* Packet formats are described in Documentation/input/alps.txt */
|
||||||
* PS/2 packet format
|
|
||||||
*
|
|
||||||
* byte 0: 0 0 YSGN XSGN 1 M R L
|
|
||||||
* byte 1: X7 X6 X5 X4 X3 X2 X1 X0
|
|
||||||
* byte 2: Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
|
|
||||||
*
|
|
||||||
* Note that the device never signals overflow condition.
|
|
||||||
*
|
|
||||||
* ALPS absolute Mode - new format
|
|
||||||
*
|
|
||||||
* byte 0: 1 ? ? ? 1 ? ? ?
|
|
||||||
* byte 1: 0 x6 x5 x4 x3 x2 x1 x0
|
|
||||||
* byte 2: 0 x10 x9 x8 x7 ? fin ges
|
|
||||||
* byte 3: 0 y9 y8 y7 1 M R L
|
|
||||||
* byte 4: 0 y6 y5 y4 y3 y2 y1 y0
|
|
||||||
* byte 5: 0 z6 z5 z4 z3 z2 z1 z0
|
|
||||||
*
|
|
||||||
* Dualpoint device -- interleaved packet format
|
|
||||||
*
|
|
||||||
* byte 0: 1 1 0 0 1 1 1 1
|
|
||||||
* byte 1: 0 x6 x5 x4 x3 x2 x1 x0
|
|
||||||
* byte 2: 0 x10 x9 x8 x7 0 fin ges
|
|
||||||
* byte 3: 0 0 YSGN XSGN 1 1 1 1
|
|
||||||
* byte 4: X7 X6 X5 X4 X3 X2 X1 X0
|
|
||||||
* byte 5: Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
|
|
||||||
* byte 6: 0 y9 y8 y7 1 m r l
|
|
||||||
* byte 7: 0 y6 y5 y4 y3 y2 y1 y0
|
|
||||||
* byte 8: 0 z6 z5 z4 z3 z2 z1 z0
|
|
||||||
*
|
|
||||||
* CAPITALS = stick, miniscules = touchpad
|
|
||||||
*
|
|
||||||
* ?'s can have different meanings on different models,
|
|
||||||
* such as wheel rotation, extra buttons, stick buttons
|
|
||||||
* on a dualpoint, etc.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static bool alps_is_valid_first_byte(const struct alps_model_info *model,
|
static bool alps_is_valid_first_byte(const struct alps_model_info *model,
|
||||||
unsigned char data)
|
unsigned char data)
|
||||||
|
|
Loading…
Reference in a new issue