Merge tag 'wireless-2023-09-27' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-block.git] / Documentation / hid / hid-alps.rst
CommitLineData
cca47861 1==========================
2562756d 2ALPS HID Touchpad Protocol
cca47861 3==========================
2562756d
MO
4
5Introduction
6------------
7Currently ALPS HID driver supports U1 Touchpad device.
8
cca47861
MCC
9U1 device basic information.
10
11========== ======
2f7f4efb 12Vendor ID 0x044E
2562756d
MO
13Product ID 0x120B
14Version ID 0x0121
cca47861 15========== ======
2562756d
MO
16
17
18HID Descriptor
cca47861
MCC
19--------------
20
21======= ==================== ===== =======================================
2562756d 22Byte Field Value Notes
cca47861 23======= ==================== ===== =======================================
2562756d
MO
240 wHIDDescLength 001E Length of HID Descriptor : 30 bytes
252 bcdVersion 0100 Compliant with Version 1.00
264 wReportDescLength 00B2 Report Descriptor is 178 Bytes (0x00B2)
276 wReportDescRegister 0002 Identifier to read Report Descriptor
288 wInputRegister 0003 Identifier to read Input Report
2910 wMaxInputLength 0053 Input Report is 80 Bytes + 2
3012 wOutputRegister 0000 Identifier to read Output Report
3114 wMaxOutputLength 0000 No Output Reports
3216 wCommandRegister 0005 Identifier for Command Register
3318 wDataRegister 0006 Identifier for Data Register
3420 wVendorID 044E Vendor ID 0x044E
3522 wProductID 120B Product ID 0x120B
3624 wVersionID 0121 Version 01.21
3726 RESERVED 0000 RESERVED
cca47861 38======= ==================== ===== =======================================
2562756d
MO
39
40
41Report ID
cca47861
MCC
42---------
43
44========== ================= =========================================
45ReportID-1 (Input Reports) (HIDUsage-Mouse) for TP&SP
46ReportID-2 (Input Reports) (HIDUsage-keyboard) for TP
47ReportID-3 (Input Reports) (Vendor Usage: Max 10 finger data) for TP
48ReportID-4 (Input Reports) (Vendor Usage: ON bit data) for GP
49ReportID-5 (Feature Reports) Feature Reports
50ReportID-6 (Input Reports) (Vendor Usage: StickPointer data) for SP
51ReportID-7 (Feature Reports) Flash update (Bootloader)
52========== ================= =========================================
2562756d
MO
53
54
55Data pattern
56------------
cca47861
MCC
57
58===== ========== ===== =================
2562756d
MO
59Case1 ReportID_1 TP/SP Relative/Relative
60Case2 ReportID_3 TP Absolute
61 ReportID_6 SP Absolute
cca47861 62===== ========== ===== =================
2562756d
MO
63
64
65Command Read/Write
66------------------
e90d5df7 67To read/write to RAM, need to send a command to the device.
cca47861 68
2562756d
MO
69The command format is as below.
70
71DataByte(SET_REPORT)
cca47861
MCC
72
73===== ======================
2562756d
MO
74Byte1 Command Byte
75Byte2 Address - Byte 0 (LSB)
76Byte3 Address - Byte 1
77Byte4 Address - Byte 2
78Byte5 Address - Byte 3 (MSB)
79Byte6 Value Byte
80Byte7 Checksum
cca47861 81===== ======================
2562756d 82
e90d5df7 83Command Byte is read=0xD1/write=0xD2.
cca47861 84
2562756d 85Address is read/write RAM address.
cca47861 86
2562756d 87Value Byte is writing data when you send the write commands.
cca47861 88
2562756d
MO
89When you read RAM, there is no meaning.
90
91DataByte(GET_REPORT)
cca47861
MCC
92
93===== ======================
2562756d
MO
94Byte1 Response Byte
95Byte2 Address - Byte 0 (LSB)
96Byte3 Address - Byte 1
97Byte4 Address - Byte 2
98Byte5 Address - Byte 3 (MSB)
99Byte6 Value Byte
100Byte7 Checksum
cca47861 101===== ======================
2562756d
MO
102
103Read value is stored in Value Byte.
104
105
106Packet Format
107Touchpad data byte
108------------------
cca47861
MCC
109
110
111======= ======= ======= ======= ======= ======= ======= ======= =====
112- b7 b6 b5 b4 b3 b2 b1 b0
113======= ======= ======= ======= ======= ======= ======= ======= =====
2562756d
MO
1141 0 0 SW6 SW5 SW4 SW3 SW2 SW1
1152 0 0 0 Fcv Fn3 Fn2 Fn1 Fn0
1163 Xa0_7 Xa0_6 Xa0_5 Xa0_4 Xa0_3 Xa0_2 Xa0_1 Xa0_0
1174 Xa0_15 Xa0_14 Xa0_13 Xa0_12 Xa0_11 Xa0_10 Xa0_9 Xa0_8
1185 Ya0_7 Ya0_6 Ya0_5 Ya0_4 Ya0_3 Ya0_2 Ya0_1 Ya0_0
1196 Ya0_15 Ya0_14 Ya0_13 Ya0_12 Ya0_11 Ya0_10 Ya0_9 Ya0_8
1207 LFB0 Zs0_6 Zs0_5 Zs0_4 Zs0_3 Zs0_2 Zs0_1 Zs0_0
121
1228 Xa1_7 Xa1_6 Xa1_5 Xa1_4 Xa1_3 Xa1_2 Xa1_1 Xa1_0
1239 Xa1_15 Xa1_14 Xa1_13 Xa1_12 Xa1_11 Xa1_10 Xa1_9 Xa1_8
12410 Ya1_7 Ya1_6 Ya1_5 Ya1_4 Ya1_3 Ya1_2 Ya1_1 Ya1_0
12511 Ya1_15 Ya1_14 Ya1_13 Ya1_12 Ya1_11 Ya1_10 Ya1_9 Ya1_8
12612 LFB1 Zs1_6 Zs1_5 Zs1_4 Zs1_3 Zs1_2 Zs1_1 Zs1_0
127
12813 Xa2_7 Xa2_6 Xa2_5 Xa2_4 Xa2_3 Xa2_2 Xa2_1 Xa2_0
12914 Xa2_15 Xa2_14 Xa2_13 Xa2_12 Xa2_11 Xa2_10 Xa2_9 Xa2_8
13015 Ya2_7 Ya2_6 Ya2_5 Ya2_4 Ya2_3 Ya2_2 Ya2_1 Ya2_0
13116 Ya2_15 Ya2_14 Ya2_13 Ya2_12 Ya2_11 Ya2_10 Ya2_9 Ya2_8
13217 LFB2 Zs2_6 Zs2_5 Zs2_4 Zs2_3 Zs2_2 Zs2_1 Zs2_0
133
13418 Xa3_7 Xa3_6 Xa3_5 Xa3_4 Xa3_3 Xa3_2 Xa3_1 Xa3_0
13519 Xa3_15 Xa3_14 Xa3_13 Xa3_12 Xa3_11 Xa3_10 Xa3_9 Xa3_8
13620 Ya3_7 Ya3_6 Ya3_5 Ya3_4 Ya3_3 Ya3_2 Ya3_1 Ya3_0
13721 Ya3_15 Ya3_14 Ya3_13 Ya3_12 Ya3_11 Ya3_10 Ya3_9 Ya3_8
13822 LFB3 Zs3_6 Zs3_5 Zs3_4 Zs3_3 Zs3_2 Zs3_1 Zs3_0
139
14023 Xa4_7 Xa4_6 Xa4_5 Xa4_4 Xa4_3 Xa4_2 Xa4_1 Xa4_0
14124 Xa4_15 Xa4_14 Xa4_13 Xa4_12 Xa4_11 Xa4_10 Xa4_9 Xa4_8
14225 Ya4_7 Ya4_6 Ya4_5 Ya4_4 Ya4_3 Ya4_2 Ya4_1 Ya4_0
14326 Ya4_15 Ya4_14 Ya4_13 Ya4_12 Ya4_11 Ya4_10 Ya4_9 Ya4_8
14427 LFB4 Zs4_6 Zs4_5 Zs4_4 Zs4_3 Zs4_2 Zs4_1 Zs4_0
cca47861 145======= ======= ======= ======= ======= ======= ======= ======= =====
2562756d
MO
146
147
cca47861
MCC
148SW1-SW6:
149 SW ON/OFF status
150Xan_15-0(16bit):
151 X Absolute data of the "n"th finger
152Yan_15-0(16bit):
153 Y Absolute data of the "n"th finger
154Zsn_6-0(7bit):
155 Operation area of the "n"th finger
2562756d
MO
156
157
158StickPointer data byte
cca47861
MCC
159----------------------
160
161======= ======= ======= ======= ======= ======= ======= ======= =====
162- b7 b6 b5 b4 b3 b2 b1 b0
163======= ======= ======= ======= ======= ======= ======= ======= =====
2562756d
MO
164Byte1 1 1 1 0 1 SW3 SW2 SW1
165Byte2 X7 X6 X5 X4 X3 X2 X1 X0
166Byte3 X15 X14 X13 X12 X11 X10 X9 X8
167Byte4 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
168Byte5 Y15 Y14 Y13 Y12 Y11 Y10 Y9 Y8
169Byte6 Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0
170Byte7 T&P Z14 Z13 Z12 Z11 Z10 Z9 Z8
cca47861
MCC
171======= ======= ======= ======= ======= ======= ======= ======= =====
172
173SW1-SW3:
174 SW ON/OFF status
175Xn_15-0(16bit):
176 X Absolute data
177Yn_15-0(16bit):
178 Y Absolute data
179Zn_14-0(15bit):
180 Z