]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/WinNtSerialIoDxe/WinNtSerialIo.h
Patch to remove STATIC modifier. This is on longer recommended by EFI Framework codin...
[mirror_edk2.git] / Nt32Pkg / WinNtSerialIoDxe / WinNtSerialIo.h
CommitLineData
6ae81428 1/**@file\r
5f44f5b9 2\r
3Copyright (c) 2006, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 WinNtSerialIo.h\r
15\r
16Abstract:\r
17\r
18\r
6ae81428 19**/\r
5f44f5b9 20\r
21#ifndef _WIN_NT_SERIAL_IO_\r
22#define _WIN_NT_SERIAL_IO_\r
23\r
b83e2500
A
24//\r
25// The package level header files this module uses\r
26//\r
27#include <Uefi.h>\r
28#include <WinNtDxe.h>\r
29//\r
30// The protocols, PPI and GUID defintions for this module\r
31//\r
32#include <Protocol/WinNtIo.h>\r
33#include <Protocol/ComponentName.h>\r
34#include <Protocol/SerialIo.h>\r
35#include <Protocol/DriverBinding.h>\r
36#include <Protocol/DevicePath.h>\r
37//\r
38// The Library classes this module consumes\r
39//\r
40#include <Library/DebugLib.h>\r
41#include <Library/BaseLib.h>\r
42#include <Library/UefiDriverEntryPoint.h>\r
43#include <Library/UefiLib.h>\r
44#include <Library/BaseMemoryLib.h>\r
45#include <Library/UefiBootServicesTableLib.h>\r
46#include <Library/DevicePathLib.h>\r
47#include <Library/MemoryAllocationLib.h>\r
48#include <Library/PcdLib.h>\r
49\r
5f44f5b9 50\r
51#define SERIAL_MAX_BUFFER_SIZE 256\r
52#define TIMEOUT_STALL_INTERVAL 10\r
53\r
54typedef struct {\r
55 UINT32 First;\r
56 UINT32 Last;\r
57 UINT32 Surplus;\r
58 UINT8 Data[SERIAL_MAX_BUFFER_SIZE];\r
59} SERIAL_DEV_FIFO;\r
60\r
61#define WIN_NT_SERIAL_IO_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('N', 'T', 's', 'i')\r
62typedef struct {\r
63 UINT64 Signature;\r
64\r
65 //\r
66 // Protocol data for the new handle we are going to add\r
67 //\r
68 EFI_HANDLE Handle;\r
69 EFI_SERIAL_IO_PROTOCOL SerialIo;\r
70 EFI_SERIAL_IO_MODE SerialIoMode;\r
71 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
72\r
73 //\r
74 // Private Data\r
75 //\r
76 EFI_HANDLE ControllerHandle;\r
77 EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;\r
78 UART_DEVICE_PATH UartDevicePath;\r
79 EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk;\r
80\r
81 EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
82\r
83 //\r
84 // Private NT type Data;\r
85 //\r
86 HANDLE NtHandle;\r
87 DCB NtDCB;\r
88 DWORD NtError;\r
89 COMSTAT NtComStatus;\r
90\r
91 BOOLEAN SoftwareLoopbackEnable;\r
92 BOOLEAN HardwareFlowControl;\r
93 BOOLEAN HardwareLoopbackEnable;\r
94\r
95 SERIAL_DEV_FIFO Fifo;\r
96\r
97} WIN_NT_SERIAL_IO_PRIVATE_DATA;\r
98\r
99#define WIN_NT_SERIAL_IO_PRIVATE_DATA_FROM_THIS(a) \\r
100 CR(a, WIN_NT_SERIAL_IO_PRIVATE_DATA, SerialIo, WIN_NT_SERIAL_IO_PRIVATE_DATA_SIGNATURE)\r
101\r
102//\r
103// Global Protocol Variables\r
104//\r
04369cd8 105extern EFI_DRIVER_BINDING_PROTOCOL gWinNtSerialIoDriverBinding;\r
106extern EFI_COMPONENT_NAME_PROTOCOL gWinNtSerialIoComponentName;\r
107extern EFI_COMPONENT_NAME2_PROTOCOL gWinNtSerialIoComponentName2;\r
5f44f5b9 108\r
109//\r
110// Macros to convert EFI serial types to NT serial types.\r
111//\r
112\r
113//\r
114// one second\r
115//\r
116#define SERIAL_TIMEOUT_DEFAULT (1000 * 1000) \r
117#define SERIAL_BAUD_DEFAULT 115200\r
118#define SERIAL_FIFO_DEFAULT 14\r
119#define SERIAL_DATABITS_DEFAULT 8\r
120#define SERIAL_PARITY_DEFAULT DefaultParity\r
121#define SERIAL_STOPBITS_DEFAULT DefaultStopBits\r
122\r
123#define SERIAL_CONTROL_MASK (EFI_SERIAL_CLEAR_TO_SEND | \\r
124 EFI_SERIAL_DATA_SET_READY | \\r
125 EFI_SERIAL_RING_INDICATE | \\r
126 EFI_SERIAL_CARRIER_DETECT | \\r
127 EFI_SERIAL_REQUEST_TO_SEND | \\r
128 EFI_SERIAL_DATA_TERMINAL_READY | \\r
129 EFI_SERIAL_INPUT_BUFFER_EMPTY)\r
130\r
131#define ConvertBaud2Nt(x) (DWORD) x\r
132#define ConvertData2Nt(x) (BYTE) x\r
133\r
134#define ConvertParity2Nt(x) \\r
135 (BYTE) ( \\r
136 x == DefaultParity ? NOPARITY : \\r
137 x == NoParity ? NOPARITY : \\r
138 x == EvenParity ? EVENPARITY : \\r
139 x == OddParity ? ODDPARITY : \\r
140 x == MarkParity ? MARKPARITY : \\r
141 x == SpaceParity ? SPACEPARITY : 0 \\r
142 )\r
143\r
144#define ConvertStop2Nt(x) \\r
145 (BYTE) ( \\r
146 x == DefaultParity ? ONESTOPBIT : \\r
147 x == OneFiveStopBits ? ONE5STOPBITS : \\r
148 x == TwoStopBits ? TWOSTOPBITS : 0 \\r
149 )\r
150\r
151#define ConvertTime2Nt(x) ((x) / 1000)\r
152\r
153//\r
154// 115400 baud with rounding errors\r
155//\r
156#define SERIAL_PORT_MAX_BAUD_RATE 115400 \r
157\r
82408a47 158#define SERIAL_PORT_MIN_BAUD_RATE 50\r
159#define SERIAL_PORT_MAX_RECEIVE_FIFO_DEPTH 16\r
160\r
161#define SERIAL_PORT_MIN_TIMEOUT 1 // 1 uS\r
162#define SERIAL_PORT_MAX_TIMEOUT 100000000 // 100 seconds\r
163\r
5f44f5b9 164//\r
165// Function Prototypes\r
166//\r
167EFI_STATUS\r
168EFIAPI\r
169InitializeWinNtSerialIo (\r
170 IN EFI_HANDLE ImageHandle,\r
171 IN EFI_SYSTEM_TABLE *SystemTable\r
172 )\r
173/*++\r
174\r
175Routine Description:\r
176\r
177 TODO: Add function description\r
178\r
179Arguments:\r
180\r
181 ImageHandle - TODO: add argument description\r
182 SystemTable - TODO: add argument description\r
183\r
184Returns:\r
185\r
186 TODO: add return values\r
187\r
188--*/\r
189;\r
190\r
5f44f5b9 191EFI_STATUS\r
192EFIAPI\r
193WinNtSerialIoDriverBindingSupported (\r
194 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
195 IN EFI_HANDLE Handle,\r
196 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
197 )\r
198/*++\r
199\r
200Routine Description:\r
201\r
202 TODO: Add function description\r
203\r
204Arguments:\r
205\r
206 This - TODO: add argument description\r
207 Handle - TODO: add argument description\r
208 RemainingDevicePath - TODO: add argument description\r
209\r
210Returns:\r
211\r
212 TODO: add return values\r
213\r
214--*/\r
215;\r
216\r
5f44f5b9 217EFI_STATUS\r
218EFIAPI\r
219WinNtSerialIoDriverBindingStart (\r
220 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
221 IN EFI_HANDLE Handle,\r
222 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
223 )\r
224/*++\r
225\r
226Routine Description:\r
227\r
228 TODO: Add function description\r
229\r
230Arguments:\r
231\r
232 This - TODO: add argument description\r
233 Handle - TODO: add argument description\r
234 RemainingDevicePath - TODO: add argument description\r
235\r
236Returns:\r
237\r
238 TODO: add return values\r
239\r
240--*/\r
241;\r
242\r
5f44f5b9 243EFI_STATUS\r
244EFIAPI\r
245WinNtSerialIoDriverBindingStop (\r
246 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
247 IN EFI_HANDLE Handle,\r
248 IN UINTN NumberOfChildren,\r
249 IN EFI_HANDLE *ChildHandleBuffer\r
250 )\r
251/*++\r
252\r
253Routine Description:\r
254\r
255 TODO: Add function description\r
256\r
257Arguments:\r
258\r
259 This - TODO: add argument description\r
260 Handle - TODO: add argument description\r
261 NumberOfChildren - TODO: add argument description\r
262 ChildHandleBuffer - TODO: add argument description\r
263\r
264Returns:\r
265\r
266 TODO: add return values\r
267\r
268--*/\r
269;\r
270\r
5f44f5b9 271EFI_STATUS\r
272EFIAPI\r
273WinNtSerialIoReset (\r
274 IN EFI_SERIAL_IO_PROTOCOL *This\r
275 )\r
276/*++\r
277\r
278Routine Description:\r
279\r
280 TODO: Add function description\r
281\r
282Arguments:\r
283\r
284 This - TODO: add argument description\r
285\r
286Returns:\r
287\r
288 TODO: add return values\r
289\r
290--*/\r
291;\r
292\r
5f44f5b9 293EFI_STATUS\r
294EFIAPI\r
295WinNtSerialIoSetAttributes (\r
296 IN EFI_SERIAL_IO_PROTOCOL *This,\r
297 IN UINT64 BaudRate,\r
298 IN UINT32 ReceiveFifoDepth,\r
299 IN UINT32 Timeout,\r
300 IN EFI_PARITY_TYPE Parity,\r
301 IN UINT8 DataBits,\r
302 IN EFI_STOP_BITS_TYPE StopBits\r
303 )\r
304/*++\r
305\r
306Routine Description:\r
307\r
308 TODO: Add function description\r
309\r
310Arguments:\r
311\r
312 This - TODO: add argument description\r
313 BaudRate - TODO: add argument description\r
314 ReceiveFifoDepth - TODO: add argument description\r
315 Timeout - TODO: add argument description\r
316 Parity - TODO: add argument description\r
317 DataBits - TODO: add argument description\r
318 StopBits - TODO: add argument description\r
319\r
320Returns:\r
321\r
322 TODO: add return values\r
323\r
324--*/\r
325;\r
326\r
5f44f5b9 327EFI_STATUS\r
328EFIAPI\r
329WinNtSerialIoSetControl (\r
330 IN EFI_SERIAL_IO_PROTOCOL *This,\r
331 IN UINT32 Control\r
332 )\r
333/*++\r
334\r
335Routine Description:\r
336\r
337 TODO: Add function description\r
338\r
339Arguments:\r
340\r
341 This - TODO: add argument description\r
342 Control - TODO: add argument description\r
343\r
344Returns:\r
345\r
346 TODO: add return values\r
347\r
348--*/\r
349;\r
350\r
5f44f5b9 351EFI_STATUS\r
352EFIAPI\r
353WinNtSerialIoGetControl (\r
354 IN EFI_SERIAL_IO_PROTOCOL *This,\r
355 OUT UINT32 *Control\r
356 )\r
357/*++\r
358\r
359Routine Description:\r
360\r
361 TODO: Add function description\r
362\r
363Arguments:\r
364\r
365 This - TODO: add argument description\r
366 Control - TODO: add argument description\r
367\r
368Returns:\r
369\r
370 TODO: add return values\r
371\r
372--*/\r
373;\r
374\r
5f44f5b9 375EFI_STATUS\r
376EFIAPI\r
377WinNtSerialIoWrite (\r
378 IN EFI_SERIAL_IO_PROTOCOL *This,\r
379 IN OUT UINTN *BufferSize,\r
380 IN VOID *Buffer\r
381 )\r
382/*++\r
383\r
384Routine Description:\r
385\r
386 TODO: Add function description\r
387\r
388Arguments:\r
389\r
390 This - TODO: add argument description\r
391 BufferSize - TODO: add argument description\r
392 Buffer - TODO: add argument description\r
393\r
394Returns:\r
395\r
396 TODO: add return values\r
397\r
398--*/\r
399;\r
400\r
5f44f5b9 401EFI_STATUS\r
402EFIAPI\r
403WinNtSerialIoRead (\r
404 IN EFI_SERIAL_IO_PROTOCOL *This,\r
405 IN OUT UINTN *BufferSize,\r
406 OUT VOID *Buffer\r
407 )\r
408/*++\r
409\r
410Routine Description:\r
411\r
412 TODO: Add function description\r
413\r
414Arguments:\r
415\r
416 This - TODO: add argument description\r
417 BufferSize - TODO: add argument description\r
418 Buffer - TODO: add argument description\r
419\r
420Returns:\r
421\r
422 TODO: add return values\r
423\r
424--*/\r
425;\r
426\r
427BOOLEAN\r
428IsaSerialFifoFull (\r
429 IN SERIAL_DEV_FIFO *Fifo\r
430 )\r
431/*++\r
432\r
433Routine Description:\r
434\r
435 TODO: Add function description\r
436\r
437Arguments:\r
438\r
439 Fifo - TODO: add argument description\r
440\r
441Returns:\r
442\r
443 TODO: add return values\r
444\r
445--*/\r
446;\r
447\r
448BOOLEAN\r
449IsaSerialFifoEmpty (\r
450 IN SERIAL_DEV_FIFO *Fifo\r
451 )\r
452/*++\r
453\r
454Routine Description:\r
455\r
456 TODO: Add function description\r
457\r
458Arguments:\r
459\r
460 Fifo - TODO: add argument description\r
461\r
462Returns:\r
463\r
464 TODO: add return values\r
465\r
466--*/\r
467;\r
468\r
469EFI_STATUS\r
470IsaSerialFifoAdd (\r
471 IN SERIAL_DEV_FIFO *Fifo,\r
472 IN UINT8 Data\r
473 )\r
474/*++\r
475\r
476Routine Description:\r
477\r
478 TODO: Add function description\r
479\r
480Arguments:\r
481\r
482 Fifo - TODO: add argument description\r
483 Data - TODO: add argument description\r
484\r
485Returns:\r
486\r
487 TODO: add return values\r
488\r
489--*/\r
490;\r
491\r
492EFI_STATUS\r
493IsaSerialFifoRemove (\r
494 IN SERIAL_DEV_FIFO *Fifo,\r
495 OUT UINT8 *Data\r
496 )\r
497/*++\r
498\r
499Routine Description:\r
500\r
501 TODO: Add function description\r
502\r
503Arguments:\r
504\r
505 Fifo - TODO: add argument description\r
506 Data - TODO: add argument description\r
507\r
508Returns:\r
509\r
510 TODO: add return values\r
511\r
512--*/\r
513;\r
514\r
515EFI_STATUS\r
516IsaSerialReceiveTransmit (\r
517 WIN_NT_SERIAL_IO_PRIVATE_DATA *Private\r
518 )\r
519/*++\r
520\r
521Routine Description:\r
522\r
523 TODO: Add function description\r
524\r
525Arguments:\r
526\r
527 Private - TODO: add argument description\r
528\r
529Returns:\r
530\r
531 TODO: add return values\r
532\r
533--*/\r
534;\r
535\r
536#endif\r