]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/WinNtSerialIoDxe/WinNtSerialIo.h
Modify all file header to follow doxygen format
[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
191STATIC\r
192EFI_STATUS\r
193EFIAPI\r
194WinNtSerialIoDriverBindingSupported (\r
195 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
196 IN EFI_HANDLE Handle,\r
197 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
198 )\r
199/*++\r
200\r
201Routine Description:\r
202\r
203 TODO: Add function description\r
204\r
205Arguments:\r
206\r
207 This - TODO: add argument description\r
208 Handle - TODO: add argument description\r
209 RemainingDevicePath - TODO: add argument description\r
210\r
211Returns:\r
212\r
213 TODO: add return values\r
214\r
215--*/\r
216;\r
217\r
218STATIC\r
219EFI_STATUS\r
220EFIAPI\r
221WinNtSerialIoDriverBindingStart (\r
222 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
223 IN EFI_HANDLE Handle,\r
224 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
225 )\r
226/*++\r
227\r
228Routine Description:\r
229\r
230 TODO: Add function description\r
231\r
232Arguments:\r
233\r
234 This - TODO: add argument description\r
235 Handle - TODO: add argument description\r
236 RemainingDevicePath - TODO: add argument description\r
237\r
238Returns:\r
239\r
240 TODO: add return values\r
241\r
242--*/\r
243;\r
244\r
245STATIC\r
246EFI_STATUS\r
247EFIAPI\r
248WinNtSerialIoDriverBindingStop (\r
249 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
250 IN EFI_HANDLE Handle,\r
251 IN UINTN NumberOfChildren,\r
252 IN EFI_HANDLE *ChildHandleBuffer\r
253 )\r
254/*++\r
255\r
256Routine Description:\r
257\r
258 TODO: Add function description\r
259\r
260Arguments:\r
261\r
262 This - TODO: add argument description\r
263 Handle - TODO: add argument description\r
264 NumberOfChildren - TODO: add argument description\r
265 ChildHandleBuffer - TODO: add argument description\r
266\r
267Returns:\r
268\r
269 TODO: add return values\r
270\r
271--*/\r
272;\r
273\r
274STATIC\r
275EFI_STATUS\r
276EFIAPI\r
277WinNtSerialIoReset (\r
278 IN EFI_SERIAL_IO_PROTOCOL *This\r
279 )\r
280/*++\r
281\r
282Routine Description:\r
283\r
284 TODO: Add function description\r
285\r
286Arguments:\r
287\r
288 This - TODO: add argument description\r
289\r
290Returns:\r
291\r
292 TODO: add return values\r
293\r
294--*/\r
295;\r
296\r
297STATIC\r
298EFI_STATUS\r
299EFIAPI\r
300WinNtSerialIoSetAttributes (\r
301 IN EFI_SERIAL_IO_PROTOCOL *This,\r
302 IN UINT64 BaudRate,\r
303 IN UINT32 ReceiveFifoDepth,\r
304 IN UINT32 Timeout,\r
305 IN EFI_PARITY_TYPE Parity,\r
306 IN UINT8 DataBits,\r
307 IN EFI_STOP_BITS_TYPE StopBits\r
308 )\r
309/*++\r
310\r
311Routine Description:\r
312\r
313 TODO: Add function description\r
314\r
315Arguments:\r
316\r
317 This - TODO: add argument description\r
318 BaudRate - TODO: add argument description\r
319 ReceiveFifoDepth - TODO: add argument description\r
320 Timeout - TODO: add argument description\r
321 Parity - TODO: add argument description\r
322 DataBits - TODO: add argument description\r
323 StopBits - TODO: add argument description\r
324\r
325Returns:\r
326\r
327 TODO: add return values\r
328\r
329--*/\r
330;\r
331\r
332STATIC\r
333EFI_STATUS\r
334EFIAPI\r
335WinNtSerialIoSetControl (\r
336 IN EFI_SERIAL_IO_PROTOCOL *This,\r
337 IN UINT32 Control\r
338 )\r
339/*++\r
340\r
341Routine Description:\r
342\r
343 TODO: Add function description\r
344\r
345Arguments:\r
346\r
347 This - TODO: add argument description\r
348 Control - TODO: add argument description\r
349\r
350Returns:\r
351\r
352 TODO: add return values\r
353\r
354--*/\r
355;\r
356\r
357STATIC\r
358EFI_STATUS\r
359EFIAPI\r
360WinNtSerialIoGetControl (\r
361 IN EFI_SERIAL_IO_PROTOCOL *This,\r
362 OUT UINT32 *Control\r
363 )\r
364/*++\r
365\r
366Routine Description:\r
367\r
368 TODO: Add function description\r
369\r
370Arguments:\r
371\r
372 This - TODO: add argument description\r
373 Control - TODO: add argument description\r
374\r
375Returns:\r
376\r
377 TODO: add return values\r
378\r
379--*/\r
380;\r
381\r
382STATIC\r
383EFI_STATUS\r
384EFIAPI\r
385WinNtSerialIoWrite (\r
386 IN EFI_SERIAL_IO_PROTOCOL *This,\r
387 IN OUT UINTN *BufferSize,\r
388 IN VOID *Buffer\r
389 )\r
390/*++\r
391\r
392Routine Description:\r
393\r
394 TODO: Add function description\r
395\r
396Arguments:\r
397\r
398 This - TODO: add argument description\r
399 BufferSize - TODO: add argument description\r
400 Buffer - TODO: add argument description\r
401\r
402Returns:\r
403\r
404 TODO: add return values\r
405\r
406--*/\r
407;\r
408\r
409STATIC\r
410EFI_STATUS\r
411EFIAPI\r
412WinNtSerialIoRead (\r
413 IN EFI_SERIAL_IO_PROTOCOL *This,\r
414 IN OUT UINTN *BufferSize,\r
415 OUT VOID *Buffer\r
416 )\r
417/*++\r
418\r
419Routine Description:\r
420\r
421 TODO: Add function description\r
422\r
423Arguments:\r
424\r
425 This - TODO: add argument description\r
426 BufferSize - TODO: add argument description\r
427 Buffer - TODO: add argument description\r
428\r
429Returns:\r
430\r
431 TODO: add return values\r
432\r
433--*/\r
434;\r
435\r
436BOOLEAN\r
437IsaSerialFifoFull (\r
438 IN SERIAL_DEV_FIFO *Fifo\r
439 )\r
440/*++\r
441\r
442Routine Description:\r
443\r
444 TODO: Add function description\r
445\r
446Arguments:\r
447\r
448 Fifo - TODO: add argument description\r
449\r
450Returns:\r
451\r
452 TODO: add return values\r
453\r
454--*/\r
455;\r
456\r
457BOOLEAN\r
458IsaSerialFifoEmpty (\r
459 IN SERIAL_DEV_FIFO *Fifo\r
460 )\r
461/*++\r
462\r
463Routine Description:\r
464\r
465 TODO: Add function description\r
466\r
467Arguments:\r
468\r
469 Fifo - TODO: add argument description\r
470\r
471Returns:\r
472\r
473 TODO: add return values\r
474\r
475--*/\r
476;\r
477\r
478EFI_STATUS\r
479IsaSerialFifoAdd (\r
480 IN SERIAL_DEV_FIFO *Fifo,\r
481 IN UINT8 Data\r
482 )\r
483/*++\r
484\r
485Routine Description:\r
486\r
487 TODO: Add function description\r
488\r
489Arguments:\r
490\r
491 Fifo - TODO: add argument description\r
492 Data - TODO: add argument description\r
493\r
494Returns:\r
495\r
496 TODO: add return values\r
497\r
498--*/\r
499;\r
500\r
501EFI_STATUS\r
502IsaSerialFifoRemove (\r
503 IN SERIAL_DEV_FIFO *Fifo,\r
504 OUT UINT8 *Data\r
505 )\r
506/*++\r
507\r
508Routine Description:\r
509\r
510 TODO: Add function description\r
511\r
512Arguments:\r
513\r
514 Fifo - TODO: add argument description\r
515 Data - TODO: add argument description\r
516\r
517Returns:\r
518\r
519 TODO: add return values\r
520\r
521--*/\r
522;\r
523\r
524EFI_STATUS\r
525IsaSerialReceiveTransmit (\r
526 WIN_NT_SERIAL_IO_PRIVATE_DATA *Private\r
527 )\r
528/*++\r
529\r
530Routine Description:\r
531\r
532 TODO: Add function description\r
533\r
534Arguments:\r
535\r
536 Private - TODO: add argument description\r
537\r
538Returns:\r
539\r
540 TODO: add return values\r
541\r
542--*/\r
543;\r
544\r
545#endif\r