aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@s-opensource.com>2017-04-04 20:48:24 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2017-04-05 18:45:03 -0400
commit9dc500a3251c240c7f2ccd793304125d869824a5 (patch)
tree8a32a5783122eba0ba0299c4fd514b20fe554754
parent42f2309bbaab1a033c4f66b893f01e4fc95fdd22 (diff)
Input: sentelic - convert documentation into ReST format
This file has its own particular format that doesn't match any markup one. Manually change it to get something that would be readable using ReST markup language. Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r--Documentation/input/sentelic.txt1008
1 files changed, 518 insertions, 490 deletions
diff --git a/Documentation/input/sentelic.txt b/Documentation/input/sentelic.txt
index 89251e2a3eba..d1a476f973b1 100644
--- a/Documentation/input/sentelic.txt
+++ b/Documentation/input/sentelic.txt
@@ -1,411 +1,437 @@
1Copyright (C) 2002-2011 Sentelic Corporation. 1.. include:: <isonum.txt>
2Last update: Dec-07-2011 2
3===============
4Sentelic Driver
5===============
6
7
8:Copyright: |copy| 2002-2011 Sentelic Corporation.
9
10:Last update: Dec-07-2011
11
12Finger Sensing Pad Intellimouse Mode(scrolling wheel, 4th and 5th buttons)
13==========================================================================
3 14
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 15A) MSID 4: Scrolling wheel mode plus Forward page(4th button) and Backward
8 page (5th button) 16 page (5th button)
9@1. Set sample rate to 200; 17
10@2. Set sample rate to 200; 181. Set sample rate to 200;
11@3. Set sample rate to 80; 192. Set sample rate to 200;
12@4. Issuing the "Get device ID" command (0xF2) and waits for the response; 203. Set sample rate to 80;
13@5. FSP will respond 0x04. 214. Issuing the "Get device ID" command (0xF2) and waits for the response;
14 225. FSP will respond 0x04.
15Packet 1 23
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 24::
17BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 25
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| 26 Packet 1
19 |---------------| |---------------| |---------------| |---------------| 27 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
20 28 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
21Byte 1: Bit7 => Y overflow 29 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|
22 Bit6 => X overflow 30 |---------------| |---------------| |---------------| |---------------|
23 Bit5 => Y sign bit 31
24 Bit4 => X sign bit 32 Byte 1: Bit7 => Y overflow
25 Bit3 => 1 33 Bit6 => X overflow
26 Bit2 => Middle Button, 1 is pressed, 0 is not pressed. 34 Bit5 => Y sign bit
27 Bit1 => Right Button, 1 is pressed, 0 is not pressed. 35 Bit4 => X sign bit
28 Bit0 => Left Button, 1 is pressed, 0 is not pressed. 36 Bit3 => 1
29Byte 2: X Movement(9-bit 2's complement integers) 37 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
30Byte 3: Y Movement(9-bit 2's complement integers) 38 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
31Byte 4: Bit3~Bit0 => the scrolling wheel's movement since the last data report. 39 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
32 valid values, -8 ~ +7 40 Byte 2: X Movement(9-bit 2's complement integers)
33 Bit4 => 1 = 4th mouse button is pressed, Forward one page. 41 Byte 3: Y Movement(9-bit 2's complement integers)
34 0 = 4th mouse button is not pressed. 42 Byte 4: Bit3~Bit0 => the scrolling wheel's movement since the last data report.
35 Bit5 => 1 = 5th mouse button is pressed, Backward one page. 43 valid values, -8 ~ +7
36 0 = 5th mouse button is not pressed. 44 Bit4 => 1 = 4th mouse button is pressed, Forward one page.
37 45 0 = 4th mouse button is not pressed.
38B) MSID 6: Horizontal and Vertical scrolling. 46 Bit5 => 1 = 5th mouse button is pressed, Backward one page.
39@ Set bit 1 in register 0x40 to 1 47 0 = 5th mouse button is not pressed.
40 48
41# FSP replaces scrolling wheel's movement as 4 bits to show horizontal and 49B) MSID 6: Horizontal and Vertical scrolling
42 vertical scrolling. 50
43 51- Set bit 1 in register 0x40 to 1
44Packet 1 52
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 53FSP replaces scrolling wheel's movement as 4 bits to show horizontal and
46BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 54vertical scrolling.
47 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| 55
48 |---------------| |---------------| |---------------| |---------------| 56::
49 57
50Byte 1: Bit7 => Y overflow 58 Packet 1
51 Bit6 => X overflow 59 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
52 Bit5 => Y sign bit 60 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
53 Bit4 => X sign bit 61 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|
54 Bit3 => 1 62 |---------------| |---------------| |---------------| |---------------|
55 Bit2 => Middle Button, 1 is pressed, 0 is not pressed. 63
56 Bit1 => Right Button, 1 is pressed, 0 is not pressed. 64 Byte 1: Bit7 => Y overflow
57 Bit0 => Left Button, 1 is pressed, 0 is not pressed. 65 Bit6 => X overflow
58Byte 2: X Movement(9-bit 2's complement integers) 66 Bit5 => Y sign bit
59Byte 3: Y Movement(9-bit 2's complement integers) 67 Bit4 => X sign bit
60Byte 4: Bit0 => the Vertical scrolling movement downward. 68 Bit3 => 1
61 Bit1 => the Vertical scrolling movement upward. 69 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
62 Bit2 => the Horizontal scrolling movement leftward. 70 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
63 Bit3 => the Horizontal scrolling movement rightward. 71 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
64 Bit4 => 1 = 4th mouse button is pressed, Forward one page. 72 Byte 2: X Movement(9-bit 2's complement integers)
65 0 = 4th mouse button is not pressed. 73 Byte 3: Y Movement(9-bit 2's complement integers)
66 Bit5 => 1 = 5th mouse button is pressed, Backward one page. 74 Byte 4: Bit0 => the Vertical scrolling movement downward.
67 0 = 5th mouse button is not pressed. 75 Bit1 => the Vertical scrolling movement upward.
68 76 Bit2 => the Horizontal scrolling movement leftward.
69C) MSID 7: 77 Bit3 => the Horizontal scrolling movement rightward.
70# FSP uses 2 packets (8 Bytes) to represent Absolute Position. 78 Bit4 => 1 = 4th mouse button is pressed, Forward one page.
71 so we have PACKET NUMBER to identify packets. 79 0 = 4th mouse button is not pressed.
80 Bit5 => 1 = 5th mouse button is pressed, Backward one page.
81 0 = 5th mouse button is not pressed.
82
83C) MSID 7
84
85FSP uses 2 packets (8 Bytes) to represent Absolute Position.
86so we have PACKET NUMBER to identify packets.
87
72 If PACKET NUMBER is 0, the packet is Packet 1. 88 If PACKET NUMBER is 0, the packet is Packet 1.
73 If PACKET NUMBER is 1, the packet is Packet 2. 89 If PACKET NUMBER is 1, the packet is Packet 2.
74 Please count this number in program. 90 Please count this number in program.
75 91
76# MSID6 special packet will be enable at the same time when enable MSID 7. 92MSID6 special packet will be enable at the same time when enable MSID 7.
77 93
78============================================================================== 94Absolute position for STL3886-G0
79* Absolute position for STL3886-G0. 95================================
80============================================================================== 96
81@ Set bit 2 or 3 in register 0x40 to 1 971. Set bit 2 or 3 in register 0x40 to 1
82@ Set bit 6 in register 0x40 to 1 982. Set bit 6 in register 0x40 to 1
83 99
84Packet 1 (ABSOLUTE POSITION) 100::
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 101
86BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 102 Packet 1 (ABSOLUTE POSITION)
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| 103 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
88 |---------------| |---------------| |---------------| |---------------| 104 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
89 105 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|
90Byte 1: Bit7~Bit6 => 00, Normal data packet 106 |---------------| |---------------| |---------------| |---------------|
91 => 01, Absolute coordination packet 107
92 => 10, Notify packet 108 Byte 1: Bit7~Bit6 => 00, Normal data packet
93 Bit5 => valid bit 109 => 01, Absolute coordination packet
94 Bit4 => 1 110 => 10, Notify packet
95 Bit3 => 1 111 Bit5 => valid bit
96 Bit2 => Middle Button, 1 is pressed, 0 is not pressed. 112 Bit4 => 1
97 Bit1 => Right Button, 1 is pressed, 0 is not pressed. 113 Bit3 => 1
98 Bit0 => Left Button, 1 is pressed, 0 is not pressed. 114 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
99Byte 2: X coordinate (xpos[9:2]) 115 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
100Byte 3: Y coordinate (ypos[9:2]) 116 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
101Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0]) 117 Byte 2: X coordinate (xpos[9:2])
102 Bit3~Bit2 => X coordinate (ypos[1:0]) 118 Byte 3: Y coordinate (ypos[9:2])
103 Bit4 => scroll up 119 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
104 Bit5 => scroll down 120 Bit3~Bit2 => X coordinate (ypos[1:0])
105 Bit6 => scroll left 121 Bit4 => scroll up
106 Bit7 => scroll right 122 Bit5 => scroll down
107 123 Bit6 => scroll left
108Notify Packet for G0 124 Bit7 => scroll right
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 125
110BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 126 Notify Packet for G0
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| 127 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
112 |---------------| |---------------| |---------------| |---------------| 128 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
113 129 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|
114Byte 1: Bit7~Bit6 => 00, Normal data packet 130 |---------------| |---------------| |---------------| |---------------|
115 => 01, Absolute coordination packet 131
116 => 10, Notify packet 132 Byte 1: Bit7~Bit6 => 00, Normal data packet
117 Bit5 => 0 133 => 01, Absolute coordination packet
118 Bit4 => 1 134 => 10, Notify packet
119 Bit3 => 1 135 Bit5 => 0
120 Bit2 => Middle Button, 1 is pressed, 0 is not pressed. 136 Bit4 => 1
121 Bit1 => Right Button, 1 is pressed, 0 is not pressed. 137 Bit3 => 1
122 Bit0 => Left Button, 1 is pressed, 0 is not pressed. 138 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
123Byte 2: Message Type => 0x5A (Enable/Disable status packet) 139 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
124 Mode Type => 0xA5 (Normal/Icon mode status) 140 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
125Byte 3: Message Type => 0x00 (Disabled) 141 Byte 2: Message Type => 0x5A (Enable/Disable status packet)
126 => 0x01 (Enabled) 142 Mode Type => 0xA5 (Normal/Icon mode status)
127 Mode Type => 0x00 (Normal) 143 Byte 3: Message Type => 0x00 (Disabled)
128 => 0x01 (Icon) 144 => 0x01 (Enabled)
129Byte 4: Bit7~Bit0 => Don't Care 145 Mode Type => 0x00 (Normal)
130 146 => 0x01 (Icon)
131============================================================================== 147 Byte 4: Bit7~Bit0 => Don't Care
132* Absolute position for STL3888-Ax. 148
133============================================================================== 149Absolute position for STL3888-Ax
134Packet 1 (ABSOLUTE POSITION) 150================================
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 151
136BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 152::
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| 153
138 |---------------| |---------------| |---------------| |---------------| 154 Packet 1 (ABSOLUTE POSITION)
139 155 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
140Byte 1: Bit7~Bit6 => 00, Normal data packet 156 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
141 => 01, Absolute coordination packet 157 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|
142 => 10, Notify packet 158 |---------------| |---------------| |---------------| |---------------|
143 => 11, Normal data packet with on-pad click 159
144 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up. 160 Byte 1: Bit7~Bit6 => 00, Normal data packet
145 When both fingers are up, the last two reports have zero valid 161 => 01, Absolute coordination packet
146 bit. 162 => 10, Notify packet
147 Bit4 => arc 163 => 11, Normal data packet with on-pad click
148 Bit3 => 1 164 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
149 Bit2 => Left Button, 1 is pressed, 0 is released. 165 When both fingers are up, the last two reports have zero valid
150 Bit1 => 0 166 bit.
151 Bit0 => 1 167 Bit4 => arc
152Byte 2: X coordinate (xpos[9:2]) 168 Bit3 => 1
153Byte 3: Y coordinate (ypos[9:2]) 169 Bit2 => Left Button, 1 is pressed, 0 is released.
154Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0]) 170 Bit1 => 0
155 Bit3~Bit2 => X coordinate (ypos[1:0]) 171 Bit0 => 1
156 Bit5~Bit4 => y1_g 172 Byte 2: X coordinate (xpos[9:2])
157 Bit7~Bit6 => x1_g 173 Byte 3: Y coordinate (ypos[9:2])
158 174 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
159Packet 2 (ABSOLUTE POSITION) 175 Bit3~Bit2 => X coordinate (ypos[1:0])
160 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 176 Bit5~Bit4 => y1_g
161BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 177 Bit7~Bit6 => x1_g
162 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| 178
163 |---------------| |---------------| |---------------| |---------------| 179 Packet 2 (ABSOLUTE POSITION)
164 180 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
165Byte 1: Bit7~Bit6 => 00, Normal data packet 181 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
166 => 01, Absolute coordinates packet 182 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|
167 => 10, Notify packet 183 |---------------| |---------------| |---------------| |---------------|
168 => 11, Normal data packet with on-pad click 184
169 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up. 185 Byte 1: Bit7~Bit6 => 00, Normal data packet
170 When both fingers are up, the last two reports have zero valid 186 => 01, Absolute coordinates packet
171 bit. 187 => 10, Notify packet
172 Bit4 => arc 188 => 11, Normal data packet with on-pad click
173 Bit3 => 1 189 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
174 Bit2 => Right Button, 1 is pressed, 0 is released. 190 When both fingers are up, the last two reports have zero valid
175 Bit1 => 1 191 bit.
176 Bit0 => 0 192 Bit4 => arc
177Byte 2: X coordinate (xpos[9:2]) 193 Bit3 => 1
178Byte 3: Y coordinate (ypos[9:2]) 194 Bit2 => Right Button, 1 is pressed, 0 is released.
179Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0]) 195 Bit1 => 1
180 Bit3~Bit2 => X coordinate (ypos[1:0]) 196 Bit0 => 0
181 Bit5~Bit4 => y2_g 197 Byte 2: X coordinate (xpos[9:2])
182 Bit7~Bit6 => x2_g 198 Byte 3: Y coordinate (ypos[9:2])
183 199 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
184Notify Packet for STL3888-Ax 200 Bit3~Bit2 => X coordinate (ypos[1:0])
185 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 201 Bit5~Bit4 => y2_g
186BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 202 Bit7~Bit6 => x2_g
187 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| 203
188 |---------------| |---------------| |---------------| |---------------| 204 Notify Packet for STL3888-Ax
189 205 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
190Byte 1: Bit7~Bit6 => 00, Normal data packet 206 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
191 => 01, Absolute coordinates packet 207 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|
192 => 10, Notify packet 208 |---------------| |---------------| |---------------| |---------------|
193 => 11, Normal data packet with on-pad click 209
194 Bit5 => 1 210 Byte 1: Bit7~Bit6 => 00, Normal data packet
195 Bit4 => when in absolute coordinates mode (valid when EN_PKT_GO is 1): 211 => 01, Absolute coordinates packet
196 0: left button is generated by the on-pad command 212 => 10, Notify packet
197 1: left button is generated by the external button 213 => 11, Normal data packet with on-pad click
198 Bit3 => 1 214 Bit5 => 1
199 Bit2 => Middle Button, 1 is pressed, 0 is not pressed. 215 Bit4 => when in absolute coordinates mode (valid when EN_PKT_GO is 1):
200 Bit1 => Right Button, 1 is pressed, 0 is not pressed. 216 0: left button is generated by the on-pad command
201 Bit0 => Left Button, 1 is pressed, 0 is not pressed. 217 1: left button is generated by the external button
202Byte 2: Message Type => 0xB7 (Multi Finger, Multi Coordinate mode) 218 Bit3 => 1
203Byte 3: Bit7~Bit6 => Don't care 219 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
204 Bit5~Bit4 => Number of fingers 220 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
205 Bit3~Bit1 => Reserved 221 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
206 Bit0 => 1: enter gesture mode; 0: leaving gesture mode 222 Byte 2: Message Type => 0xB7 (Multi Finger, Multi Coordinate mode)
207Byte 4: Bit7 => scroll right button 223 Byte 3: Bit7~Bit6 => Don't care
208 Bit6 => scroll left button 224 Bit5~Bit4 => Number of fingers
209 Bit5 => scroll down button 225 Bit3~Bit1 => Reserved
210 Bit4 => scroll up button 226 Bit0 => 1: enter gesture mode; 0: leaving gesture mode
211 * Note that if gesture and additional button (Bit4~Bit7) 227 Byte 4: Bit7 => scroll right button
212 happen at the same time, the button information will not 228 Bit6 => scroll left button
213 be sent. 229 Bit5 => scroll down button
214 Bit3~Bit0 => Reserved 230 Bit4 => scroll up button
231 * Note that if gesture and additional button (Bit4~Bit7)
232 happen at the same time, the button information will not
233 be sent.
234 Bit3~Bit0 => Reserved
215 235
216Sample sequence of Multi-finger, Multi-coordinate mode: 236Sample sequence of Multi-finger, Multi-coordinate mode:
217 237
218 notify packet (valid bit == 1), abs pkt 1, abs pkt 2, abs pkt 1, 238 notify packet (valid bit == 1), abs pkt 1, abs pkt 2, abs pkt 1,
219 abs pkt 2, ..., notify packet (valid bit == 0) 239 abs pkt 2, ..., notify packet (valid bit == 0)
220 240
221============================================================================== 241Absolute position for STL3888-B0
222* Absolute position for STL3888-B0. 242================================
223============================================================================== 243
224Packet 1(ABSOLUTE POSITION) 244::
225 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 245
226BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 246 Packet 1(ABSOLUTE POSITION)
227 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| 247 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
228 |---------------| |---------------| |---------------| |---------------| 248 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
229 249 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|
230Byte 1: Bit7~Bit6 => 00, Normal data packet 250 |---------------| |---------------| |---------------| |---------------|
231 => 01, Absolute coordinates packet 251
232 => 10, Notify packet 252 Byte 1: Bit7~Bit6 => 00, Normal data packet
233 => 11, Normal data packet with on-pad click 253 => 01, Absolute coordinates packet
234 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up. 254 => 10, Notify packet
235 When both fingers are up, the last two reports have zero valid 255 => 11, Normal data packet with on-pad click
236 bit. 256 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
237 Bit4 => finger up/down information. 1: finger down, 0: finger up. 257 When both fingers are up, the last two reports have zero valid
238 Bit3 => 1 258 bit.
239 Bit2 => finger index, 0 is the first finger, 1 is the second finger. 259 Bit4 => finger up/down information. 1: finger down, 0: finger up.
240 Bit1 => Right Button, 1 is pressed, 0 is not pressed. 260 Bit3 => 1
241 Bit0 => Left Button, 1 is pressed, 0 is not pressed. 261 Bit2 => finger index, 0 is the first finger, 1 is the second finger.
242Byte 2: X coordinate (xpos[9:2]) 262 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
243Byte 3: Y coordinate (ypos[9:2]) 263 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
244Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0]) 264 Byte 2: X coordinate (xpos[9:2])
245 Bit3~Bit2 => X coordinate (ypos[1:0]) 265 Byte 3: Y coordinate (ypos[9:2])
246 Bit4 => scroll down button 266 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
247 Bit5 => scroll up button 267 Bit3~Bit2 => X coordinate (ypos[1:0])
248 Bit6 => scroll left button 268 Bit4 => scroll down button
249 Bit7 => scroll right button 269 Bit5 => scroll up button
250 270 Bit6 => scroll left button
251Packet 2 (ABSOLUTE POSITION) 271 Bit7 => scroll right button
252 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 272
253BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 273 Packet 2 (ABSOLUTE POSITION)
254 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| 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
255 |---------------| |---------------| |---------------| |---------------| 275 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
256 276 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|
257Byte 1: Bit7~Bit6 => 00, Normal data packet 277 |---------------| |---------------| |---------------| |---------------|
258 => 01, Absolute coordination packet 278
259 => 10, Notify packet 279 Byte 1: Bit7~Bit6 => 00, Normal data packet
260 => 11, Normal data packet with on-pad click 280 => 01, Absolute coordination packet
261 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up. 281 => 10, Notify packet
262 When both fingers are up, the last two reports have zero valid 282 => 11, Normal data packet with on-pad click
263 bit. 283 Bit5 => Valid bit, 0 means that the coordinate is invalid or finger up.
264 Bit4 => finger up/down information. 1: finger down, 0: finger up. 284 When both fingers are up, the last two reports have zero valid
265 Bit3 => 1 285 bit.
266 Bit2 => finger index, 0 is the first finger, 1 is the second finger. 286 Bit4 => finger up/down information. 1: finger down, 0: finger up.
267 Bit1 => Right Button, 1 is pressed, 0 is not pressed. 287 Bit3 => 1
268 Bit0 => Left Button, 1 is pressed, 0 is not pressed. 288 Bit2 => finger index, 0 is the first finger, 1 is the second finger.
269Byte 2: X coordinate (xpos[9:2]) 289 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
270Byte 3: Y coordinate (ypos[9:2]) 290 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
271Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0]) 291 Byte 2: X coordinate (xpos[9:2])
272 Bit3~Bit2 => X coordinate (ypos[1:0]) 292 Byte 3: Y coordinate (ypos[9:2])
273 Bit4 => scroll down button 293 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
274 Bit5 => scroll up button 294 Bit3~Bit2 => X coordinate (ypos[1:0])
275 Bit6 => scroll left button 295 Bit4 => scroll down button
276 Bit7 => scroll right button 296 Bit5 => scroll up button
277 297 Bit6 => scroll left button
278Notify Packet for STL3888-B0 298 Bit7 => scroll right button
279 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 299
280BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 300Notify Packet for STL3888-B0::
281 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| 301
282 |---------------| |---------------| |---------------| |---------------| 302 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
283 303 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
284Byte 1: Bit7~Bit6 => 00, Normal data packet 304 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|
285 => 01, Absolute coordination packet 305 |---------------| |---------------| |---------------| |---------------|
286 => 10, Notify packet 306
287 => 11, Normal data packet with on-pad click 307 Byte 1: Bit7~Bit6 => 00, Normal data packet
288 Bit5 => 1 308 => 01, Absolute coordination packet
289 Bit4 => when in absolute coordinates mode (valid when EN_PKT_GO is 1): 309 => 10, Notify packet
290 0: left button is generated by the on-pad command 310 => 11, Normal data packet with on-pad click
291 1: left button is generated by the external button 311 Bit5 => 1
292 Bit3 => 1 312 Bit4 => when in absolute coordinates mode (valid when EN_PKT_GO is 1):
293 Bit2 => Middle Button, 1 is pressed, 0 is not pressed. 313 0: left button is generated by the on-pad command
294 Bit1 => Right Button, 1 is pressed, 0 is not pressed. 314 1: left button is generated by the external button
295 Bit0 => Left Button, 1 is pressed, 0 is not pressed. 315 Bit3 => 1
296Byte 2: Message Type => 0xB7 (Multi Finger, Multi Coordinate mode) 316 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
297Byte 3: Bit7~Bit6 => Don't care 317 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
298 Bit5~Bit4 => Number of fingers 318 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
299 Bit3~Bit1 => Reserved 319 Byte 2: Message Type => 0xB7 (Multi Finger, Multi Coordinate mode)
300 Bit0 => 1: enter gesture mode; 0: leaving gesture mode 320 Byte 3: Bit7~Bit6 => Don't care
301Byte 4: Bit7 => scroll right button 321 Bit5~Bit4 => Number of fingers
302 Bit6 => scroll left button 322 Bit3~Bit1 => Reserved
303 Bit5 => scroll up button 323 Bit0 => 1: enter gesture mode; 0: leaving gesture mode
304 Bit4 => scroll down button 324 Byte 4: Bit7 => scroll right button
305 * Note that if gesture and additional button(Bit4~Bit7) 325 Bit6 => scroll left button
306 happen at the same time, the button information will not 326 Bit5 => scroll up button
307 be sent. 327 Bit4 => scroll down button
308 Bit3~Bit0 => Reserved 328 * Note that if gesture and additional button(Bit4~Bit7)
329 happen at the same time, the button information will not
330 be sent.
331 Bit3~Bit0 => Reserved
309 332
310Sample sequence of Multi-finger, Multi-coordinate mode: 333Sample sequence of Multi-finger, Multi-coordinate mode:
311 334
312 notify packet (valid bit == 1), abs pkt 1, abs pkt 2, abs pkt 1, 335 notify packet (valid bit == 1), abs pkt 1, abs pkt 2, abs pkt 1,
313 abs pkt 2, ..., notify packet (valid bit == 0) 336 abs pkt 2, ..., notify packet (valid bit == 0)
314 337
315============================================================================== 338Absolute position for STL3888-Cx and STL3888-Dx
316* Absolute position for STL3888-Cx and STL3888-Dx. 339===============================================
317============================================================================== 340
318Single Finger, Absolute Coordinate Mode (SFAC) 341::
319 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 342
320BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 343 Single Finger, Absolute Coordinate Mode (SFAC)
321 1 |0|1|0|P|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|B|F|X|X|Y|Y| 344 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
322 |---------------| |---------------| |---------------| |---------------| 345 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
323 346 1 |0|1|0|P|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|B|F|X|X|Y|Y|
324Byte 1: Bit7~Bit6 => 00, Normal data packet 347 |---------------| |---------------| |---------------| |---------------|
325 => 01, Absolute coordinates packet 348
326 => 10, Notify packet 349 Byte 1: Bit7~Bit6 => 00, Normal data packet
327 Bit5 => Coordinate mode(always 0 in SFAC mode): 350 => 01, Absolute coordinates packet
328 0: single-finger absolute coordinates (SFAC) mode 351 => 10, Notify packet
329 1: multi-finger, multiple coordinates (MFMC) mode 352 Bit5 => Coordinate mode(always 0 in SFAC mode):
330 Bit4 => 0: The LEFT button is generated by on-pad command (OPC) 353 0: single-finger absolute coordinates (SFAC) mode
331 1: The LEFT button is generated by external button 354 1: multi-finger, multiple coordinates (MFMC) mode
332 Default is 1 even if the LEFT button is not pressed. 355 Bit4 => 0: The LEFT button is generated by on-pad command (OPC)
333 Bit3 => Always 1, as specified by PS/2 protocol. 356 1: The LEFT button is generated by external button
334 Bit2 => Middle Button, 1 is pressed, 0 is not pressed. 357 Default is 1 even if the LEFT button is not pressed.
335 Bit1 => Right Button, 1 is pressed, 0 is not pressed. 358 Bit3 => Always 1, as specified by PS/2 protocol.
336 Bit0 => Left Button, 1 is pressed, 0 is not pressed. 359 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
337Byte 2: X coordinate (xpos[9:2]) 360 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
338Byte 3: Y coordinate (ypos[9:2]) 361 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
339Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0]) 362 Byte 2: X coordinate (xpos[9:2])
340 Bit3~Bit2 => X coordinate (ypos[1:0]) 363 Byte 3: Y coordinate (ypos[9:2])
341 Bit4 => 4th mouse button(forward one page) 364 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
342 Bit5 => 5th mouse button(backward one page) 365 Bit3~Bit2 => X coordinate (ypos[1:0])
343 Bit6 => scroll left button 366 Bit4 => 4th mouse button(forward one page)
344 Bit7 => scroll right button 367 Bit5 => 5th mouse button(backward one page)
345 368 Bit6 => scroll left button
346Multi Finger, Multiple Coordinates Mode (MFMC): 369 Bit7 => scroll right button
347 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 370
348BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 371 Multi Finger, Multiple Coordinates Mode (MFMC):
349 1 |0|1|1|P|1|F|R|L| 2 |X|X|X|X|X|X|X|X| 3 |Y|Y|Y|Y|Y|Y|Y|Y| 4 |r|l|B|F|X|X|Y|Y| 372 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
350 |---------------| |---------------| |---------------| |---------------| 373 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
351 374 1 |0|1|1|P|1|F|R|L| 2 |X|X|X|X|X|X|X|X| 3 |Y|Y|Y|Y|Y|Y|Y|Y| 4 |r|l|B|F|X|X|Y|Y|
352Byte 1: Bit7~Bit6 => 00, Normal data packet 375 |---------------| |---------------| |---------------| |---------------|
353 => 01, Absolute coordination packet 376
354 => 10, Notify packet 377 Byte 1: Bit7~Bit6 => 00, Normal data packet
355 Bit5 => Coordinate mode (always 1 in MFMC mode): 378 => 01, Absolute coordination packet
356 0: single-finger absolute coordinates (SFAC) mode 379 => 10, Notify packet
357 1: multi-finger, multiple coordinates (MFMC) mode 380 Bit5 => Coordinate mode (always 1 in MFMC mode):
358 Bit4 => 0: The LEFT button is generated by on-pad command (OPC) 381 0: single-finger absolute coordinates (SFAC) mode
359 1: The LEFT button is generated by external button 382 1: multi-finger, multiple coordinates (MFMC) mode
360 Default is 1 even if the LEFT button is not pressed. 383 Bit4 => 0: The LEFT button is generated by on-pad command (OPC)
361 Bit3 => Always 1, as specified by PS/2 protocol. 384 1: The LEFT button is generated by external button
362 Bit2 => Finger index, 0 is the first finger, 1 is the second finger. 385 Default is 1 even if the LEFT button is not pressed.
363 If bit 1 and 0 are all 1 and bit 4 is 0, the middle external 386 Bit3 => Always 1, as specified by PS/2 protocol.
364 button is pressed. 387 Bit2 => Finger index, 0 is the first finger, 1 is the second finger.
365 Bit1 => Right Button, 1 is pressed, 0 is not pressed. 388 If bit 1 and 0 are all 1 and bit 4 is 0, the middle external
366 Bit0 => Left Button, 1 is pressed, 0 is not pressed. 389 button is pressed.
367Byte 2: X coordinate (xpos[9:2]) 390 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
368Byte 3: Y coordinate (ypos[9:2]) 391 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
369Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0]) 392 Byte 2: X coordinate (xpos[9:2])
370 Bit3~Bit2 => X coordinate (ypos[1:0]) 393 Byte 3: Y coordinate (ypos[9:2])
371 Bit4 => 4th mouse button(forward one page) 394 Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:0])
372 Bit5 => 5th mouse button(backward one page) 395 Bit3~Bit2 => X coordinate (ypos[1:0])
373 Bit6 => scroll left button 396 Bit4 => 4th mouse button(forward one page)
374 Bit7 => scroll right button 397 Bit5 => 5th mouse button(backward one page)
375 398 Bit6 => scroll left button
376 When one of the two fingers is up, the device will output four consecutive 399 Bit7 => scroll right button
400
401When one of the two fingers is up, the device will output four consecutive
377MFMC#0 report packets with zero X and Y to represent 1st finger is up or 402MFMC#0 report packets with zero X and Y to represent 1st finger is up or
378four consecutive MFMC#1 report packets with zero X and Y to represent that 403four consecutive MFMC#1 report packets with zero X and Y to represent that
379the 2nd finger is up. On the other hand, if both fingers are up, the device 404the 2nd finger is up. On the other hand, if both fingers are up, the device
380will output four consecutive single-finger, absolute coordinate(SFAC) packets 405will output four consecutive single-finger, absolute coordinate(SFAC) packets
381with zero X and Y. 406with zero X and Y.
382 407
383Notify Packet for STL3888-Cx/Dx 408Notify Packet for STL3888-Cx/Dx::
384 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 409
385BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 410 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
386 1 |1|0|0|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| 411 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
387 |---------------| |---------------| |---------------| |---------------| 412 1 |1|0|0|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|
388 413 |---------------| |---------------| |---------------| |---------------|
389Byte 1: Bit7~Bit6 => 00, Normal data packet 414
390 => 01, Absolute coordinates packet 415 Byte 1: Bit7~Bit6 => 00, Normal data packet
391 => 10, Notify packet 416 => 01, Absolute coordinates packet
392 Bit5 => Always 0 417 => 10, Notify packet
393 Bit4 => 0: The LEFT button is generated by on-pad command(OPC) 418 Bit5 => Always 0
394 1: The LEFT button is generated by external button 419 Bit4 => 0: The LEFT button is generated by on-pad command(OPC)
395 Default is 1 even if the LEFT button is not pressed. 420 1: The LEFT button is generated by external button
396 Bit3 => 1 421 Default is 1 even if the LEFT button is not pressed.
397 Bit2 => Middle Button, 1 is pressed, 0 is not pressed. 422 Bit3 => 1
398 Bit1 => Right Button, 1 is pressed, 0 is not pressed. 423 Bit2 => Middle Button, 1 is pressed, 0 is not pressed.
399 Bit0 => Left Button, 1 is pressed, 0 is not pressed. 424 Bit1 => Right Button, 1 is pressed, 0 is not pressed.
400Byte 2: Message type: 425 Bit0 => Left Button, 1 is pressed, 0 is not pressed.
401 0xba => gesture information 426 Byte 2: Message type:
402 0xc0 => one finger hold-rotating gesture 427 0xba => gesture information
403Byte 3: The first parameter for the received message: 428 0xc0 => one finger hold-rotating gesture
404 0xba => gesture ID (refer to the 'Gesture ID' section) 429 Byte 3: The first parameter for the received message:
405 0xc0 => region ID 430 0xba => gesture ID (refer to the 'Gesture ID' section)
406Byte 4: The second parameter for the received message: 431 0xc0 => region ID
407 0xba => N/A 432 Byte 4: The second parameter for the received message:
408 0xc0 => finger up/down information 433 0xba => N/A
434 0xc0 => finger up/down information
409 435
410Sample sequence of Multi-finger, Multi-coordinates mode: 436Sample sequence of Multi-finger, Multi-coordinates mode:
411 437
@@ -416,50 +442,51 @@ Sample sequence of Multi-finger, Multi-coordinates mode:
416 That is, when the device is in MFMC mode, the host will receive 442 That is, when the device is in MFMC mode, the host will receive
417 interleaved absolute coordinate packets for each finger. 443 interleaved absolute coordinate packets for each finger.
418 444
419============================================================================== 445FSP Enable/Disable packet
420* FSP Enable/Disable packet 446=========================
421============================================================================== 447
422 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 448::
423BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------| 449
424 1 |Y|X|0|0|1|M|R|L| 2 |0|1|0|1|1|0|1|E| 3 | | | | | | | | | 4 | | | | | | | | | 450 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
425 |---------------| |---------------| |---------------| |---------------| 451 BYTE |---------------|BYTE |---------------|BYTE|---------------|BYTE|---------------|
426 452 1 |Y|X|0|0|1|M|R|L| 2 |0|1|0|1|1|0|1|E| 3 | | | | | | | | | 4 | | | | | | | | |
427FSP will send out enable/disable packet when FSP receive PS/2 enable/disable 453 |---------------| |---------------| |---------------| |---------------|
428command. Host will receive the packet which Middle, Right, Left button will 454
429be set. The packet only use byte 0 and byte 1 as a pattern of original packet. 455 FSP will send out enable/disable packet when FSP receive PS/2 enable/disable
430Ignore the other bytes of the packet. 456 command. Host will receive the packet which Middle, Right, Left button will
431 457 be set. The packet only use byte 0 and byte 1 as a pattern of original packet.
432Byte 1: Bit7 => 0, Y overflow 458 Ignore the other bytes of the packet.
433 Bit6 => 0, X overflow 459
434 Bit5 => 0, Y sign bit 460 Byte 1: Bit7 => 0, Y overflow
435 Bit4 => 0, X sign bit 461 Bit6 => 0, X overflow
436 Bit3 => 1 462 Bit5 => 0, Y sign bit
437 Bit2 => 1, Middle Button 463 Bit4 => 0, X sign bit
438 Bit1 => 1, Right Button 464 Bit3 => 1
439 Bit0 => 1, Left Button 465 Bit2 => 1, Middle Button
440Byte 2: Bit7~1 => (0101101b) 466 Bit1 => 1, Right Button
441 Bit0 => 1 = Enable 467 Bit0 => 1, Left Button
442 0 = Disable 468 Byte 2: Bit7~1 => (0101101b)
443Byte 3: Don't care 469 Bit0 => 1 = Enable
444Byte 4: Don't care (MOUSE ID 3, 4) 470 0 = Disable
445Byte 5~8: Don't care (Absolute packet) 471 Byte 3: Don't care
446 472 Byte 4: Don't care (MOUSE ID 3, 4)
447============================================================================== 473 Byte 5~8: Don't care (Absolute packet)
448* PS/2 Command Set 474
449============================================================================== 475PS/2 Command Set
476================
450 477
451FSP supports basic PS/2 commanding set and modes, refer to following URL for 478FSP supports basic PS/2 commanding set and modes, refer to following URL for
452details about PS/2 commands: 479details about PS/2 commands:
453 480
454http://www.computer-engineering.org/ps2mouse/ 481http://www.computer-engineering.org/ps2mouse/
455 482
456============================================================================== 483Programming Sequence for Determining Packet Parsing Flow
457* Programming Sequence for Determining Packet Parsing Flow 484========================================================
458============================================================================== 485
4591. Identify FSP by reading device ID(0x00) and version(0x01) register 4861. Identify FSP by reading device ID(0x00) and version(0x01) register
460 487
4612a. For FSP version < STL3888 Cx, determine number of buttons by reading 4882. For FSP version < STL3888 Cx, determine number of buttons by reading
462 the 'test mode status' (0x20) register: 489 the 'test mode status' (0x20) register::
463 490
464 buttons = reg[0x20] & 0x30 491 buttons = reg[0x20] & 0x30
465 492
@@ -476,25 +503,24 @@ http://www.computer-engineering.org/ps2mouse/
476 Refer to 'Finger Sensing Pad PS/2 Mouse Intellimouse' 503 Refer to 'Finger Sensing Pad PS/2 Mouse Intellimouse'
477 section A for packet parsing detail 504 section A for packet parsing detail
478 505
4792b. For FSP version >= STL3888 Cx: 5063. For FSP version >= STL3888 Cx:
480 Refer to 'Finger Sensing Pad PS/2 Mouse Intellimouse' 507 Refer to 'Finger Sensing Pad PS/2 Mouse Intellimouse'
481 section A for packet parsing detail (ignore byte 4, bit ~ 7) 508 section A for packet parsing detail (ignore byte 4, bit ~ 7)
482 509
483============================================================================== 510Programming Sequence for Register Reading/Writing
484* Programming Sequence for Register Reading/Writing 511=================================================
485==============================================================================
486 512
487Register inversion requirement: 513Register inversion requirement:
488 514
489 Following values needed to be inverted(the '~' operator in C) before being 515Following values needed to be inverted(the '~' operator in C) before being
490sent to FSP: 516sent to FSP::
491 517
492 0xe8, 0xe9, 0xee, 0xf2, 0xf3 and 0xff. 518 0xe8, 0xe9, 0xee, 0xf2, 0xf3 and 0xff.
493 519
494Register swapping requirement: 520Register swapping requirement:
495 521
496 Following values needed to have their higher 4 bits and lower 4 bits being 522Following values needed to have their higher 4 bits and lower 4 bits being
497swapped before being sent to FSP: 523swapped before being sent to FSP::
498 524
499 10, 20, 40, 60, 80, 100 and 200. 525 10, 20, 40, 60, 80, 100 and 200.
500 526
@@ -512,33 +538,33 @@ Register reading sequence:
512 inverted(refer to the 'Register inversion requirement' section), 538 inverted(refer to the 'Register inversion requirement' section),
513 goto step 6 539 goto step 6
514 540
515 5a. send 0x68 PS/2 command to FSP; 541 a. send 0x68 PS/2 command to FSP;
516 542
517 5b. send the inverted register address to FSP and goto step 8; 543 b. send the inverted register address to FSP and goto step 8;
518 544
519 6. if the register address being to read is not required to be 545 6. if the register address being to read is not required to be
520 swapped(refer to the 'Register swapping requirement' section), 546 swapped(refer to the 'Register swapping requirement' section),
521 goto step 7 547 goto step 7
522 548
523 6a. send 0xcc PS/2 command to FSP; 549 a. send 0xcc PS/2 command to FSP;
524 550
525 6b. send the swapped register address to FSP and goto step 8; 551 b. send the swapped register address to FSP and goto step 8;
526 552
527 7. send 0x66 PS/2 command to FSP; 553 7. send 0x66 PS/2 command to FSP;
528 554
529 7a. send the original register address to FSP and goto step 8; 555 a. send the original register address to FSP and goto step 8;
530 556
531 8. send 0xe9(status request) PS/2 command to FSP; 557 8. send 0xe9(status request) PS/2 command to FSP;
532 558
533 9. the 4th byte of the response read from FSP should be the 559 9. the 4th byte of the response read from FSP should be the
534 requested register value(?? indicates don't care byte): 560 requested register value(?? indicates don't care byte)::
535 561
536 host: 0xe9 562 host: 0xe9
537 3888: 0xfa (??) (??) (val) 563 3888: 0xfa (??) (??) (val)
538 564
539 * Note that since the Cx release, the hardware will return 1's 565 * Note that since the Cx release, the hardware will return 1's
540 complement of the register value at the 3rd byte of status request 566 complement of the register value at the 3rd byte of status request
541 result: 567 result::
542 568
543 host: 0xe9 569 host: 0xe9
544 3888: 0xfa (??) (~val) (val) 570 3888: 0xfa (??) (~val) (val)
@@ -551,21 +577,21 @@ Register writing sequence:
551 inverted(refer to the 'Register inversion requirement' section), 577 inverted(refer to the 'Register inversion requirement' section),
552 goto step 3 578 goto step 3
553 579
554 2a. send 0x74 PS/2 command to FSP; 580 a. send 0x74 PS/2 command to FSP;
555 581
556 2b. send the inverted register address to FSP and goto step 5; 582 b. send the inverted register address to FSP and goto step 5;
557 583
558 3. if the register address being to write is not required to be 584 3. if the register address being to write is not required to be
559 swapped(refer to the 'Register swapping requirement' section), 585 swapped(refer to the 'Register swapping requirement' section),
560 goto step 4 586 goto step 4
561 587
562 3a. send 0x77 PS/2 command to FSP; 588 a. send 0x77 PS/2 command to FSP;
563 589
564 3b. send the swapped register address to FSP and goto step 5; 590 b. send the swapped register address to FSP and goto step 5;
565 591
566 4. send 0x55 PS/2 command to FSP; 592 4. send 0x55 PS/2 command to FSP;
567 593
568 4a. send the register address to FSP and goto step 5; 594 a. send the register address to FSP and goto step 5;
569 595
570 5. send 0xf3 PS/2 command to FSP; 596 5. send 0xf3 PS/2 command to FSP;
571 597
@@ -573,43 +599,42 @@ Register writing sequence:
573 inverted(refer to the 'Register inversion requirement' section), 599 inverted(refer to the 'Register inversion requirement' section),
574 goto step 7 600 goto step 7
575 601
576 6a. send 0x47 PS/2 command to FSP; 602 a. send 0x47 PS/2 command to FSP;
577 603
578 6b. send the inverted register value to FSP and goto step 9; 604 b. send the inverted register value to FSP and goto step 9;
579 605
580 7. if the register value being to write is not required to be 606 7. if the register value being to write is not required to be
581 swapped(refer to the 'Register swapping requirement' section), 607 swapped(refer to the 'Register swapping requirement' section),
582 goto step 8 608 goto step 8
583 609
584 7a. send 0x44 PS/2 command to FSP; 610 a. send 0x44 PS/2 command to FSP;
585 611
586 7b. send the swapped register value to FSP and goto step 9; 612 b. send the swapped register value to FSP and goto step 9;
587 613
588 8. send 0x33 PS/2 command to FSP; 614 8. send 0x33 PS/2 command to FSP;
589 615
590 8a. send the register value to FSP; 616 a. send the register value to FSP;
591 617
592 9. the register writing sequence is completed. 618 9. the register writing sequence is completed.
593 619
594 * Note that since the Cx release, the hardware will return 1's 620 * Since the Cx release, the hardware will return 1's
595 complement of the register value at the 3rd byte of status request 621 complement of the register value at the 3rd byte of status request
596 result. Host can optionally send another 0xe9 (status request) PS/2 622 result. Host can optionally send another 0xe9 (status request) PS/2
597 command to FSP at the end of register writing to verify that the 623 command to FSP at the end of register writing to verify that the
598 register writing operation is successful (?? indicates don't care 624 register writing operation is successful (?? indicates don't care
599 byte): 625 byte)::
600 626
601 host: 0xe9 627 host: 0xe9
602 3888: 0xfa (??) (~val) (val) 628 3888: 0xfa (??) (~val) (val)
603 629
604============================================================================== 630Programming Sequence for Page Register Reading/Writing
605* Programming Sequence for Page Register Reading/Writing 631======================================================
606==============================================================================
607 632
608 In order to overcome the limitation of maximum number of registers 633In order to overcome the limitation of maximum number of registers
609supported, the hardware separates register into different groups called 634supported, the hardware separates register into different groups called
610'pages.' Each page is able to include up to 255 registers. 635'pages.' Each page is able to include up to 255 registers.
611 636
612 The default page after power up is 0x82; therefore, if one has to get 637The default page after power up is 0x82; therefore, if one has to get
613access to register 0x8301, one has to use following sequence to switch 638access to register 0x8301, one has to use following sequence to switch
614to page 0x83, then start reading/writing from/to offset 0x01 by using 639to page 0x83, then start reading/writing from/to offset 0x01 by using
615the register read/write sequence described in previous section. 640the register read/write sequence described in previous section.
@@ -632,6 +657,7 @@ Page register reading sequence:
632 657
633 8. the response read from FSP should be the requested page value. 658 8. the response read from FSP should be the requested page value.
634 659
660
635Page register writing sequence: 661Page register writing sequence:
636 662
637 1. send 0xf3 PS/2 command to FSP; 663 1. send 0xf3 PS/2 command to FSP;
@@ -646,17 +672,17 @@ Page register writing sequence:
646 inverted(refer to the 'Register inversion requirement' section), 672 inverted(refer to the 'Register inversion requirement' section),
647 goto step 6 673 goto step 6
648 674
649 5a. send 0x47 PS/2 command to FSP; 675 a. send 0x47 PS/2 command to FSP;
650 676
651 5b. send the inverted page address to FSP and goto step 9; 677 b. send the inverted page address to FSP and goto step 9;
652 678
653 6. if the page address being written is not required to be 679 6. if the page address being written is not required to be
654 swapped(refer to the 'Register swapping requirement' section), 680 swapped(refer to the 'Register swapping requirement' section),
655 goto step 7 681 goto step 7
656 682
657 6a. send 0x44 PS/2 command to FSP; 683 a. send 0x44 PS/2 command to FSP;
658 684
659 6b. send the swapped page address to FSP and goto step 9; 685 b. send the swapped page address to FSP and goto step 9;
660 686
661 7. send 0x33 PS/2 command to FSP; 687 7. send 0x33 PS/2 command to FSP;
662 688
@@ -664,16 +690,17 @@ Page register writing sequence:
664 690
665 9. the page register writing sequence is completed. 691 9. the page register writing sequence is completed.
666 692
667============================================================================== 693Gesture ID
668* Gesture ID 694==========
669==============================================================================
670 695
671 Unlike other devices which sends multiple fingers' coordinates to host, 696Unlike other devices which sends multiple fingers' coordinates to host,
672FSP processes multiple fingers' coordinates internally and convert them 697FSP processes multiple fingers' coordinates internally and convert them
673into a 8 bits integer, namely 'Gesture ID.' Following is a list of 698into a 8 bits integer, namely 'Gesture ID.' Following is a list of
674supported gesture IDs: 699supported gesture IDs:
675 700
701 ======= ==================================
676 ID Description 702 ID Description
703 ======= ==================================
677 0x86 2 finger straight up 704 0x86 2 finger straight up
678 0x82 2 finger straight down 705 0x82 2 finger straight down
679 0x80 2 finger straight right 706 0x80 2 finger straight right
@@ -687,38 +714,38 @@ supported gesture IDs:
687 0x28 3 finger straight right 714 0x28 3 finger straight right
688 0x2c 3 finger straight left 715 0x2c 3 finger straight left
689 0x38 palm 716 0x38 palm
717 ======= ==================================
690 718
691============================================================================== 719Register Listing
692* Register Listing 720================
693==============================================================================
694 721
695 Registers are represented in 16 bits values. The higher 8 bits represent 722Registers are represented in 16 bits values. The higher 8 bits represent
696the page address and the lower 8 bits represent the relative offset within 723the page address and the lower 8 bits represent the relative offset within
697that particular page. Refer to the 'Programming Sequence for Page Register 724that particular page. Refer to the 'Programming Sequence for Page Register
698Reading/Writing' section for instructions on how to change current page 725Reading/Writing' section for instructions on how to change current page
699address. 726address::
700 727
701offset width default r/w name 728 offset width default r/w name
7020x8200 bit7~bit0 0x01 RO device ID 729 0x8200 bit7~bit0 0x01 RO device ID
703 730
7040x8201 bit7~bit0 RW version ID 731 0x8201 bit7~bit0 RW version ID
705 0xc1: STL3888 Ax 732 0xc1: STL3888 Ax
706 0xd0 ~ 0xd2: STL3888 Bx 733 0xd0 ~ 0xd2: STL3888 Bx
707 0xe0 ~ 0xe1: STL3888 Cx 734 0xe0 ~ 0xe1: STL3888 Cx
708 0xe2 ~ 0xe3: STL3888 Dx 735 0xe2 ~ 0xe3: STL3888 Dx
709 736
7100x8202 bit7~bit0 0x01 RO vendor ID 737 0x8202 bit7~bit0 0x01 RO vendor ID
711 738
7120x8203 bit7~bit0 0x01 RO product ID 739 0x8203 bit7~bit0 0x01 RO product ID
713 740
7140x8204 bit3~bit0 0x01 RW revision ID 741 0x8204 bit3~bit0 0x01 RW revision ID
715 742
7160x820b test mode status 1 743 0x820b test mode status 1
717 bit3 1 RO 0: rotate 180 degree 744 bit3 1 RO 0: rotate 180 degree
718 1: no rotation 745 1: no rotation
719 *only supported by H/W prior to Cx 746 *only supported by H/W prior to Cx
720 747
7210x820f register file page control 748 0x820f register file page control
722 bit2 0 RW 1: rotate 180 degree 749 bit2 0 RW 1: rotate 180 degree
723 0: no rotation 750 0: no rotation
724 *supported since Cx 751 *supported since Cx
@@ -726,7 +753,7 @@ offset width default r/w name
726 bit0 0 RW 1 to enable page 1 register files 753 bit0 0 RW 1 to enable page 1 register files
727 *only supported by H/W prior to Cx 754 *only supported by H/W prior to Cx
728 755
7290x8210 RW system control 1 756 0x8210 RW system control 1
730 bit0 1 RW Reserved, must be 1 757 bit0 1 RW Reserved, must be 1
731 bit1 0 RW Reserved, must be 0 758 bit1 0 RW Reserved, must be 0
732 bit4 0 RW Reserved, must be 0 759 bit4 0 RW Reserved, must be 0
@@ -737,7 +764,7 @@ offset width default r/w name
737 40 41 42 43. In addition to that, this bit must be 1 when gesture 764 40 41 42 43. In addition to that, this bit must be 1 when gesture
738 mode is enabled) 765 mode is enabled)
739 766
7400x8220 test mode status 767 0x8220 test mode status
741 bit5~bit4 RO number of buttons 768 bit5~bit4 RO number of buttons
742 11 => 2, lbtn/rbtn 769 11 => 2, lbtn/rbtn
743 10 => 4, lbtn/rbtn/scru/scrd 770 10 => 4, lbtn/rbtn/scru/scrd
@@ -745,13 +772,13 @@ offset width default r/w name
745 00 => 6, lbtn/rbtn/scru/scrd/fbtn/bbtn 772 00 => 6, lbtn/rbtn/scru/scrd/fbtn/bbtn
746 *only supported by H/W prior to Cx 773 *only supported by H/W prior to Cx
747 774
7480x8231 RW on-pad command detection 775 0x8231 RW on-pad command detection
749 bit7 0 RW on-pad command left button down tag 776 bit7 0 RW on-pad command left button down tag
750 enable 777 enable
751 0: disable, 1: enable 778 0: disable, 1: enable
752 *only supported by H/W prior to Cx 779 *only supported by H/W prior to Cx
753 780
7540x8234 RW on-pad command control 5 781 0x8234 RW on-pad command control 5
755 bit4~bit0 0x05 RW XLO in 0s/4/1, so 03h = 0010.1b = 2.5 782 bit4~bit0 0x05 RW XLO in 0s/4/1, so 03h = 0010.1b = 2.5
756 (Note that position unit is in 0.5 scanline) 783 (Note that position unit is in 0.5 scanline)
757 *only supported by H/W prior to Cx 784 *only supported by H/W prior to Cx
@@ -760,22 +787,22 @@ offset width default r/w name
760 0: disable, 1: enable 787 0: disable, 1: enable
761 *only supported by H/W prior to Cx 788 *only supported by H/W prior to Cx
762 789
7630x8235 RW on-pad command control 6 790 0x8235 RW on-pad command control 6
764 bit4~bit0 0x1d RW XHI in 0s/4/1, so 19h = 1100.1b = 12.5 791 bit4~bit0 0x1d RW XHI in 0s/4/1, so 19h = 1100.1b = 12.5
765 (Note that position unit is in 0.5 scanline) 792 (Note that position unit is in 0.5 scanline)
766 *only supported by H/W prior to Cx 793 *only supported by H/W prior to Cx
767 794
7680x8236 RW on-pad command control 7 795 0x8236 RW on-pad command control 7
769 bit4~bit0 0x04 RW YLO in 0s/4/1, so 03h = 0010.1b = 2.5 796 bit4~bit0 0x04 RW YLO in 0s/4/1, so 03h = 0010.1b = 2.5
770 (Note that position unit is in 0.5 scanline) 797 (Note that position unit is in 0.5 scanline)
771 *only supported by H/W prior to Cx 798 *only supported by H/W prior to Cx
772 799
7730x8237 RW on-pad command control 8 800 0x8237 RW on-pad command control 8
774 bit4~bit0 0x13 RW YHI in 0s/4/1, so 11h = 1000.1b = 8.5 801 bit4~bit0 0x13 RW YHI in 0s/4/1, so 11h = 1000.1b = 8.5
775 (Note that position unit is in 0.5 scanline) 802 (Note that position unit is in 0.5 scanline)
776 *only supported by H/W prior to Cx 803 *only supported by H/W prior to Cx
777 804
7780x8240 RW system control 5 805 0x8240 RW system control 5
779 bit1 0 RW FSP Intellimouse mode enable 806 bit1 0 RW FSP Intellimouse mode enable
780 0: disable, 1: enable 807 0: disable, 1: enable
781 *only supported by H/W prior to Cx 808 *only supported by H/W prior to Cx
@@ -813,7 +840,7 @@ offset width default r/w name
813 0: disable, 1: enable 840 0: disable, 1: enable
814 *only supported by H/W prior to Cx 841 *only supported by H/W prior to Cx
815 842
8160x8243 RW on-pad control 843 0x8243 RW on-pad control
817 bit0 0 RW on-pad control enable 844 bit0 0 RW on-pad control enable
818 0: disable, 1: enable 845 0: disable, 1: enable
819 (Note that if this bit is cleared, bit 3/5 will be ineffective) 846 (Note that if this bit is cleared, bit 3/5 will be ineffective)
@@ -827,7 +854,7 @@ offset width default r/w name
827 0: disable, 1: enable 854 0: disable, 1: enable
828 *only supported by H/W prior to Cx 855 *only supported by H/W prior to Cx
829 856
8300x8290 RW software control register 1 857 0x8290 RW software control register 1
831 bit0 0 RW absolute coordination mode 858 bit0 0 RW absolute coordination mode
832 0: disable, 1: enable 859 0: disable, 1: enable
833 *supported since Cx 860 *supported since Cx
@@ -856,16 +883,17 @@ offset width default r/w name
856 *supported since Cx 883 *supported since Cx
857 884
858 bit7 0 RW Bx packet output compatible mode 885 bit7 0 RW Bx packet output compatible mode
859 0: disable, 1: enable *supported since Cx 886 0: disable, 1: enable
887 *supported since Cx
860 *supported since Cx 888 *supported since Cx
861 889
862 890
8630x833d RW on-pad command control 1 891 0x833d RW on-pad command control 1
864 bit7 1 RW on-pad command detection enable 892 bit7 1 RW on-pad command detection enable
865 0: disable, 1: enable 893 0: disable, 1: enable
866 *supported since Cx 894 *supported since Cx
867 895
8680x833e RW on-pad command detection 896 0x833e RW on-pad command detection
869 bit7 0 RW on-pad command left button down tag 897 bit7 0 RW on-pad command left button down tag
870 enable. Works only in H/W based PS/2 898 enable. Works only in H/W based PS/2
871 data packet mode. 899 data packet mode.