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 _UNIXPKG_SERIAL_IO_
22 #define _UNIXPKG_SERIAL_IO_
23 #include <sys/types.h>
31 #define SERIAL_MAX_BUFFER_SIZE 256
32 #define TIMEOUT_STALL_INTERVAL 10
38 UINT8 Data
[SERIAL_MAX_BUFFER_SIZE
];
41 #define UNIX_SERIAL_IO_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('U', 'N', 's', 'i')
46 // Protocol data for the new handle we are going to add
49 EFI_SERIAL_IO_PROTOCOL SerialIo
;
50 EFI_SERIAL_IO_MODE SerialIoMode
;
51 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
56 EFI_HANDLE ControllerHandle
;
57 EFI_DEVICE_PATH_PROTOCOL
*ParentDevicePath
;
58 UART_DEVICE_PATH UartDevicePath
;
59 EFI_UNIX_THUNK_PROTOCOL
*UnixThunk
;
61 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
64 // Private NT type Data;
67 struct termios UnixTermios
;
69 BOOLEAN SoftwareLoopbackEnable
;
70 BOOLEAN HardwareFlowControl
;
71 BOOLEAN HardwareLoopbackEnable
;
75 } UNIX_SERIAL_IO_PRIVATE_DATA
;
77 #define UNIX_SERIAL_IO_PRIVATE_DATA_FROM_THIS(a) \
78 CR(a, UNIX_SERIAL_IO_PRIVATE_DATA, SerialIo, UNIX_SERIAL_IO_PRIVATE_DATA_SIGNATURE)
81 // Global Protocol Variables
83 extern EFI_DRIVER_BINDING_PROTOCOL gUnixSerialIoDriverBinding
;
84 extern EFI_COMPONENT_NAME_PROTOCOL gUnixSerialIoComponentName
;
87 // Macros to convert EFI serial types to NT serial types.
93 #define SERIAL_TIMEOUT_DEFAULT (1000 * 1000)
94 #define SERIAL_BAUD_DEFAULT 115200
95 #define SERIAL_FIFO_DEFAULT 14
96 #define SERIAL_DATABITS_DEFAULT 8
97 #define SERIAL_PARITY_DEFAULT DefaultParity
98 #define SERIAL_STOPBITS_DEFAULT DefaultStopBits
100 #define SERIAL_CONTROL_MASK (EFI_SERIAL_CLEAR_TO_SEND | \
101 EFI_SERIAL_DATA_SET_READY | \
102 EFI_SERIAL_RING_INDICATE | \
103 EFI_SERIAL_CARRIER_DETECT | \
104 EFI_SERIAL_REQUEST_TO_SEND | \
105 EFI_SERIAL_DATA_TERMINAL_READY | \
106 EFI_SERIAL_INPUT_BUFFER_EMPTY)
108 #define ConvertBaud2Nt(x) (DWORD) x
109 #define ConvertData2Nt(x) (BYTE) x
111 #define ConvertParity2Nt(x) \
113 x == DefaultParity ? NOPARITY : \
114 x == NoParity ? NOPARITY : \
115 x == EvenParity ? EVENPARITY : \
116 x == OddParity ? ODDPARITY : \
117 x == MarkParity ? MARKPARITY : \
118 x == SpaceParity ? SPACEPARITY : 0 \
121 #define ConvertStop2Nt(x) \
123 x == DefaultParity ? ONESTOPBIT : \
124 x == OneFiveStopBits ? ONE5STOPBITS : \
125 x == TwoStopBits ? TWOSTOPBITS : 0 \
128 #define ConvertTime2Nt(x) ((x) / 1000)
131 // 115400 baud with rounding errors
133 #define SERIAL_PORT_MAX_BAUD_RATE 115400
136 // Fix the differences issue of linux header files termios.h
139 #define B460800 0010004
142 #define B500000 0010005
145 #define B576000 0010006
148 #define B921600 0010007
151 #define B1000000 0010010
154 #define B1152000 0010011
157 #define B1500000 0010012
160 #define B2000000 0010013
163 #define B2500000 0010014
166 #define B3000000 0010015
169 #define B3500000 0010016
172 #define B4000000 0010017
175 #define __MAX_BAUD B4000000
178 #define CMSPAR 010000000000 /* mark or space (stick) parity */
181 #define FIONREAD 0x541B
184 // Function Prototypes
188 InitializeUnixSerialIo (
189 IN EFI_HANDLE ImageHandle
,
190 IN EFI_SYSTEM_TABLE
*SystemTable
196 TODO: Add function description
200 ImageHandle - TODO: add argument description
201 SystemTable - TODO: add argument description
205 TODO: add return values
212 UnixSerialIoDriverBindingSupported (
213 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
214 IN EFI_HANDLE Handle
,
215 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
221 TODO: Add function description
225 This - TODO: add argument description
226 Handle - TODO: add argument description
227 RemainingDevicePath - TODO: add argument description
231 TODO: add return values
238 UnixSerialIoDriverBindingStart (
239 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
240 IN EFI_HANDLE Handle
,
241 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
247 TODO: Add function description
251 This - TODO: add argument description
252 Handle - TODO: add argument description
253 RemainingDevicePath - TODO: add argument description
257 TODO: add return values
264 UnixSerialIoDriverBindingStop (
265 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
266 IN EFI_HANDLE Handle
,
267 IN UINTN NumberOfChildren
,
268 IN EFI_HANDLE
*ChildHandleBuffer
274 TODO: Add function description
278 This - TODO: add argument description
279 Handle - TODO: add argument description
280 NumberOfChildren - TODO: add argument description
281 ChildHandleBuffer - TODO: add argument description
285 TODO: add return values
293 IN EFI_SERIAL_IO_PROTOCOL
*This
299 TODO: Add function description
303 This - TODO: add argument description
307 TODO: add return values
314 UnixSerialIoSetAttributes (
315 IN EFI_SERIAL_IO_PROTOCOL
*This
,
317 IN UINT32 ReceiveFifoDepth
,
319 IN EFI_PARITY_TYPE Parity
,
321 IN EFI_STOP_BITS_TYPE StopBits
327 TODO: Add function description
331 This - TODO: add argument description
332 BaudRate - TODO: add argument description
333 ReceiveFifoDepth - TODO: add argument description
334 Timeout - TODO: add argument description
335 Parity - TODO: add argument description
336 DataBits - TODO: add argument description
337 StopBits - TODO: add argument description
341 TODO: add return values
348 UnixSerialIoSetControl (
349 IN EFI_SERIAL_IO_PROTOCOL
*This
,
356 TODO: Add function description
360 This - TODO: add argument description
361 Control - TODO: add argument description
365 TODO: add return values
372 UnixSerialIoGetControl (
373 IN EFI_SERIAL_IO_PROTOCOL
*This
,
380 TODO: Add function description
384 This - TODO: add argument description
385 Control - TODO: add argument description
389 TODO: add return values
397 IN EFI_SERIAL_IO_PROTOCOL
*This
,
398 IN OUT UINTN
*BufferSize
,
405 TODO: Add function description
409 This - TODO: add argument description
410 BufferSize - TODO: add argument description
411 Buffer - TODO: add argument description
415 TODO: add return values
423 IN EFI_SERIAL_IO_PROTOCOL
*This
,
424 IN OUT UINTN
*BufferSize
,
431 TODO: Add function description
435 This - TODO: add argument description
436 BufferSize - TODO: add argument description
437 Buffer - TODO: add argument description
441 TODO: add return values
448 IN SERIAL_DEV_FIFO
*Fifo
454 TODO: Add function description
458 Fifo - TODO: add argument description
462 TODO: add return values
469 IN SERIAL_DEV_FIFO
*Fifo
475 TODO: Add function description
479 Fifo - TODO: add argument description
483 TODO: add return values
490 IN SERIAL_DEV_FIFO
*Fifo
,
497 TODO: Add function description
501 Fifo - TODO: add argument description
502 Data - TODO: add argument description
506 TODO: add return values
512 IsaSerialFifoRemove (
513 IN SERIAL_DEV_FIFO
*Fifo
,
520 TODO: Add function description
524 Fifo - TODO: add argument description
525 Data - TODO: add argument description
529 TODO: add return values
535 IsaSerialReceiveTransmit (
536 UNIX_SERIAL_IO_PRIVATE_DATA
*Private
542 TODO: Add function description
546 Private - TODO: add argument description
550 TODO: add return values