Introduction
------------
-
- Currently the ALPS touchpad driver supports four protocol versions in use by
- ALPS touchpads, called versions 1, 2, 3, and 4. Information about the various
- protocol versions is contained in the following sections.
+ Currently the ALPS touchpad driver supports five protocol versions in use by
+ ALPS touchpads, called versions 1, 2, 3, 4 and 5.
+
+ Since roughly mid-2010 several new ALPS touchpads have been released and
+ integrated into a variety of laptops and netbooks. These new touchpads
+ have enough behavior differences that the alps_model_data definition
+ table, describing the properties of the different versions, is no longer
+ adequate. The design choices were to re-define the alps_model_data
+ table, with the risk of regression testing existing devices, or isolate
+ the new devices outside of the alps_model_data table. The latter design
+ choice was made. The new touchpad signatures are named: "Rushmore",
+ "Pinnacle", and "Dolphin", which you will see in the alps.c code.
+ For the purposes of this document, this group of ALPS touchpads will
+ generically be called "new ALPS touchpads".
+
+ We experimented with probing the ACPI interface _HID (Hardware ID)/_CID
+ (Compatibility ID) definition as a way to uniquely identify the
+ different ALPS variants but there did not appear to be a 1:1 mapping.
+ In fact, it appeared to be an m:n mapping between the _HID and actual
+ hardware type.
Detection
---------
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.
- With protocol versions 3 and 4, the E7 report model signature is always
- 73-02-64. To differentiate between these versions, the response from the
- "Enter Command Mode" sequence must be inspected as described below.
+ For older touchpads supporting protocol versions 3 and 4, the E7 report
+ model signature is always 73-02-64. To differentiate between these
+ versions, the response from the "Enter Command Mode" sequence must be
+ inspected as described below.
+
+ The new ALPS touchpads have an E7 signature of 73-03-50 or 73-03-0A but
+ seem to be better differentiated by the EC Command Mode response.
Command Mode
------------
register. Registers are written by writing the value one nibble at a time
using the same encoding used for addresses.
+ For the new ALPS touchpads, the EC command is used to enter command
+ mode. The response in the new ALPS touchpads is significantly different,
+ and more important in determining the behavior. This code has been
+ separated from the original alps_model_data table and put in the
+ alps_identify function. For example, there seem to be two hardware init
+ sequences for the "Dolphin" touchpads as determined by the second byte
+ of the EC response.
+
Packet Format
-------------
This packet only appears after a position packet with the mt bit set, and
usually only appears when there are two or more contacts (although
-occassionally it's seen with only a single contact).
+occasionally it's seen with only a single contact).
The final v3 packet type is the trackstick packet.
well.
So far no v4 devices with tracksticks have been encountered.
+
+ ALPS Absolute Mode - Protocol Version 5
+ ---------------------------------------
+ This is basically Protocol Version 3 but with different logic for packet
+ decode. It uses the same alps_process_touchpad_packet_v3 call with a
+ specialized decode_fields function pointer to correctly interpret the
+ packets. This appears to only be used by the Dolphin devices.
+
+ For single-touch, the 6-byte packet format is:
+
+ byte 0: 1 1 0 0 1 0 0 0
+ byte 1: 0 x6 x5 x4 x3 x2 x1 x0
+ byte 2: 0 y6 y5 y4 y3 y2 y1 y0
+ byte 3: 0 M R L 1 m r l
+ byte 4: y10 y9 y8 y7 x10 x9 x8 x7
+ byte 5: 0 z6 z5 z4 z3 z2 z1 z0
+
+ For mt, the format is:
+
+ byte 0: 1 1 1 n3 1 n2 n1 x24
+ byte 1: 1 y7 y6 y5 y4 y3 y2 y1
+ byte 2: ? x2 x1 y12 y11 y10 y9 y8
+ byte 3: 0 x23 x22 x21 x20 x19 x18 x17
+ byte 4: 0 x9 x8 x7 x6 x5 x4 x3
+ byte 5: 0 x16 x15 x14 x13 x12 x11 x10