~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/input/devices/sentelic.rst

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/input/devices/sentelic.rst (Version linux-6.11.5) and /Documentation/input/devices/sentelic.rst (Version linux-2.6.0)


  1 .. include:: <isonum.txt>                         
  2                                                   
  3 =================                                 
  4 Sentelic Touchpad                                 
  5 =================                                 
  6                                                   
  7                                                   
  8 :Copyright: |copy| 2002-2011 Sentelic Corporat    
  9                                                   
 10 :Last update: Dec-07-2011                         
 11                                                   
 12 Finger Sensing Pad Intellimouse Mode (scrollin    
 13 ==============================================    
 14                                                   
 15 A) MSID 4: Scrolling wheel mode plus Forward p    
 16    page (5th button)                              
 17                                                   
 18 1. Set sample rate to 200;                        
 19 2. Set sample rate to 200;                        
 20 3. Set sample rate to 80;                         
 21 4. Issuing the "Get device ID" command (0xF2)     
 22 5. FSP will respond 0x04.                         
 23                                                   
 24 ::                                                
 25                                                   
 26     Packet 1                                      
 27     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
 28     BYTE  |---------------|BYTE |-------------    
 29       1   |Y|X|y|x|1|M|R|L|  2  |X|X|X|X|X|X|X    
 30           |---------------|     |-------------    
 31                                                   
 32     Byte 1: Bit7 => Y overflow                    
 33             Bit6 => X overflow                    
 34             Bit5 => Y sign bit                    
 35             Bit4 => X sign bit                    
 36             Bit3 => 1                             
 37             Bit2 => Middle Button, 1 is presse    
 38             Bit1 => Right Button, 1 is pressed    
 39             Bit0 => Left Button, 1 is pressed,    
 40     Byte 2: X Movement(9-bit 2's complement in    
 41     Byte 3: Y Movement(9-bit 2's complement in    
 42     Byte 4: Bit3~Bit0 => the scrolling wheel's    
 43                         valid values, -8 ~ +7     
 44             Bit4 => 1 = 4th mouse button is pr    
 45                     0 = 4th mouse button is no    
 46             Bit5 => 1 = 5th mouse button is pr    
 47                     0 = 5th mouse button is no    
 48                                                   
 49 B) MSID 6: Horizontal and Vertical scrolling      
 50                                                   
 51 - Set bit 1 in register 0x40 to 1                 
 52                                                   
 53 FSP replaces scrolling wheel's movement as 4 b    
 54 vertical scrolling.                               
 55                                                   
 56 ::                                                
 57                                                   
 58     Packet 1                                      
 59     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
 60     BYTE  |---------------|BYTE |-------------    
 61       1   |Y|X|y|x|1|M|R|L|  2  |X|X|X|X|X|X|X    
 62           |---------------|     |-------------    
 63                                                   
 64     Byte 1: Bit7 => Y overflow                    
 65             Bit6 => X overflow                    
 66             Bit5 => Y sign bit                    
 67             Bit4 => X sign bit                    
 68             Bit3 => 1                             
 69             Bit2 => Middle Button, 1 is presse    
 70             Bit1 => Right Button, 1 is pressed    
 71             Bit0 => Left Button, 1 is pressed,    
 72     Byte 2: X Movement(9-bit 2's complement in    
 73     Byte 3: Y Movement(9-bit 2's complement in    
 74     Byte 4: Bit0 => the Vertical scrolling mov    
 75             Bit1 => the Vertical scrolling mov    
 76             Bit2 => the Horizontal scrolling m    
 77             Bit3 => the Horizontal scrolling m    
 78             Bit4 => 1 = 4th mouse button is pr    
 79                     0 = 4th mouse button is no    
 80             Bit5 => 1 = 5th mouse button is pr    
 81                     0 = 5th mouse button is no    
 82                                                   
 83 C) MSID 7                                         
 84                                                   
 85 FSP uses 2 packets (8 Bytes) to represent Abso    
 86 so we have PACKET NUMBER to identify packets.     
 87                                                   
 88   If PACKET NUMBER is 0, the packet is Packet     
 89   If PACKET NUMBER is 1, the packet is Packet     
 90   Please count this number in program.            
 91                                                   
 92 MSID6 special packet will be enable at the sam    
 93                                                   
 94 Absolute position for STL3886-G0                  
 95 ================================                  
 96                                                   
 97 1. Set bit 2 or 3 in register 0x40 to 1           
 98 2. Set bit 6 in register 0x40 to 1                
 99                                                   
100 ::                                                
101                                                   
102     Packet 1 (ABSOLUTE POSITION)                  
103     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
104     BYTE  |---------------|BYTE |-------------    
105       1   |0|1|V|1|1|M|R|L|  2  |X|X|X|X|X|X|X    
106           |---------------|     |-------------    
107                                                   
108     Byte 1: Bit7~Bit6 => 00, Normal data packe    
109                     => 01, Absolute coordinati    
110                     => 10, Notify packet          
111             Bit5 => valid bit                     
112             Bit4 => 1                             
113             Bit3 => 1                             
114             Bit2 => Middle Button, 1 is presse    
115             Bit1 => Right Button, 1 is pressed    
116             Bit0 => Left Button, 1 is pressed,    
117     Byte 2: X coordinate (xpos[9:2])              
118     Byte 3: Y coordinate (ypos[9:2])              
119     Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:    
120             Bit3~Bit2 => X coordinate (ypos[1:    
121             Bit4 => scroll up                     
122             Bit5 => scroll down                   
123             Bit6 => scroll left                   
124             Bit7 => scroll right                  
125                                                   
126     Notify Packet for G0                          
127     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
128     BYTE  |---------------|BYTE |-------------    
129       1   |1|0|0|1|1|M|R|L|  2  |C|C|C|C|C|C|C    
130           |---------------|     |-------------    
131                                                   
132     Byte 1: Bit7~Bit6 => 00, Normal data packe    
133                     => 01, Absolute coordinati    
134                     => 10, Notify packet          
135             Bit5 => 0                             
136             Bit4 => 1                             
137             Bit3 => 1                             
138             Bit2 => Middle Button, 1 is presse    
139             Bit1 => Right Button, 1 is pressed    
140             Bit0 => Left Button, 1 is pressed,    
141     Byte 2: Message Type => 0x5A (Enable/Disab    
142             Mode Type => 0xA5 (Normal/Icon mod    
143     Byte 3: Message Type => 0x00 (Disabled)       
144                         => 0x01 (Enabled)         
145             Mode Type    => 0x00 (Normal)         
146                         => 0x01 (Icon)            
147     Byte 4: Bit7~Bit0 => Don't Care               
148                                                   
149 Absolute position for STL3888-Ax                  
150 ================================                  
151                                                   
152 ::                                                
153                                                   
154     Packet 1 (ABSOLUTE POSITION)                  
155     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
156     BYTE  |---------------|BYTE |-------------    
157       1   |0|1|V|A|1|L|0|1|  2  |X|X|X|X|X|X|X    
158           |---------------|     |-------------    
159                                                   
160     Byte 1: Bit7~Bit6 => 00, Normal data packe    
161                     => 01, Absolute coordinati    
162                     => 10, Notify packet          
163                     => 11, Normal data packet     
164             Bit5 => Valid bit, 0 means that th    
165                     When both fingers are up,     
166                     bit.                          
167             Bit4 => arc                           
168             Bit3 => 1                             
169             Bit2 => Left Button, 1 is pressed,    
170             Bit1 => 0                             
171             Bit0 => 1                             
172     Byte 2: X coordinate (xpos[9:2])              
173     Byte 3: Y coordinate (ypos[9:2])              
174     Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:    
175             Bit3~Bit2 => X coordinate (ypos[1:    
176             Bit5~Bit4 => y1_g                     
177             Bit7~Bit6 => x1_g                     
178                                                   
179     Packet 2 (ABSOLUTE POSITION)                  
180     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
181     BYTE  |---------------|BYTE |-------------    
182       1   |0|1|V|A|1|R|1|0|  2  |X|X|X|X|X|X|X    
183           |---------------|     |-------------    
184                                                   
185     Byte 1: Bit7~Bit6 => 00, Normal data packe    
186                     => 01, Absolute coordinate    
187                     => 10, Notify packet          
188                     => 11, Normal data packet     
189             Bit5 => Valid bit, 0 means that th    
190                     When both fingers are up,     
191                     bit.                          
192             Bit4 => arc                           
193             Bit3 => 1                             
194             Bit2 => Right Button, 1 is pressed    
195             Bit1 => 1                             
196             Bit0 => 0                             
197     Byte 2: X coordinate (xpos[9:2])              
198     Byte 3: Y coordinate (ypos[9:2])              
199     Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:    
200             Bit3~Bit2 => X coordinate (ypos[1:    
201             Bit5~Bit4 => y2_g                     
202             Bit7~Bit6 => x2_g                     
203                                                   
204     Notify Packet for STL3888-Ax                  
205     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
206     BYTE  |---------------|BYTE |-------------    
207       1   |1|0|1|P|1|M|R|L|  2  |C|C|C|C|C|C|C    
208           |---------------|     |-------------    
209                                                   
210     Byte 1: Bit7~Bit6 => 00, Normal data packe    
211                     => 01, Absolute coordinate    
212                     => 10, Notify packet          
213                     => 11, Normal data packet     
214             Bit5 => 1                             
215             Bit4 => when in absolute coordinat    
216                     0: left button is generate    
217                     1: left button is generate    
218             Bit3 => 1                             
219             Bit2 => Middle Button, 1 is presse    
220             Bit1 => Right Button, 1 is pressed    
221             Bit0 => Left Button, 1 is pressed,    
222     Byte 2: Message Type => 0xB7 (Multi Finger    
223     Byte 3: Bit7~Bit6 => Don't care               
224             Bit5~Bit4 => Number of fingers        
225             Bit3~Bit1 => Reserved                 
226             Bit0 => 1: enter gesture mode; 0:     
227     Byte 4: Bit7 => scroll right button           
228             Bit6 => scroll left button            
229             Bit5 => scroll down button            
230             Bit4 => scroll up button              
231                 * Note that if gesture and add    
232                 happen at the same time, the b    
233                 be sent.                          
234             Bit3~Bit0 => Reserved                 
235                                                   
236 Sample sequence of Multi-finger, Multi-coordin    
237                                                   
238         notify packet (valid bit == 1), abs pk    
239         abs pkt 2, ..., notify packet (valid b    
240                                                   
241 Absolute position for STL3888-B0                  
242 ================================                  
243                                                   
244 ::                                                
245                                                   
246     Packet 1(ABSOLUTE POSITION)                   
247     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
248     BYTE  |---------------|BYTE |-------------    
249       1   |0|1|V|F|1|0|R|L|  2  |X|X|X|X|X|X|X    
250           |---------------|     |-------------    
251                                                   
252     Byte 1: Bit7~Bit6 => 00, Normal data packe    
253                     => 01, Absolute coordinate    
254                     => 10, Notify packet          
255                     => 11, Normal data packet     
256             Bit5 => Valid bit, 0 means that th    
257                     When both fingers are up,     
258                     bit.                          
259             Bit4 => finger up/down information    
260             Bit3 => 1                             
261             Bit2 => finger index, 0 is the fir    
262             Bit1 => Right Button, 1 is pressed    
263             Bit0 => Left Button, 1 is pressed,    
264     Byte 2: X coordinate (xpos[9:2])              
265     Byte 3: Y coordinate (ypos[9:2])              
266     Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:    
267             Bit3~Bit2 => X coordinate (ypos[1:    
268             Bit4 => scroll down button            
269             Bit5 => scroll up button              
270             Bit6 => scroll left button            
271             Bit7 => scroll right button           
272                                                   
273     Packet 2 (ABSOLUTE POSITION)                  
274     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
275     BYTE  |---------------|BYTE |-------------    
276       1   |0|1|V|F|1|1|R|L|  2  |X|X|X|X|X|X|X    
277           |---------------|     |-------------    
278                                                   
279     Byte 1: Bit7~Bit6 => 00, Normal data packe    
280                     => 01, Absolute coordinati    
281                     => 10, Notify packet          
282                     => 11, Normal data packet     
283             Bit5 => Valid bit, 0 means that th    
284                     When both fingers are up,     
285                     bit.                          
286             Bit4 => finger up/down information    
287             Bit3 => 1                             
288             Bit2 => finger index, 0 is the fir    
289             Bit1 => Right Button, 1 is pressed    
290             Bit0 => Left Button, 1 is pressed,    
291     Byte 2: X coordinate (xpos[9:2])              
292     Byte 3: Y coordinate (ypos[9:2])              
293     Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:    
294             Bit3~Bit2 => X coordinate (ypos[1:    
295             Bit4 => scroll down button            
296             Bit5 => scroll up button              
297             Bit6 => scroll left button            
298             Bit7 => scroll right button           
299                                                   
300 Notify Packet for STL3888-B0::                    
301                                                   
302     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
303     BYTE  |---------------|BYTE |-------------    
304       1   |1|0|1|P|1|M|R|L|  2  |C|C|C|C|C|C|C    
305           |---------------|     |-------------    
306                                                   
307     Byte 1: Bit7~Bit6 => 00, Normal data packe    
308                     => 01, Absolute coordinati    
309                     => 10, Notify packet          
310                     => 11, Normal data packet     
311             Bit5 => 1                             
312             Bit4 => when in absolute coordinat    
313                     0: left button is generate    
314                     1: left button is generate    
315             Bit3 => 1                             
316             Bit2 => Middle Button, 1 is presse    
317             Bit1 => Right Button, 1 is pressed    
318             Bit0 => Left Button, 1 is pressed,    
319     Byte 2: Message Type => 0xB7 (Multi Finger    
320     Byte 3: Bit7~Bit6 => Don't care               
321             Bit5~Bit4 => Number of fingers        
322             Bit3~Bit1 => Reserved                 
323             Bit0 => 1: enter gesture mode; 0:     
324     Byte 4: Bit7 => scroll right button           
325             Bit6 => scroll left button            
326             Bit5 => scroll up button              
327             Bit4 => scroll down button            
328                 * Note that if gesture and add    
329                 happen at the same time, the b    
330                 be sent.                          
331             Bit3~Bit0 => Reserved                 
332                                                   
333 Sample sequence of Multi-finger, Multi-coordin    
334                                                   
335         notify packet (valid bit == 1), abs pk    
336         abs pkt 2, ..., notify packet (valid b    
337                                                   
338 Absolute position for STL3888-Cx and STL3888-D    
339 ==============================================    
340                                                   
341 ::                                                
342                                                   
343     Single Finger, Absolute Coordinate Mode (S    
344     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
345     BYTE  |---------------|BYTE |-------------    
346       1   |0|1|0|P|1|M|R|L|  2  |X|X|X|X|X|X|X    
347           |---------------|     |-------------    
348                                                   
349     Byte 1: Bit7~Bit6 => 00, Normal data packe    
350                     => 01, Absolute coordinate    
351                     => 10, Notify packet          
352             Bit5 => Coordinate mode(always 0 i    
353                     0: single-finger absolute     
354                     1: multi-finger, multiple     
355             Bit4 => 0: The LEFT button is gene    
356                     1: The LEFT button is gene    
357                     Default is 1 even if the L    
358             Bit3 => Always 1, as specified by     
359             Bit2 => Middle Button, 1 is presse    
360             Bit1 => Right Button, 1 is pressed    
361             Bit0 => Left Button, 1 is pressed,    
362     Byte 2: X coordinate (xpos[9:2])              
363     Byte 3: Y coordinate (ypos[9:2])              
364     Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:    
365             Bit3~Bit2 => X coordinate (ypos[1:    
366             Bit4 => 4th mouse button(forward o    
367             Bit5 => 5th mouse button(backward     
368             Bit6 => scroll left button            
369             Bit7 => scroll right button           
370                                                   
371     Multi Finger, Multiple Coordinates Mode (M    
372     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
373     BYTE  |---------------|BYTE |-------------    
374       1   |0|1|1|P|1|F|R|L|  2  |X|X|X|X|X|X|X    
375           |---------------|     |-------------    
376                                                   
377     Byte 1: Bit7~Bit6 => 00, Normal data packe    
378                     => 01, Absolute coordinati    
379                     => 10, Notify packet          
380             Bit5 => Coordinate mode (always 1     
381                     0: single-finger absolute     
382                     1: multi-finger, multiple     
383             Bit4 => 0: The LEFT button is gene    
384                     1: The LEFT button is gene    
385                     Default is 1 even if the L    
386             Bit3 => Always 1, as specified by     
387             Bit2 => Finger index, 0 is the fir    
388                     If bit 1 and 0 are all 1 a    
389                     button is pressed.            
390             Bit1 => Right Button, 1 is pressed    
391             Bit0 => Left Button, 1 is pressed,    
392     Byte 2: X coordinate (xpos[9:2])              
393     Byte 3: Y coordinate (ypos[9:2])              
394     Byte 4: Bit1~Bit0 => Y coordinate (xpos[1:    
395             Bit3~Bit2 => X coordinate (ypos[1:    
396             Bit4 => 4th mouse button(forward o    
397             Bit5 => 5th mouse button(backward     
398             Bit6 => scroll left button            
399             Bit7 => scroll right button           
400                                                   
401 When one of the two fingers is up, the device     
402 MFMC#0 report packets with zero X and Y to rep    
403 four consecutive MFMC#1 report packets with ze    
404 the 2nd finger is up.  On the other hand, if b    
405 will output four consecutive single-finger, ab    
406 with zero X and Y.                                
407                                                   
408 Notify Packet for STL3888-Cx/Dx::                 
409                                                   
410     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
411     BYTE  |---------------|BYTE |-------------    
412       1   |1|0|0|P|1|M|R|L|  2  |C|C|C|C|C|C|C    
413           |---------------|     |-------------    
414                                                   
415     Byte 1: Bit7~Bit6 => 00, Normal data packe    
416                     => 01, Absolute coordinate    
417                     => 10, Notify packet          
418             Bit5 => Always 0                      
419             Bit4 => 0: The LEFT button is gene    
420                     1: The LEFT button is gene    
421                     Default is 1 even if the L    
422             Bit3 => 1                             
423             Bit2 => Middle Button, 1 is presse    
424             Bit1 => Right Button, 1 is pressed    
425             Bit0 => Left Button, 1 is pressed,    
426     Byte 2: Message type:                         
427             0xba => gesture information           
428             0xc0 => one finger hold-rotating g    
429     Byte 3: The first parameter for the receiv    
430             0xba => gesture ID (refer to the '    
431             0xc0 => region ID                     
432     Byte 4: The second parameter for the recei    
433             0xba => N/A                           
434             0xc0 => finger up/down information    
435                                                   
436 Sample sequence of Multi-finger, Multi-coordin    
437                                                   
438         notify packet (valid bit == 1), MFMC p    
439         MFMC packet 2 (byte 1, bit 2 == 1), MF    
440         ..., notify packet (valid bit == 0)       
441                                                   
442         That is, when the device is in MFMC mo    
443         interleaved absolute coordinate packet    
444                                                   
445 FSP Enable/Disable packet                         
446 =========================                         
447                                                   
448 ::                                                
449                                                   
450     Bit 7 6 5 4 3 2 1 0       7 6 5 4 3 2 1 0     
451     BYTE  |---------------|BYTE |-------------    
452       1   |Y|X|0|0|1|M|R|L|  2  |0|1|0|1|1|0|1    
453           |---------------|     |-------------    
454                                                   
455     FSP will send out enable/disable packet wh    
456     command. Host will receive the packet whic    
457     be set. The packet only use byte 0 and byt    
458     Ignore the other bytes of the packet.         
459                                                   
460     Byte 1: Bit7 => 0, Y overflow                 
461             Bit6 => 0, X overflow                 
462             Bit5 => 0, Y sign bit                 
463             Bit4 => 0, X sign bit                 
464             Bit3 => 1                             
465             Bit2 => 1, Middle Button              
466             Bit1 => 1, Right Button               
467             Bit0 => 1, Left Button                
468     Byte 2: Bit7~1 => (0101101b)                  
469             Bit0 => 1 = Enable                    
470                     0 = Disable                   
471     Byte 3: Don't care                            
472     Byte 4: Don't care (MOUSE ID 3, 4)            
473     Byte 5~8: Don't care (Absolute packet)        
474                                                   
475 PS/2 Command Set                                  
476 ================                                  
477                                                   
478 FSP supports basic PS/2 commanding set and mod    
479 details about PS/2 commands:                      
480                                                   
481 http://www.computer-engineering.org/ps2mouse/     
482                                                   
483 Programming Sequence for Determining Packet Pa    
484 ==============================================    
485                                                   
486 1. Identify FSP by reading device ID(0x00) and    
487                                                   
488 2. For FSP version < STL3888 Cx, determine num    
489    the 'test mode status' (0x20) register::       
490                                                   
491         buttons = reg[0x20] & 0x30                
492                                                   
493         if buttons == 0x30 or buttons == 0x20:    
494                 # two/four buttons                
495                 Refer to 'Finger Sensing Pad P    
496                 section A for packet parsing d    
497         elif buttons == 0x10:                     
498                 # 6 buttons                       
499                 Refer to 'Finger Sensing Pad P    
500                 section B for packet parsing d    
501         elif buttons == 0x00:                     
502                 # 6 buttons                       
503                 Refer to 'Finger Sensing Pad P    
504                 section A for packet parsing d    
505                                                   
506 3. For FSP version >= STL3888 Cx:                 
507         Refer to 'Finger Sensing Pad PS/2 Mous    
508         section A for packet parsing detail (i    
509                                                   
510 Programming Sequence for Register Reading/Writ    
511 ==============================================    
512                                                   
513 Register inversion requirement:                   
514                                                   
515 Following values needed to be inverted(the '~'    
516 sent to FSP::                                     
517                                                   
518         0xe8, 0xe9, 0xee, 0xf2, 0xf3 and 0xff.    
519                                                   
520 Register swapping requirement:                    
521                                                   
522 Following values needed to have their higher 4    
523 swapped before being sent to FSP::                
524                                                   
525         10, 20, 40, 60, 80, 100 and 200.          
526                                                   
527 Register reading sequence:                        
528                                                   
529         1. send 0xf3 PS/2 command to FSP;         
530                                                   
531         2. send 0x66 PS/2 command to FSP;         
532                                                   
533         3. send 0x88 PS/2 command to FSP;         
534                                                   
535         4. send 0xf3 PS/2 command to FSP;         
536                                                   
537         5. if the register address being to re    
538         inverted(refer to the 'Register invers    
539         goto step 6                               
540                                                   
541           a. send 0x68 PS/2 command to FSP;       
542                                                   
543           b. send the inverted register addres    
544                                                   
545         6. if the register address being to re    
546         swapped(refer to the 'Register swappin    
547         goto step 7                               
548                                                   
549           a. send 0xcc PS/2 command to FSP;       
550                                                   
551           b. send the swapped register address    
552                                                   
553         7. send 0x66 PS/2 command to FSP;         
554                                                   
555           a. send the original register addres    
556                                                   
557         8. send 0xe9(status request) PS/2 comm    
558                                                   
559         9. the 4th byte of the response read f    
560         requested register value(?? indicates     
561                                                   
562                 host: 0xe9                        
563                 3888: 0xfa (??) (??) (val)        
564                                                   
565         * Note that since the Cx release, the     
566           complement of the register value at     
567           result::                                
568                                                   
569                 host: 0xe9                        
570                 3888: 0xfa (??) (~val) (val)      
571                                                   
572 Register writing sequence:                        
573                                                   
574         1. send 0xf3 PS/2 command to FSP;         
575                                                   
576         2. if the register address being to wr    
577         inverted(refer to the 'Register invers    
578         goto step 3                               
579                                                   
580           a. send 0x74 PS/2 command to FSP;       
581                                                   
582           b. send the inverted register addres    
583                                                   
584         3. if the register address being to wr    
585         swapped(refer to the 'Register swappin    
586         goto step 4                               
587                                                   
588           a. send 0x77 PS/2 command to FSP;       
589                                                   
590           b. send the swapped register address    
591                                                   
592         4. send 0x55 PS/2 command to FSP;         
593                                                   
594           a. send the register address to FSP     
595                                                   
596         5. send 0xf3 PS/2 command to FSP;         
597                                                   
598         6. if the register value being to writ    
599         inverted(refer to the 'Register invers    
600         goto step 7                               
601                                                   
602           a. send 0x47 PS/2 command to FSP;       
603                                                   
604           b. send the inverted register value     
605                                                   
606         7. if the register value being to writ    
607         swapped(refer to the 'Register swappin    
608         goto step 8                               
609                                                   
610           a. send 0x44 PS/2 command to FSP;       
611                                                   
612           b. send the swapped register value t    
613                                                   
614         8. send 0x33 PS/2 command to FSP;         
615                                                   
616           a. send the register value to FSP;      
617                                                   
618         9. the register writing sequence is co    
619                                                   
620         * Since the Cx release, the hardware w    
621           complement of the register value at     
622           result. Host can optionally send ano    
623           command to FSP at the end of registe    
624           register writing operation is succes    
625           byte)::                                 
626                                                   
627                 host: 0xe9                        
628                 3888: 0xfa (??) (~val) (val)      
629                                                   
630 Programming Sequence for Page Register Reading    
631 ==============================================    
632                                                   
633 In order to overcome the limitation of maximum    
634 supported, the hardware separates register int    
635 'pages.' Each page is able to include up to 25    
636                                                   
637 The default page after power up is 0x82; there    
638 access to register 0x8301, one has to use foll    
639 to page 0x83, then start reading/writing from/    
640 the register read/write sequence described in     
641                                                   
642 Page register reading sequence:                   
643                                                   
644         1. send 0xf3 PS/2 command to FSP;         
645                                                   
646         2. send 0x66 PS/2 command to FSP;         
647                                                   
648         3. send 0x88 PS/2 command to FSP;         
649                                                   
650         4. send 0xf3 PS/2 command to FSP;         
651                                                   
652         5. send 0x83 PS/2 command to FSP;         
653                                                   
654         6. send 0x88 PS/2 command to FSP;         
655                                                   
656         7. send 0xe9(status request) PS/2 comm    
657                                                   
658         8. the response read from FSP should b    
659                                                   
660                                                   
661 Page register writing sequence:                   
662                                                   
663         1. send 0xf3 PS/2 command to FSP;         
664                                                   
665         2. send 0x38 PS/2 command to FSP;         
666                                                   
667         3. send 0x88 PS/2 command to FSP;         
668                                                   
669         4. send 0xf3 PS/2 command to FSP;         
670                                                   
671         5. if the page address being written i    
672         inverted(refer to the 'Register invers    
673         goto step 6                               
674                                                   
675           a. send 0x47 PS/2 command to FSP;       
676                                                   
677           b. send the inverted page address to    
678                                                   
679         6. if the page address being written i    
680         swapped(refer to the 'Register swappin    
681         goto step 7                               
682                                                   
683           a. send 0x44 PS/2 command to FSP;       
684                                                   
685           b. send the swapped page address to     
686                                                   
687         7. send 0x33 PS/2 command to FSP;         
688                                                   
689         8. send the page address to FSP;          
690                                                   
691         9. the page register writing sequence     
692                                                   
693 Gesture ID                                        
694 ==========                                        
695                                                   
696 Unlike other devices which sends multiple fing    
697 FSP processes multiple fingers' coordinates in    
698 into a 8 bits integer, namely 'Gesture ID.'  F    
699 supported gesture IDs:                            
700                                                   
701         ======= ==============================    
702         ID      Description                       
703         ======= ==============================    
704         0x86    2 finger straight up              
705         0x82    2 finger straight down            
706         0x80    2 finger straight right           
707         0x84    2 finger straight left            
708         0x8f    2 finger zoom in                  
709         0x8b    2 finger zoom out                 
710         0xc0    2 finger curve, counter clockw    
711         0xc4    2 finger curve, clockwise         
712         0x2e    3 finger straight up              
713         0x2a    3 finger straight down            
714         0x28    3 finger straight right           
715         0x2c    3 finger straight left            
716         0x38    palm                              
717         ======= ==============================    
718                                                   
719 Register Listing                                  
720 ================                                  
721                                                   
722 Registers are represented in 16 bits values. T    
723 the page address and the lower 8 bits represen    
724 that particular page.  Refer to the 'Programmi    
725 Reading/Writing' section for instructions on h    
726 address::                                         
727                                                   
728  offset width           default r/w     name      
729  0x8200 bit7~bit0       0x01    RO      device    
730                                                   
731  0x8201 bit7~bit0               RW      versio    
732                                         0xc1:     
733                                         0xd0 ~    
734                                         0xe0 ~    
735                                         0xe2 ~    
736                                                   
737  0x8202 bit7~bit0       0x01    RO      vendor    
738                                                   
739  0x8203 bit7~bit0       0x01    RO      produc    
740                                                   
741  0x8204 bit3~bit0       0x01    RW      revisi    
742                                                   
743  0x820b                                 test m    
744         bit3            1       RO      0: rot    
745                                         1: no     
746                                         *only     
747                                                   
748  0x820f                                 regist    
749         bit2            0       RW      1: rot    
750                                         0: no     
751                                         *suppo    
752                                                   
753         bit0            0       RW      1 to e    
754                                         *only     
755                                                   
756  0x8210                         RW      system    
757         bit0            1       RW      Reserv    
758         bit1            0       RW      Reserv    
759         bit4            0       RW      Reserv    
760         bit5            1       RW      regist    
761                                         0: rea    
762         (Note that following registers does no    
763         enabled prior to write: 05 06 07 08 09    
764         40 41 42 43.  In addition to that, thi    
765         mode is enabled)                          
766                                                   
767  0x8220                                 test m    
768         bit5~bit4               RO      number    
769                                         11 =>     
770                                         10 =>     
771                                         01 =>     
772                                         00 =>     
773                                         *only     
774                                                   
775  0x8231                         RW      on-pad    
776         bit7            0       RW      on-pad    
777                                         enable    
778                                         0: dis    
779                                         *only     
780                                                   
781  0x8234                         RW      on-pad    
782         bit4~bit0       0x05    RW      XLO in    
783         (Note that position unit is in 0.5 sca    
784                                         *only     
785                                                   
786         bit7            0       RW      on-pad    
787                                         0: dis    
788                                         *only     
789                                                   
790  0x8235                         RW      on-pad    
791         bit4~bit0       0x1d    RW      XHI in    
792         (Note that position unit is in 0.5 sca    
793                                         *only     
794                                                   
795  0x8236                         RW      on-pad    
796         bit4~bit0       0x04    RW      YLO in    
797         (Note that position unit is in 0.5 sca    
798                                         *only     
799                                                   
800  0x8237                         RW      on-pad    
801         bit4~bit0       0x13    RW      YHI in    
802         (Note that position unit is in 0.5 sca    
803                                         *only     
804                                                   
805  0x8240                         RW      system    
806         bit1            0       RW      FSP In    
807                                         0: dis    
808                                         *only     
809                                                   
810         bit2            0       RW      moveme    
811                                         0: dis    
812         (Note that this function has the funct    
813         bit 1 is not set. However, the format     
814         In addition, when bit 1 and bit 2 are     
815         override bit 1.)                          
816                                         *only     
817                                                   
818         bit3            0       RW      abs. c    
819                                         0: dis    
820         (Note that this function has the funct    
821         bit 1 is not set. However, the format     
822         In addition, when bit 1, bit 2 and bit    
823         bit 3 will override bit 1 and 2.)         
824                                         *only     
825                                                   
826         bit5            0       RW      auto s    
827                                         0: dis    
828                                         *only     
829                                                   
830         bit6            0       RW      G0 abs    
831                                         0: dis    
832         (Note that the absolute/relative coord    
833         bit 2 and 3.  That is, if any of those    
834         absolute coordinates; otherwise, host     
835         relative coordinate.)                     
836                                         *only     
837                                                   
838         bit7            0       RW      EN_PS2    
839                                         finger    
840                                         0: dis    
841                                         *only     
842                                                   
843  0x8243                         RW      on-pad    
844         bit0            0       RW      on-pad    
845                                         0: dis    
846         (Note that if this bit is cleared, bit    
847                                         *only     
848                                                   
849         bit3            0       RW      on-pad    
850                                         0: dis    
851                                         *only     
852                                                   
853         bit5            0       RW      on-pad    
854                                         0: dis    
855                                         *only     
856                                                   
857  0x8290                         RW      softwa    
858         bit0            0       RW      absolu    
859                                         0: dis    
860                                         *suppo    
861                                                   
862         bit1            0       RW      gestur    
863                                         0: dis    
864                                         *suppo    
865                                                   
866         bit2            0       RW      two fi    
867                                         0: dis    
868                                         *suppo    
869                                                   
870         bit3            0       RW      finger    
871                                         0: dis    
872                                         *suppo    
873                                                   
874         bit4            0       RW      absolu    
875                                         0: dis    
876                                         *suppo    
877                                                   
878         bit6~bit5       00      RW      gestur    
879                                         00: ba    
880                                         01: su    
881                                         10: su    
882                                         11: ad    
883                                         *suppo    
884                                                   
885         bit7            0       RW      Bx pac    
886                                         0: dis    
887                                         *suppo    
888                                         *suppo    
889                                                   
890                                                   
891  0x833d                         RW      on-pad    
892         bit7            1       RW      on-pad    
893                                         0: dis    
894                                         *suppo    
895                                                   
896  0x833e                         RW      on-pad    
897         bit7            0       RW      on-pad    
898                                         enable    
899                                         data p    
900                                         0: dis    
901                                         *suppo    
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php