3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
21 #ifndef _WIN_NT_SERIAL_IO_
22 #define _WIN_NT_SERIAL_IO_
26 #define SERIAL_MAX_BUFFER_SIZE 256
27 #define TIMEOUT_STALL_INTERVAL 10
33 UINT8 Data
[SERIAL_MAX_BUFFER_SIZE
];
36 #define WIN_NT_SERIAL_IO_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('N', 'T', 's', 'i')
41 // Protocol data for the new handle we are going to add
44 EFI_SERIAL_IO_PROTOCOL SerialIo
;
45 EFI_SERIAL_IO_MODE SerialIoMode
;
46 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
51 EFI_HANDLE ControllerHandle
;
52 EFI_DEVICE_PATH_PROTOCOL
*ParentDevicePath
;
53 UART_DEVICE_PATH UartDevicePath
;
54 EFI_WIN_NT_THUNK_PROTOCOL
*WinNtThunk
;
56 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
59 // Private NT type Data;
66 BOOLEAN SoftwareLoopbackEnable
;
67 BOOLEAN HardwareFlowControl
;
68 BOOLEAN HardwareLoopbackEnable
;
72 } WIN_NT_SERIAL_IO_PRIVATE_DATA
;
74 #define WIN_NT_SERIAL_IO_PRIVATE_DATA_FROM_THIS(a) \
75 CR(a, WIN_NT_SERIAL_IO_PRIVATE_DATA, SerialIo, WIN_NT_SERIAL_IO_PRIVATE_DATA_SIGNATURE)
78 // Global Protocol Variables
80 extern EFI_DRIVER_BINDING_PROTOCOL gWinNtSerialIoDriverBinding
;
81 extern EFI_COMPONENT_NAME_PROTOCOL gWinNtSerialIoComponentName
;
84 // Macros to convert EFI serial types to NT serial types.
90 #define SERIAL_TIMEOUT_DEFAULT (1000 * 1000)
91 #define SERIAL_BAUD_DEFAULT 115200
92 #define SERIAL_FIFO_DEFAULT 14
93 #define SERIAL_DATABITS_DEFAULT 8
94 #define SERIAL_PARITY_DEFAULT DefaultParity
95 #define SERIAL_STOPBITS_DEFAULT DefaultStopBits
97 #define SERIAL_CONTROL_MASK (EFI_SERIAL_CLEAR_TO_SEND | \
98 EFI_SERIAL_DATA_SET_READY | \
99 EFI_SERIAL_RING_INDICATE | \
100 EFI_SERIAL_CARRIER_DETECT | \
101 EFI_SERIAL_REQUEST_TO_SEND | \
102 EFI_SERIAL_DATA_TERMINAL_READY | \
103 EFI_SERIAL_INPUT_BUFFER_EMPTY)
105 #define ConvertBaud2Nt(x) (DWORD) x
106 #define ConvertData2Nt(x) (BYTE) x
108 #define ConvertParity2Nt(x) \
110 x == DefaultParity ? NOPARITY : \
111 x == NoParity ? NOPARITY : \
112 x == EvenParity ? EVENPARITY : \
113 x == OddParity ? ODDPARITY : \
114 x == MarkParity ? MARKPARITY : \
115 x == SpaceParity ? SPACEPARITY : 0 \
118 #define ConvertStop2Nt(x) \
120 x == DefaultParity ? ONESTOPBIT : \
121 x == OneFiveStopBits ? ONE5STOPBITS : \
122 x == TwoStopBits ? TWOSTOPBITS : 0 \
125 #define ConvertTime2Nt(x) ((x) / 1000)
128 // 115400 baud with rounding errors
130 #define SERIAL_PORT_MAX_BAUD_RATE 115400
133 // Function Prototypes
137 InitializeWinNtSerialIo (
138 IN EFI_HANDLE ImageHandle
,
139 IN EFI_SYSTEM_TABLE
*SystemTable
145 TODO: Add function description
149 ImageHandle - TODO: add argument description
150 SystemTable - TODO: add argument description
154 TODO: add return values
162 WinNtSerialIoDriverBindingSupported (
163 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
164 IN EFI_HANDLE Handle
,
165 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
171 TODO: Add function description
175 This - TODO: add argument description
176 Handle - TODO: add argument description
177 RemainingDevicePath - TODO: add argument description
181 TODO: add return values
189 WinNtSerialIoDriverBindingStart (
190 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
191 IN EFI_HANDLE Handle
,
192 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
198 TODO: Add function description
202 This - TODO: add argument description
203 Handle - TODO: add argument description
204 RemainingDevicePath - TODO: add argument description
208 TODO: add return values
216 WinNtSerialIoDriverBindingStop (
217 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
218 IN EFI_HANDLE Handle
,
219 IN UINTN NumberOfChildren
,
220 IN EFI_HANDLE
*ChildHandleBuffer
226 TODO: Add function description
230 This - TODO: add argument description
231 Handle - TODO: add argument description
232 NumberOfChildren - TODO: add argument description
233 ChildHandleBuffer - TODO: add argument description
237 TODO: add return values
246 IN EFI_SERIAL_IO_PROTOCOL
*This
252 TODO: Add function description
256 This - TODO: add argument description
260 TODO: add return values
268 WinNtSerialIoSetAttributes (
269 IN EFI_SERIAL_IO_PROTOCOL
*This
,
271 IN UINT32 ReceiveFifoDepth
,
273 IN EFI_PARITY_TYPE Parity
,
275 IN EFI_STOP_BITS_TYPE StopBits
281 TODO: Add function description
285 This - TODO: add argument description
286 BaudRate - TODO: add argument description
287 ReceiveFifoDepth - TODO: add argument description
288 Timeout - TODO: add argument description
289 Parity - TODO: add argument description
290 DataBits - TODO: add argument description
291 StopBits - TODO: add argument description
295 TODO: add return values
303 WinNtSerialIoSetControl (
304 IN EFI_SERIAL_IO_PROTOCOL
*This
,
311 TODO: Add function description
315 This - TODO: add argument description
316 Control - TODO: add argument description
320 TODO: add return values
328 WinNtSerialIoGetControl (
329 IN EFI_SERIAL_IO_PROTOCOL
*This
,
336 TODO: Add function description
340 This - TODO: add argument description
341 Control - TODO: add argument description
345 TODO: add return values
354 IN EFI_SERIAL_IO_PROTOCOL
*This
,
355 IN OUT UINTN
*BufferSize
,
362 TODO: Add function description
366 This - TODO: add argument description
367 BufferSize - TODO: add argument description
368 Buffer - TODO: add argument description
372 TODO: add return values
381 IN EFI_SERIAL_IO_PROTOCOL
*This
,
382 IN OUT UINTN
*BufferSize
,
389 TODO: Add function description
393 This - TODO: add argument description
394 BufferSize - TODO: add argument description
395 Buffer - TODO: add argument description
399 TODO: add return values
406 IN SERIAL_DEV_FIFO
*Fifo
412 TODO: Add function description
416 Fifo - TODO: add argument description
420 TODO: add return values
427 IN SERIAL_DEV_FIFO
*Fifo
433 TODO: Add function description
437 Fifo - TODO: add argument description
441 TODO: add return values
448 IN SERIAL_DEV_FIFO
*Fifo
,
455 TODO: Add function description
459 Fifo - TODO: add argument description
460 Data - TODO: add argument description
464 TODO: add return values
470 IsaSerialFifoRemove (
471 IN SERIAL_DEV_FIFO
*Fifo
,
478 TODO: Add function description
482 Fifo - TODO: add argument description
483 Data - TODO: add argument description
487 TODO: add return values
493 IsaSerialReceiveTransmit (
494 WIN_NT_SERIAL_IO_PRIVATE_DATA
*Private
500 TODO: Add function description
504 Private - TODO: add argument description
508 TODO: add return values