blob: b2ef125b71f80abfd064b59d407d64a9d7fac7fe [file] [log] [blame]
Tai-hwa Liang3920ab02010-01-13 00:22:29 -08001Copyright (C) 2002-2010 Sentelic Corporation.
2Last update: Jan-13-2010
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -07003
4==============================================================================
5* Finger Sensing Pad Intellimouse Mode(scrolling wheel, 4th and 5th buttons)
6==============================================================================
7A) MSID 4: Scrolling wheel mode plus Forward page(4th button) and Backward
8 page (5th button)
9@1. Set sample rate to 200;
10@2. Set sample rate to 200;
11@3. Set sample rate to 80;
12@4. Issuing the "Get device ID" command (0xF2) and waits for the response;
13@5. FSP will respond 0x04.
14
15Packet 1
16 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
17BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
18 1 |Y|X|y|x|1|M|R|L| 2 |X|X|X|X|X|X|X|X| 3 |Y|Y|Y|Y|Y|Y|Y|Y| 4 | | |B|F|W|W|W|W|
19 |---------------| |---------------| |---------------| |---------------|
20
21Byte 1: Bit7 => Y overflow
22 Bit6 => X overflow
23 Bit5 => Y sign bit
24 Bit4 => X sign bit
25 Bit3 => 1
26 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
27 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
28 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
29Byte 2: X Movement(9-bit 2's complement integers)
30Byte 3: Y Movement(9-bit 2's complement integers)
31Byte 4: Bit3~Bit0 => the scrolling wheel's movement since the last data report.
32 valid values, -8 ~ +7
33 Bit4 => 1 = 4th mouse button is pressed, Forward one page.
34 0 = 4th mouse button is not pressed.
35 Bit5 => 1 = 5th mouse button is pressed, Backward one page.
36 0 = 5th mouse button is not pressed.
37
38B) MSID 6: Horizontal and Vertical scrolling.
39@ Set bit 1 in register 0x40 to 1
40
41# FSP replaces scrolling wheel's movement as 4 bits to show horizontal and
42 vertical scrolling.
43
44Packet 1
45 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
46BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
Tai-hwa Liang3920ab02010-01-13 00:22:29 -080047 1 |Y|X|y|x|1|M|R|L| 2 |X|X|X|X|X|X|X|X| 3 |Y|Y|Y|Y|Y|Y|Y|Y| 4 | | |B|F|r|l|u|d|
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -070048 |---------------| |---------------| |---------------| |---------------|
49
50Byte 1: Bit7 => Y overflow
51 Bit6 => X overflow
52 Bit5 => Y sign bit
53 Bit4 => X sign bit
54 Bit3 => 1
55 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
56 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
57 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
58Byte 2: X Movement(9-bit 2's complement integers)
59Byte 3: Y Movement(9-bit 2's complement integers)
60Byte 4: Bit0 => the Vertical scrolling movement downward.
61 Bit1 => the Vertical scrolling movement upward.
Tai-hwa Liang3920ab02010-01-13 00:22:29 -080062 Bit2 => the Horizontal scrolling movement leftward.
63 Bit3 => the Horizontal scrolling movement rightward.
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -070064 Bit4 => 1 = 4th mouse button is pressed, Forward one page.
65 0 = 4th mouse button is not pressed.
66 Bit5 => 1 = 5th mouse button is pressed, Backward one page.
67 0 = 5th mouse button is not pressed.
68
69C) MSID 7:
Tai-hwa Liang3920ab02010-01-13 00:22:29 -080070# FSP uses 2 packets (8 Bytes) to represent Absolute Position.
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -070071 so we have PACKET NUMBER to identify packets.
72 If PACKET NUMBER is 0, the packet is Packet 1.
73 If PACKET NUMBER is 1, the packet is Packet 2.
74 Please count this number in program.
75
76# MSID6 special packet will be enable at the same time when enable MSID 7.
77
78==============================================================================
79* Absolute position for STL3886-G0.
80==============================================================================
81@ Set bit 2 or 3 in register 0x40 to 1
82@ Set bit 6 in register 0x40 to 1
83
84Packet 1 (ABSOLUTE POSITION)
85 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
86BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
87 1 |0|1|V|1|1|M|R|L| 2 |X|X|X|X|X|X|X|X| 3 |Y|Y|Y|Y|Y|Y|Y|Y| 4 |r|l|d|u|X|X|Y|Y|
88 |---------------| |---------------| |---------------| |---------------|
89
90Byte 1: Bit7~Bit6 => 00, Normal data packet
91 => 01, Absolute coordination packet
92 => 10, Notify packet
93 Bit5 => valid bit
94 Bit4 => 1
95 Bit3 => 1
96 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
97 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
98 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
99Byte 2: X coordinate (xpos[9:2])
100Byte 3: Y coordinate (ypos[9:2])
101Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
102 Bit3~Bit2 => X coordinate (ypos[1:0])
103 Bit4 => scroll up
104 Bit5 => scroll down
105 Bit6 => scroll left
106 Bit7 => scroll right
107
108Notify Packet for G0
109 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
110BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
111 1 |1|0|0|1|1|M|R|L| 2 |C|C|C|C|C|C|C|C| 3 |M|M|M|M|M|M|M|M| 4 |0|0|0|0|0|0|0|0|
112 |---------------| |---------------| |---------------| |---------------|
113
114Byte 1: Bit7~Bit6 => 00, Normal data packet
115 => 01, Absolute coordination packet
116 => 10, Notify packet
117 Bit5 => 0
118 Bit4 => 1
119 Bit3 => 1
120 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
121 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
122 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
123Byte 2: Message Type => 0x5A (Enable/Disable status packet)
124 Mode Type => 0xA5 (Normal/Icon mode status)
125Byte 3: Message Type => 0x00 (Disabled)
126 => 0x01 (Enabled)
127 Mode Type => 0x00 (Normal)
128 => 0x01 (Icon)
129Byte 4: Bit7~Bit0 => Don't Care
130
131==============================================================================
Tai-hwa Liang3920ab02010-01-13 00:22:29 -0800132* Absolute position for STL3888-Ax.
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -0700133==============================================================================
134Packet 1 (ABSOLUTE POSITION)
135 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
136BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
137 1 |0|1|V|A|1|L|0|1| 2 |X|X|X|X|X|X|X|X| 3 |Y|Y|Y|Y|Y|Y|Y|Y| 4 |x|x|y|y|X|X|Y|Y|
138 |---------------| |---------------| |---------------| |---------------|
139
140Byte 1: Bit7~Bit6 => 00, Normal data packet
141 => 01, Absolute coordination packet
142 => 10, Notify packet
143 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
144 When both fingers are up, the last two reports have zero valid
145 bit.
146 Bit4 => arc
147 Bit3 => 1
148 Bit2 => Left Button, 1 is pressed, 0 is released.
149 Bit1 => 0
150 Bit0 => 1
151Byte 2: X coordinate (xpos[9:2])
152Byte 3: Y coordinate (ypos[9:2])
153Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
154 Bit3~Bit2 => X coordinate (ypos[1:0])
155 Bit5~Bit4 => y1_g
156 Bit7~Bit6 => x1_g
157
158Packet 2 (ABSOLUTE POSITION)
159 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
160BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
161 1 |0|1|V|A|1|R|1|0| 2 |X|X|X|X|X|X|X|X| 3 |Y|Y|Y|Y|Y|Y|Y|Y| 4 |x|x|y|y|X|X|Y|Y|
162 |---------------| |---------------| |---------------| |---------------|
163
164Byte 1: Bit7~Bit6 => 00, Normal data packet
165 => 01, Absolute coordinates packet
166 => 10, Notify packet
167 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
168 When both fingers are up, the last two reports have zero valid
169 bit.
170 Bit4 => arc
171 Bit3 => 1
172 Bit2 => Right Button, 1 is pressed, 0 is released.
173 Bit1 => 1
174 Bit0 => 0
175Byte 2: X coordinate (xpos[9:2])
176Byte 3: Y coordinate (ypos[9:2])
177Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
178 Bit3~Bit2 => X coordinate (ypos[1:0])
179 Bit5~Bit4 => y2_g
180 Bit7~Bit6 => x2_g
181
Tai-hwa Liang3920ab02010-01-13 00:22:29 -0800182Notify Packet for STL3888-Ax
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -0700183 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
184BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
185 1 |1|0|1|P|1|M|R|L| 2 |C|C|C|C|C|C|C|C| 3 |0|0|F|F|0|0|0|i| 4 |r|l|d|u|0|0|0|0|
186 |---------------| |---------------| |---------------| |---------------|
187
188Byte 1: Bit7~Bit6 => 00, Normal data packet
Tai-hwa Liang3920ab02010-01-13 00:22:29 -0800189 => 01, Absolute coordinates packet
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -0700190 => 10, Notify packet
191 Bit5 => 1
192 Bit4 => when in absolute coordinates mode (valid when EN_PKT_GO is 1):
193 0: left button is generated by the on-pad command
194 1: left button is generated by the external button
195 Bit3 => 1
196 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
197 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
198 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
199Byte 2: Message Type => 0xB7 (Multi Finger, Multi Coordinate mode)
200Byte 3: Bit7~Bit6 => Don't care
201 Bit5~Bit4 => Number of fingers
202 Bit3~Bit1 => Reserved
203 Bit0 => 1: enter gesture mode; 0: leaving gesture mode
204Byte 4: Bit7 => scroll right button
205 Bit6 => scroll left button
206 Bit5 => scroll down button
207 Bit4 => scroll up button
Tai-hwa Liang3920ab02010-01-13 00:22:29 -0800208 * Note that if gesture and additional buttoni (Bit4~Bit7)
209 happen at the same time, the button information will not
210 be sent.
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -0700211 Bit3~Bit0 => Reserved
212
213Sample sequence of Multi-finger, Multi-coordinate mode:
214
215 notify packet (valid bit == 1), abs pkt 1, abs pkt 2, abs pkt 1,
Tai-hwa Liang3920ab02010-01-13 00:22:29 -0800216 abs pkt 2, ..., notify packet (valid bit == 0)
217
218==============================================================================
219* Absolute position for STL3888-B0.
220==============================================================================
221Packet 1(ABSOLUTE POSITION)
222 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
223BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
224 1 |0|1|V|F|1|0|R|L| 2 |X|X|X|X|X|X|X|X| 3 |Y|Y|Y|Y|Y|Y|Y|Y| 4 |r|l|u|d|X|X|Y|Y|
225 |---------------| |---------------| |---------------| |---------------|
226
227Byte 1: Bit7~Bit6 => 00, Normal data packet
228 => 01, Absolute coordinates packet
229 => 10, Notify packet
230 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
231 When both fingers are up, the last two reports have zero valid
232 bit.
233 Bit4 => finger up/down information. 1: finger down, 0: finger up.
234 Bit3 => 1
235 Bit2 => finger index, 0 is the first finger, 1 is the second finger.
236 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
237 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
238Byte 2: X coordinate (xpos[9:2])
239Byte 3: Y coordinate (ypos[9:2])
240Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
241 Bit3~Bit2 => X coordinate (ypos[1:0])
242 Bit4 => scroll down button
243 Bit5 => scroll up button
244 Bit6 => scroll left button
245 Bit7 => scroll right button
246
247Packet 2 (ABSOLUTE POSITION)
248 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
249BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
250 1 |0|1|V|F|1|1|R|L| 2 |X|X|X|X|X|X|X|X| 3 |Y|Y|Y|Y|Y|Y|Y|Y| 4 |r|l|u|d|X|X|Y|Y|
251 |---------------| |---------------| |---------------| |---------------|
252
253Byte 1: Bit7~Bit6 => 00, Normal data packet
254 => 01, Absolute coordination packet
255 => 10, Notify packet
256 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
257 When both fingers are up, the last two reports have zero valid
258 bit.
259 Bit4 => finger up/down information. 1: finger down, 0: finger up.
260 Bit3 => 1
261 Bit2 => finger index, 0 is the first finger, 1 is the second finger.
262 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
263 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
264Byte 2: X coordinate (xpos[9:2])
265Byte 3: Y coordinate (ypos[9:2])
266Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
267 Bit3~Bit2 => X coordinate (ypos[1:0])
268 Bit4 => scroll down button
269 Bit5 => scroll up button
270 Bit6 => scroll left button
271 Bit7 => scroll right button
272
273Notify Packet for STL3888-B0
274 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
275BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
276 1 |1|0|1|P|1|M|R|L| 2 |C|C|C|C|C|C|C|C| 3 |0|0|F|F|0|0|0|i| 4 |r|l|u|d|0|0|0|0|
277 |---------------| |---------------| |---------------| |---------------|
278
279Byte 1: Bit7~Bit6 => 00, Normal data packet
280 => 01, Absolute coordination packet
281 => 10, Notify packet
282 Bit5 => 1
283 Bit4 => when in absolute coordinate mode (valid when EN_PKT_GO is 1):
284 0: left button is generated by the on-pad command
285 1: left button is generated by the external button
286 Bit3 => 1
287 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
288 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
289 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
290Byte 2: Message Type => 0xB7 (Multi Finger, Multi Coordinate mode)
291Byte 3: Bit7~Bit6 => Don't care
292 Bit5~Bit4 => Number of fingers
293 Bit3~Bit1 => Reserved
294 Bit0 => 1: enter gesture mode; 0: leaving gesture mode
295Byte 4: Bit7 => scroll right button
296 Bit6 => scroll left button
297 Bit5 => scroll up button
298 Bit4 => scroll down button
299 * Note that if gesture and additional button(Bit4~Bit7)
300 happen at the same time, the button information will not
301 be sent.
302 Bit3~Bit0 => Reserved
303
304Sample sequence of Multi-finger, Multi-coordinate mode:
305
306 notify packet (valid bit == 1), abs pkt 1, abs pkt 2, abs pkt 1,
307 abs pkt 2, ..., notify packet (valid bit == 0)
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -0700308
309==============================================================================
310* FSP Enable/Disable packet
311==============================================================================
312 Bit 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
313BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
314 1 |Y|X|0|0|1|M|R|L| 2 |0|1|0|1|1|0|1|E| 3 | | | | | | | | | 4 | | | | | | | | |
315 |---------------| |---------------| |---------------| |---------------|
316
317FSP will send out enable/disable packet when FSP receive PS/2 enable/disable
318command. Host will receive the packet which Middle, Right, Left button will
319be set. The packet only use byte 0 and byte 1 as a pattern of original packet.
320Ignore the other bytes of the packet.
321
322Byte 1: Bit7 => 0, Y overflow
323 Bit6 => 0, X overflow
324 Bit5 => 0, Y sign bit
325 Bit4 => 0, X sign bit
326 Bit3 => 1
327 Bit2 => 1, Middle Button
328 Bit1 => 1, Right Button
329 Bit0 => 1, Left Button
330Byte 2: Bit7~1 => (0101101b)
331 Bit0 => 1 = Enable
332 0 = Disable
333Byte 3: Don't care
334Byte 4: Don't care (MOUSE ID 3, 4)
335Byte 5~8: Don't care (Absolute packet)
336
337==============================================================================
338* PS/2 Command Set
339==============================================================================
340
341FSP supports basic PS/2 commanding set and modes, refer to following URL for
342details about PS/2 commands:
343
Justin P. Mattock0ea6e612010-07-23 20:51:24 -0700344http://www.computer-engineering.org/ps2mouse/
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -0700345
346==============================================================================
347* Programming Sequence for Determining Packet Parsing Flow
348==============================================================================
3491. Identify FSP by reading device ID(0x00) and version(0x01) register
350
3512. Determine number of buttons by reading status2 (0x0b) register
352
353 buttons = reg[0x0b] & 0x30
354
355 if buttons == 0x30 or buttons == 0x20:
356 # two/four buttons
357 Refer to 'Finger Sensing Pad PS/2 Mouse Intellimouse'
358 section A for packet parsing detail(ignore byte 4, bit ~ 7)
359 elif buttons == 0x10:
360 # 6 buttons
361 Refer to 'Finger Sensing Pad PS/2 Mouse Intellimouse'
362 section B for packet parsing detail
363 elif buttons == 0x00:
364 # 6 buttons
365 Refer to 'Finger Sensing Pad PS/2 Mouse Intellimouse'
366 section A for packet parsing detail
367
368==============================================================================
369* Programming Sequence for Register Reading/Writing
370==============================================================================
371
372Register inversion requirement:
373
374 Following values needed to be inverted(the '~' operator in C) before being
375sent to FSP:
376
377 0xe9, 0xee, 0xf2 and 0xff.
378
379Register swapping requirement:
380
381 Following values needed to have their higher 4 bits and lower 4 bits being
382swapped before being sent to FSP:
383
384 10, 20, 40, 60, 80, 100 and 200.
385
386Register reading sequence:
387
388 1. send 0xf3 PS/2 command to FSP;
389
390 2. send 0x66 PS/2 command to FSP;
391
392 3. send 0x88 PS/2 command to FSP;
393
394 4. send 0xf3 PS/2 command to FSP;
395
396 5. if the register address being to read is not required to be
397 inverted(refer to the 'Register inversion requirement' section),
398 goto step 6
399
400 5a. send 0x68 PS/2 command to FSP;
401
402 5b. send the inverted register address to FSP and goto step 8;
403
404 6. if the register address being to read is not required to be
405 swapped(refer to the 'Register swapping requirement' section),
406 goto step 7
407
408 6a. send 0xcc PS/2 command to FSP;
409
410 6b. send the swapped register address to FSP and goto step 8;
411
412 7. send 0x66 PS/2 command to FSP;
413
414 7a. send the original register address to FSP and goto step 8;
415
416 8. send 0xe9(status request) PS/2 command to FSP;
417
418 9. the response read from FSP should be the requested register value.
419
420Register writing sequence:
421
422 1. send 0xf3 PS/2 command to FSP;
423
424 2. if the register address being to write is not required to be
425 inverted(refer to the 'Register inversion requirement' section),
426 goto step 3
427
428 2a. send 0x74 PS/2 command to FSP;
429
430 2b. send the inverted register address to FSP and goto step 5;
431
432 3. if the register address being to write is not required to be
433 swapped(refer to the 'Register swapping requirement' section),
434 goto step 4
435
436 3a. send 0x77 PS/2 command to FSP;
437
438 3b. send the swapped register address to FSP and goto step 5;
439
440 4. send 0x55 PS/2 command to FSP;
441
442 4a. send the register address to FSP and goto step 5;
443
444 5. send 0xf3 PS/2 command to FSP;
445
446 6. if the register value being to write is not required to be
447 inverted(refer to the 'Register inversion requirement' section),
448 goto step 7
449
450 6a. send 0x47 PS/2 command to FSP;
451
452 6b. send the inverted register value to FSP and goto step 9;
453
454 7. if the register value being to write is not required to be
455 swapped(refer to the 'Register swapping requirement' section),
456 goto step 8
457
458 7a. send 0x44 PS/2 command to FSP;
459
460 7b. send the swapped register value to FSP and goto step 9;
461
462 8. send 0x33 PS/2 command to FSP;
463
464 8a. send the register value to FSP;
465
466 9. the register writing sequence is completed.
467
468==============================================================================
469* Register Listing
470==============================================================================
471
472offset width default r/w name
4730x00 bit7~bit0 0x01 RO device ID
474
4750x01 bit7~bit0 0xc0 RW version ID
476
4770x02 bit7~bit0 0x01 RO vendor ID
478
4790x03 bit7~bit0 0x01 RO product ID
480
4810x04 bit3~bit0 0x01 RW revision ID
482
4830x0b RO test mode status 1
484 bit3 1 RO 0: rotate 180 degree, 1: no rotation
485
486 bit5~bit4 RO number of buttons
487 11 => 2, lbtn/rbtn
488 10 => 4, lbtn/rbtn/scru/scrd
489 01 => 6, lbtn/rbtn/scru/scrd/scrl/scrr
490 00 => 6, lbtn/rbtn/scru/scrd/fbtn/bbtn
491
4920x0f RW register file page control
493 bit0 0 RW 1 to enable page 1 register files
494
4950x10 RW system control 1
496 bit0 1 RW Reserved, must be 1
497 bit1 0 RW Reserved, must be 0
498 bit4 1 RW Reserved, must be 0
499 bit5 0 RW register clock gating enable
500 0: read only, 1: read/write enable
501 (Note that following registers does not require clock gating being
502 enabled prior to write: 05 06 07 08 09 0c 0f 10 11 12 16 17 18 23 2e
Tai-hwa Liang3920ab02010-01-13 00:22:29 -0800503 40 41 42 43. In addition to that, this bit must be 1 when gesture
504 mode is enabled)
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -0700505
5060x31 RW on-pad command detection
507 bit7 0 RW on-pad command left button down tag
508 enable
509 0: disable, 1: enable
510
5110x34 RW on-pad command control 5
512 bit4~bit0 0x05 RW XLO in 0s/4/1, so 03h = 0010.1b = 2.5
513 (Note that position unit is in 0.5 scanline)
514
515 bit7 0 RW on-pad tap zone enable
516 0: disable, 1: enable
517
5180x35 RW on-pad command control 6
519 bit4~bit0 0x1d RW XHI in 0s/4/1, so 19h = 1100.1b = 12.5
520 (Note that position unit is in 0.5 scanline)
521
5220x36 RW on-pad command control 7
523 bit4~bit0 0x04 RW YLO in 0s/4/1, so 03h = 0010.1b = 2.5
524 (Note that position unit is in 0.5 scanline)
525
5260x37 RW on-pad command control 8
527 bit4~bit0 0x13 RW YHI in 0s/4/1, so 11h = 1000.1b = 8.5
528 (Note that position unit is in 0.5 scanline)
529
5300x40 RW system control 5
531 bit1 0 RW FSP Intellimouse mode enable
532 0: disable, 1: enable
533
534 bit2 0 RW movement + abs. coordinate mode enable
535 0: disable, 1: enable
536 (Note that this function has the functionality of bit 1 even when
537 bit 1 is not set. However, the format is different from that of bit 1.
538 In addition, when bit 1 and bit 2 are set at the same time, bit 2 will
539 override bit 1.)
540
541 bit3 0 RW abs. coordinate only mode enable
542 0: disable, 1: enable
543 (Note that this function has the functionality of bit 1 even when
544 bit 1 is not set. However, the format is different from that of bit 1.
545 In addition, when bit 1, bit 2 and bit 3 are set at the same time,
546 bit 3 will override bit 1 and 2.)
547
548 bit5 0 RW auto switch enable
549 0: disable, 1: enable
550
551 bit6 0 RW G0 abs. + notify packet format enable
552 0: disable, 1: enable
553 (Note that the absolute/relative coordinate output still depends on
554 bit 2 and 3. That is, if any of those bit is 1, host will receive
555 absolute coordinates; otherwise, host only receives packets with
556 relative coordinate.)
557
Tai-hwa Liang3920ab02010-01-13 00:22:29 -0800558 bit7 0 RW EN_PS2_F2: PS/2 gesture mode 2nd
559 finger packet enable
560 0: disable, 1: enable
561
Tai-hwa Liangfc69f4a2009-05-10 18:15:39 -07005620x43 RW on-pad control
563 bit0 0 RW on-pad control enable
564 0: disable, 1: enable
565 (Note that if this bit is cleared, bit 3/5 will be ineffective)
566
567 bit3 0 RW on-pad fix vertical scrolling enable
568 0: disable, 1: enable
569
570 bit5 0 RW on-pad fix horizontal scrolling enable
571 0: disable, 1: enable