]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2Keyboard.h
Modify GenFds tools, which add one check for the return value of calling external...
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Isa / Ps2KeyboardDxe / Ps2Keyboard.h
CommitLineData
05fbd06d 1/**@file\r
2 PS/2 keyboard driver header file\r
3\r
df0dcb5e 4Copyright (c) 2006 - 2007, Intel Corporation\r
5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
05fbd06d 12\r
13**/\r
14\r
15#ifndef _PS2KEYBOARD_H\r
16#define _PS2KEYBOARD_H\r
17\r
18//\r
19// Include common header file for this module.\r
20//\r
21#include "CommonHeader.h"\r
22\r
23//\r
24// Driver Private Data\r
25//\r
26#define KEYBOARD_BUFFER_MAX_COUNT 32\r
27#define KEYBOARD_CONSOLE_IN_DEV_SIGNATURE EFI_SIGNATURE_32 ('k', 'k', 'e', 'y')\r
28\r
29typedef struct {\r
30 UINTN Signature;\r
31\r
32 EFI_HANDLE Handle;\r
33 EFI_SIMPLE_TEXT_INPUT_PROTOCOL ConIn;\r
34 EFI_ISA_IO_PROTOCOL *IsaIo;\r
35\r
36 EFI_EVENT TimerEvent;\r
37\r
38 UINT32 DataRegisterAddress;\r
39 UINT32 StatusRegisterAddress;\r
40 UINT32 CommandRegisterAddress;\r
41\r
42 EFI_INPUT_KEY Key;\r
43\r
44 BOOLEAN Ctrl;\r
45 BOOLEAN Alt;\r
46 BOOLEAN Shift;\r
47 BOOLEAN CapsLock;\r
48 BOOLEAN NumLock;\r
49 BOOLEAN ScrollLock;\r
50\r
51 //\r
52 // Buffer storing key scancodes\r
53 //\r
54 UINT8 ScancodeBuf[KEYBOARD_BUFFER_MAX_COUNT];\r
55 UINT32 ScancodeBufStartPos;\r
56 UINT32 ScancodeBufEndPos;\r
57 UINT32 ScancodeBufCount;\r
58\r
59 //\r
60 // Indicators of the key pressing state, used in detecting Alt+Ctrl+Del\r
61 //\r
62 BOOLEAN Ctrled;\r
63 BOOLEAN Alted;\r
64\r
65 //\r
66 // Error state\r
67 //\r
68 BOOLEAN KeyboardErr;\r
69\r
70 EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
71\r
72 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
73} KEYBOARD_CONSOLE_IN_DEV;\r
74\r
75#define KEYBOARD_CONSOLE_IN_DEV_FROM_THIS(a) CR (a, KEYBOARD_CONSOLE_IN_DEV, ConIn, KEYBOARD_CONSOLE_IN_DEV_SIGNATURE)\r
76\r
77#define TABLE_END 0x0\r
78\r
79//\r
80// Global Variables\r
81//\r
82extern EFI_DRIVER_BINDING_PROTOCOL gKeyboardControllerDriver;\r
83extern EFI_COMPONENT_NAME_PROTOCOL gPs2KeyboardComponentName;\r
84\r
85//\r
86// Driver entry point\r
87//\r
88EFI_STATUS\r
89InstallPs2KeyboardDriver (\r
90 IN EFI_HANDLE ImageHandle,\r
91 IN EFI_SYSTEM_TABLE *SystemTable\r
92 )\r
93/*++\r
94\r
95Routine Description:\r
96\r
97 GC_TODO: Add function description\r
98\r
99Arguments:\r
100\r
101 ImageHandle - GC_TODO: add argument description\r
102 SystemTable - GC_TODO: add argument description\r
103\r
104Returns:\r
105\r
106 GC_TODO: add return values\r
107\r
108--*/\r
109;\r
110\r
111#define KEYBOARD_8042_DATA_REGISTER 0x60\r
112#define KEYBOARD_8042_STATUS_REGISTER 0x64\r
113#define KEYBOARD_8042_COMMAND_REGISTER 0x64\r
114\r
115#define KEYBOARD_KBEN 0xF4\r
116#define KEYBOARD_CMDECHO_ACK 0xFA\r
117\r
118#define KEYBOARD_TIMEOUT 65536 // 0.07s\r
119#define KEYBOARD_WAITFORVALUE_TIMEOUT 1000000 // 1s\r
120#define KEYBOARD_BAT_TIMEOUT 4000000 // 4s\r
121#define KEYBOARD_TIMER_INTERVAL 200000 // 0.02s\r
122#define SCANCODE_EXTENDED 0xE0\r
123#define SCANCODE_EXTENDED1 0xE1\r
124#define SCANCODE_CTRL_MAKE 0x1D\r
125#define SCANCODE_CTRL_BREAK 0x9D\r
126#define SCANCODE_ALT_MAKE 0x38\r
127#define SCANCODE_ALT_BREAK 0xB8\r
128#define SCANCODE_LEFT_SHIFT_MAKE 0x2A\r
129#define SCANCODE_LEFT_SHIFT_BREAK 0xAA\r
130#define SCANCODE_RIGHT_SHIFT_MAKE 0x36\r
131#define SCANCODE_RIGHT_SHIFT_BREAK 0xB6\r
132#define SCANCODE_CAPS_LOCK_MAKE 0x3A\r
133#define SCANCODE_NUM_LOCK_MAKE 0x45\r
134#define SCANCODE_SCROLL_LOCK_MAKE 0x46\r
135#define SCANCODE_MAX_MAKE 0x59\r
136\r
137//\r
138// Other functions that are used among .c files\r
139//\r
140EFI_STATUS\r
141KeyboardRead (\r
142 IN KEYBOARD_CONSOLE_IN_DEV *ConsoleIn,\r
143 OUT UINT8 *Data\r
144 )\r
145/*++\r
146\r
147Routine Description:\r
148\r
149 GC_TODO: Add function description\r
150\r
151Arguments:\r
152\r
153 ConsoleIn - GC_TODO: add argument description\r
154 Data - GC_TODO: add argument description\r
155\r
156Returns:\r
157\r
158 GC_TODO: add return values\r
159\r
160--*/\r
161;\r
162\r
163EFI_STATUS\r
164KeyGetchar (\r
165 IN OUT KEYBOARD_CONSOLE_IN_DEV *ConsoleIn\r
166 )\r
167/*++\r
168\r
169Routine Description:\r
170\r
171 GC_TODO: Add function description\r
172\r
173Arguments:\r
174\r
175 ConsoleIn - GC_TODO: add argument description\r
176\r
177Returns:\r
178\r
179 GC_TODO: add return values\r
180\r
181--*/\r
182;\r
183\r
184EFI_STATUS\r
185InitKeyboard (\r
186 IN OUT KEYBOARD_CONSOLE_IN_DEV *ConsoleIn,\r
187 IN BOOLEAN ExtendedVerification\r
188 )\r
189/*++\r
190\r
191Routine Description:\r
192\r
193 GC_TODO: Add function description\r
194\r
195Arguments:\r
196\r
197 ConsoleIn - GC_TODO: add argument description\r
198 ExtendedVerification - GC_TODO: add argument description\r
199\r
200Returns:\r
201\r
202 GC_TODO: add return values\r
203\r
204--*/\r
205;\r
206\r
207EFI_STATUS\r
208DisableKeyboard (\r
209 IN KEYBOARD_CONSOLE_IN_DEV *ConsoleIn\r
210 )\r
211/*++\r
212\r
213Routine Description:\r
214\r
215 GC_TODO: Add function description\r
216\r
217Arguments:\r
218\r
219 ConsoleIn - GC_TODO: add argument description\r
220\r
221Returns:\r
222\r
223 GC_TODO: add return values\r
224\r
225--*/\r
226;\r
227\r
228VOID\r
229EFIAPI\r
230KeyboardTimerHandler (\r
231 IN EFI_EVENT Event,\r
232 IN VOID *Context\r
233 )\r
234/*++\r
235\r
236Routine Description:\r
237\r
238 GC_TODO: Add function description\r
239\r
240Arguments:\r
241\r
242 Event - GC_TODO: add argument description\r
243 Context - GC_TODO: add argument description\r
244\r
245Returns:\r
246\r
247 GC_TODO: add return values\r
248\r
249--*/\r
250;\r
251\r
252EFI_STATUS\r
253EFIAPI\r
254KeyboardEfiReset (\r
255 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
256 IN BOOLEAN ExtendedVerification\r
257 )\r
258/*++\r
259\r
260Routine Description:\r
261\r
262 GC_TODO: Add function description\r
263\r
264Arguments:\r
265\r
266 This - GC_TODO: add argument description\r
267 ExtendedVerification - GC_TODO: add argument description\r
268\r
269Returns:\r
270\r
271 GC_TODO: add return values\r
272\r
273--*/\r
274;\r
275\r
276EFI_STATUS\r
277EFIAPI\r
278KeyboardReadKeyStroke (\r
279 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
280 OUT EFI_INPUT_KEY *Key\r
281 )\r
282/*++\r
283\r
284Routine Description:\r
285\r
286 GC_TODO: Add function description\r
287\r
288Arguments:\r
289\r
290 This - GC_TODO: add argument description\r
291 Key - GC_TODO: add argument description\r
292\r
293Returns:\r
294\r
295 GC_TODO: add return values\r
296\r
297--*/\r
298;\r
299\r
300VOID\r
301EFIAPI\r
302KeyboardWaitForKey (\r
303 IN EFI_EVENT Event,\r
304 IN VOID *Context\r
305 )\r
306/*++\r
307\r
308Routine Description:\r
309\r
310 GC_TODO: Add function description\r
311\r
312Arguments:\r
313\r
314 Event - GC_TODO: add argument description\r
315 Context - GC_TODO: add argument description\r
316\r
317Returns:\r
318\r
319 GC_TODO: add return values\r
320\r
321--*/\r
322;\r
323\r
324UINT8\r
325KeyReadStatusRegister (\r
326 IN KEYBOARD_CONSOLE_IN_DEV *ConsoleIn\r
327 )\r
328/*++\r
329\r
330Routine Description:\r
331\r
332 GC_TODO: Add function description\r
333\r
334Arguments:\r
335\r
336 ConsoleIn - GC_TODO: add argument description\r
337\r
338Returns:\r
339\r
340 GC_TODO: add return values\r
341\r
342--*/\r
343;\r
344\r
345/**\r
346 Check whether there is Ps/2 Keyboard device in system by 0xF4 Keyboard Command\r
347 If Keyboard receives 0xF4, it will respond with 'ACK'. If it doesn't respond, the device\r
348 should not be in system.\r
349\r
350 @param[in] BiosKeyboardPrivate Keyboard Private Data Structure\r
351\r
352 @retval TRUE Keyboard in System.\r
353 @retval FALSE Keyboard not in System.\r
354**/\r
355BOOLEAN\r
356EFIAPI\r
357CheckKeyboardConnect (\r
358 IN KEYBOARD_CONSOLE_IN_DEV *ConsoleIn\r
359 )\r
360;\r
361#endif\r