]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkModulePkg/Bus/Isa/Ps2MouseDxe/CommPs2.h
a997ce624697138c4afcd817dc499eac441d7ff5
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Isa / Ps2MouseDxe / CommPs2.h
1 /*++
2
3 Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
4 This software and associated documentation (if any) is furnished
5 under a license and may only be used or copied in accordance
6 with the terms of the license. Except as permitted by such
7 license, no part of this software or documentation may be
8 reproduced, stored in a retrieval system, or transmitted in any
9 form or by any means without the express written consent of
10 Intel Corporation.
11
12
13 Module Name:
14
15 CommPs2.h
16
17 Abstract:
18
19 PS2 Mouse Communication Interface
20
21
22 Revision History
23
24 --*/
25
26 #ifndef _COMMPS2_H_
27 #define _COMMPS2_H_
28
29 //
30 // Include common header file for this module.
31 //
32 #include "CommonHeader.h"
33
34 #define PS2_PACKET_LENGTH 3
35 #define PS2_SYNC_MASK 0xc
36 #define PS2_SYNC_BYTE 0x8
37
38 #define IS_PS2_SYNC_BYTE(byte) ((byte & PS2_SYNC_MASK) == PS2_SYNC_BYTE)
39
40 #define PS2_READ_BYTE_ONE 0
41 #define PS2_READ_DATA_BYTE 1
42 #define PS2_PROCESS_PACKET 2
43
44 #define TIMEOUT 50000
45 #define BAT_TIMEOUT 500000
46
47 //
48 // 8042 I/O Port
49 //
50 #define KBC_DATA_PORT 0x60
51 #define KBC_CMD_STS_PORT 0x64
52
53 //
54 // 8042 Command
55 //
56 #define READ_CMD_BYTE 0x20
57 #define WRITE_CMD_BYTE 0x60
58 #define DISABLE_AUX 0xa7
59 #define ENABLE_AUX 0xa8
60 #define SELF_TEST 0xaa
61 #define DISABLE_KB 0xad
62 #define ENABLE_KB 0xae
63 #define WRITE_AUX_DEV 0xd4
64
65 #define CMD_SYS_FLAG 0x04
66 #define CMD_KB_STS 0x10
67 #define CMD_KB_DIS 0x10
68 #define CMD_KB_EN 0x0
69
70 //
71 // 8042 Auxiliary Device Command
72 //
73 #define SETSF1_CMD 0xe6
74 #define SETSF2_CMD 0xe7
75 #define SETRE_CMD 0xe8
76 #define READ_CMD 0xeb
77 #define SETRM_CMD 0xf0
78 #define SETSR_CMD 0xf3
79 #define ENABLE_CMD 0xf4
80 #define DISABLE_CMD 0xf5
81 #define RESET_CMD 0xff
82
83 //
84 // return code
85 //
86 #define PS2_ACK 0xfa
87 #define PS2_RESEND 0xfe
88 #define PS2MOUSE_BAT1 0xaa
89 #define PS2MOUSE_BAT2 0x0
90
91 //
92 // Keyboard Controller Status
93 //
94 #define KBC_PARE 0x80 // Parity Error
95 #define KBC_TIM 0x40 // General Time Out
96 #define KBC_AUXB 0x20 // Output buffer for auxiliary device (PS/2):
97 // 0 - Holds keyboard data
98 // 1 - Holds data for auxiliary device
99 //
100 #define KBC_KEYL 0x10 // Keyboard lock status:
101 // 0 - keyboard locked
102 // 1 - keyboard free
103 //
104 #define KBC_CD 0x08 // Command/Data:
105 // 0 - data byte written via port 60h
106 // 1 - command byte written via port 64h
107 //
108 #define KBC_SYSF 0x04 // System Flag:
109 // 0 - power-on reset
110 // 1 - self-test successful
111 //
112 #define KBC_INPB 0x02 // Input Buffer Status :
113 // 0 - input buffer empty
114 // 1 - CPU data in input buffer
115 //
116 #define KBC_OUTB 0x01 // Output Buffer Status :
117 // 0 - output buffer empty
118 // 1 - keyboard controller data in output buffer
119 //
120 EFI_STATUS
121 KbcSelfTest (
122 IN EFI_ISA_IO_PROTOCOL *IsaIo
123 )
124 /*++
125
126 Routine Description:
127
128 GC_TODO: Add function description
129
130 Arguments:
131
132 IsaIo - GC_TODO: add argument description
133
134 Returns:
135
136 GC_TODO: add return values
137
138 --*/
139 ;
140
141 EFI_STATUS
142 KbcEnableAux (
143 IN EFI_ISA_IO_PROTOCOL *IsaIo
144 )
145 /*++
146
147 Routine Description:
148
149 GC_TODO: Add function description
150
151 Arguments:
152
153 IsaIo - GC_TODO: add argument description
154
155 Returns:
156
157 GC_TODO: add return values
158
159 --*/
160 ;
161
162 EFI_STATUS
163 KbcDisableAux (
164 IN EFI_ISA_IO_PROTOCOL *IsaIo
165 )
166 /*++
167
168 Routine Description:
169
170 GC_TODO: Add function description
171
172 Arguments:
173
174 IsaIo - GC_TODO: add argument description
175
176 Returns:
177
178 GC_TODO: add return values
179
180 --*/
181 ;
182
183 EFI_STATUS
184 KbcEnableKb (
185 IN EFI_ISA_IO_PROTOCOL *IsaIo
186 )
187 /*++
188
189 Routine Description:
190
191 GC_TODO: Add function description
192
193 Arguments:
194
195 IsaIo - GC_TODO: add argument description
196
197 Returns:
198
199 GC_TODO: add return values
200
201 --*/
202 ;
203
204 EFI_STATUS
205 KbcDisableKb (
206 IN EFI_ISA_IO_PROTOCOL *IsaIo
207 )
208 /*++
209
210 Routine Description:
211
212 GC_TODO: Add function description
213
214 Arguments:
215
216 IsaIo - GC_TODO: add argument description
217
218 Returns:
219
220 GC_TODO: add return values
221
222 --*/
223 ;
224
225 EFI_STATUS
226 CheckKbStatus (
227 IN EFI_ISA_IO_PROTOCOL *IsaIo,
228 OUT BOOLEAN *KeyboardEnable
229 )
230 /*++
231
232 Routine Description:
233
234 GC_TODO: Add function description
235
236 Arguments:
237
238 IsaIo - GC_TODO: add argument description
239 KeyboardEnable - GC_TODO: add argument description
240
241 Returns:
242
243 GC_TODO: add return values
244
245 --*/
246 ;
247
248 EFI_STATUS
249 PS2MouseReset (
250 IN EFI_ISA_IO_PROTOCOL *IsaIo
251 )
252 /*++
253
254 Routine Description:
255
256 GC_TODO: Add function description
257
258 Arguments:
259
260 IsaIo - GC_TODO: add argument description
261
262 Returns:
263
264 GC_TODO: add return values
265
266 --*/
267 ;
268
269 EFI_STATUS
270 PS2MouseSetSampleRate (
271 IN EFI_ISA_IO_PROTOCOL *IsaIo,
272 IN MOUSE_SR SampleRate
273 )
274 /*++
275
276 Routine Description:
277
278 GC_TODO: Add function description
279
280 Arguments:
281
282 IsaIo - GC_TODO: add argument description
283 SampleRate - GC_TODO: add argument description
284
285 Returns:
286
287 GC_TODO: add return values
288
289 --*/
290 ;
291
292 EFI_STATUS
293 PS2MouseSetResolution (
294 IN EFI_ISA_IO_PROTOCOL *IsaIo,
295 IN MOUSE_RE Resolution
296 )
297 /*++
298
299 Routine Description:
300
301 GC_TODO: Add function description
302
303 Arguments:
304
305 IsaIo - GC_TODO: add argument description
306 Resolution - GC_TODO: add argument description
307
308 Returns:
309
310 GC_TODO: add return values
311
312 --*/
313 ;
314
315 EFI_STATUS
316 PS2MouseSetScaling (
317 IN EFI_ISA_IO_PROTOCOL *IsaIo,
318 IN MOUSE_SF Scaling
319 )
320 /*++
321
322 Routine Description:
323
324 GC_TODO: Add function description
325
326 Arguments:
327
328 IsaIo - GC_TODO: add argument description
329 Scaling - GC_TODO: add argument description
330
331 Returns:
332
333 GC_TODO: add return values
334
335 --*/
336 ;
337
338 EFI_STATUS
339 PS2MouseEnable (
340 IN EFI_ISA_IO_PROTOCOL *IsaIo
341 )
342 /*++
343
344 Routine Description:
345
346 GC_TODO: Add function description
347
348 Arguments:
349
350 IsaIo - GC_TODO: add argument description
351
352 Returns:
353
354 GC_TODO: add return values
355
356 --*/
357 ;
358
359 EFI_STATUS
360 PS2MouseGetPacket (
361 PS2_MOUSE_DEV *MouseDev
362 )
363 /*++
364
365 Routine Description:
366
367 GC_TODO: Add function description
368
369 Arguments:
370
371 MouseDev - GC_TODO: add argument description
372
373 Returns:
374
375 GC_TODO: add return values
376
377 --*/
378 ;
379
380 EFI_STATUS
381 PS2MouseRead (
382 IN EFI_ISA_IO_PROTOCOL *IsaIo,
383 OUT VOID *Buffer,
384 IN OUT UINTN *BufSize,
385 IN UINTN State
386 );
387
388 //
389 // 8042 I/O function
390 //
391 EFI_STATUS
392 Out8042Command (
393 IN EFI_ISA_IO_PROTOCOL *IsaIo,
394 IN UINT8 Command
395 );
396
397 EFI_STATUS
398 In8042Data (
399 IN EFI_ISA_IO_PROTOCOL *IsaIo,
400 IN OUT UINT8 *Data
401 );
402
403 EFI_STATUS
404 Out8042Data (
405 IN EFI_ISA_IO_PROTOCOL *IsaIo,
406 IN UINT8 Data
407 );
408
409 EFI_STATUS
410 Out8042AuxCommand (
411 IN EFI_ISA_IO_PROTOCOL *IsaIo,
412 IN UINT8 Command,
413 IN BOOLEAN Resend
414 );
415
416 EFI_STATUS
417 In8042AuxData (
418 IN EFI_ISA_IO_PROTOCOL *IsaIo,
419 IN OUT UINT8 *Data
420 );
421
422 EFI_STATUS
423 Out8042AuxData (
424 IN EFI_ISA_IO_PROTOCOL *IsaIo,
425 IN UINT8 Data
426 );
427
428 EFI_STATUS
429 CheckForInput (
430 IN EFI_ISA_IO_PROTOCOL *IsaIo
431 );
432
433 EFI_STATUS
434 WaitInputEmpty (
435 IN EFI_ISA_IO_PROTOCOL *IsaIo,
436 IN UINTN Timeout
437 );
438
439 EFI_STATUS
440 WaitOutputFull (
441 IN EFI_ISA_IO_PROTOCOL *IsaIo,
442 IN UINTN Timeout
443 );
444
445 #endif // _COMMPS2_H_