+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
-Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- UnixSerialIo.h\r
-\r
-Abstract:\r
-\r
-\r
---*/\r
-\r
-#ifndef _UNIXPKG_SERIAL_IO_\r
-#define _UNIXPKG_SERIAL_IO_\r
-\r
-#include <Common/UnixInclude.h>\r
-\r
-#include <Uefi.h>\r
-#include <Protocol/SerialIo.h>\r
-#include <Protocol/DevicePath.h>\r
-\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/DevicePathLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include "UnixDxe.h"\r
-\r
-extern EFI_DRIVER_BINDING_PROTOCOL gUnixSerialIoDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gUnixSerialIoComponentName;\r
-\r
-#define SERIAL_MAX_BUFFER_SIZE 256\r
-#define TIMEOUT_STALL_INTERVAL 10\r
-\r
-typedef struct {\r
- UINT32 First;\r
- UINT32 Last;\r
- UINT32 Surplus;\r
- UINT8 Data[SERIAL_MAX_BUFFER_SIZE];\r
-} SERIAL_DEV_FIFO;\r
-\r
-#define UNIX_SERIAL_IO_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('U', 'N', 's', 'i')\r
-typedef struct {\r
- UINT64 Signature;\r
-\r
- //\r
- // Protocol data for the new handle we are going to add\r
- //\r
- EFI_HANDLE Handle;\r
- EFI_SERIAL_IO_PROTOCOL SerialIo;\r
- EFI_SERIAL_IO_MODE SerialIoMode;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
-\r
- //\r
- // Private Data\r
- //\r
- EFI_HANDLE ControllerHandle;\r
- EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;\r
- UART_DEVICE_PATH UartDevicePath;\r
- EFI_UNIX_THUNK_PROTOCOL *UnixThunk;\r
-\r
- EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
-\r
- //\r
- // Private NT type Data;\r
- //\r
- UINTN UnixHandle;\r
- struct termios UnixTermios;\r
-\r
- BOOLEAN SoftwareLoopbackEnable;\r
- BOOLEAN HardwareFlowControl;\r
- BOOLEAN HardwareLoopbackEnable;\r
-\r
- SERIAL_DEV_FIFO Fifo;\r
-\r
-} UNIX_SERIAL_IO_PRIVATE_DATA;\r
-\r
-#define UNIX_SERIAL_IO_PRIVATE_DATA_FROM_THIS(a) \\r
- CR(a, UNIX_SERIAL_IO_PRIVATE_DATA, SerialIo, UNIX_SERIAL_IO_PRIVATE_DATA_SIGNATURE)\r
-\r
-//\r
-// Global Protocol Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gUnixSerialIoDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gUnixSerialIoComponentName;\r
-\r
-//\r
-// Macros to convert EFI serial types to NT serial types.\r
-//\r
-\r
-//\r
-// one second\r
-//\r
-#define SERIAL_TIMEOUT_DEFAULT (1000 * 1000) \r
-#define SERIAL_BAUD_DEFAULT 115200\r
-#define SERIAL_FIFO_DEFAULT 14\r
-#define SERIAL_DATABITS_DEFAULT 8\r
-#define SERIAL_PARITY_DEFAULT DefaultParity\r
-#define SERIAL_STOPBITS_DEFAULT DefaultStopBits\r
-\r
-#define SERIAL_CONTROL_MASK (EFI_SERIAL_CLEAR_TO_SEND | \\r
- EFI_SERIAL_DATA_SET_READY | \\r
- EFI_SERIAL_RING_INDICATE | \\r
- EFI_SERIAL_CARRIER_DETECT | \\r
- EFI_SERIAL_REQUEST_TO_SEND | \\r
- EFI_SERIAL_DATA_TERMINAL_READY | \\r
- EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE | \\r
- EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE | \\r
- EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE | \\r
- EFI_SERIAL_INPUT_BUFFER_EMPTY)\r
-\r
-#define ConvertBaud2Nt(x) (DWORD) x\r
-#define ConvertData2Nt(x) (BYTE) x\r
-\r
-#define ConvertParity2Nt(x) \\r
- (BYTE) ( \\r
- x == DefaultParity ? NOPARITY : \\r
- x == NoParity ? NOPARITY : \\r
- x == EvenParity ? EVENPARITY : \\r
- x == OddParity ? ODDPARITY : \\r
- x == MarkParity ? MARKPARITY : \\r
- x == SpaceParity ? SPACEPARITY : 0 \\r
- )\r
-\r
-#define ConvertStop2Nt(x) \\r
- (BYTE) ( \\r
- x == DefaultParity ? ONESTOPBIT : \\r
- x == OneFiveStopBits ? ONE5STOPBITS : \\r
- x == TwoStopBits ? TWOSTOPBITS : 0 \\r
- )\r
-\r
-#define ConvertTime2Nt(x) ((x) / 1000)\r
-\r
-//\r
-// 115400 baud with rounding errors\r
-//\r
-#define SERIAL_PORT_MAX_BAUD_RATE 115400 \r
-\r
-//\r
-// Fix the differences issue of linux header files termios.h \r
-// \r
-#ifndef B460800\r
-#define B460800 0010004\r
-#endif\r
-#ifndef B500000\r
-#define B500000 0010005\r
-#endif\r
-#ifndef B576000\r
-#define B576000 0010006\r
-#endif\r
-#ifndef B921600\r
-#define B921600 0010007\r
-#endif\r
-#ifndef B1000000\r
-#define B1000000 0010010\r
-#endif\r
-#ifndef B1152000\r
-#define B1152000 0010011\r
-#endif\r
-#ifndef B1500000\r
-#define B1500000 0010012\r
-#endif\r
-#ifndef B2000000\r
-#define B2000000 0010013\r
-#endif\r
-#ifndef B2500000\r
-#define B2500000 0010014\r
-#endif\r
-#ifndef B3000000\r
-#define B3000000 0010015\r
-#endif\r
-#ifndef B3500000\r
-#define B3500000 0010016\r
-#endif\r
-#ifndef B4000000\r
-#define B4000000 0010017\r
-#endif\r
-#ifndef __MAX_BAUD\r
-#define __MAX_BAUD B4000000\r
-#endif\r
-#ifndef CMSPAR\r
-#define CMSPAR 010000000000 /* mark or space (stick) parity */\r
-#endif\r
-#ifndef FIONREAD\r
-#define FIONREAD 0x541B\r
-#endif\r
-//\r
-// Function Prototypes\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-InitializeUnixSerialIo (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- ImageHandle - TODO: add argument description\r
- SystemTable - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UnixSerialIoDriverBindingSupported (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Handle - TODO: add argument description\r
- RemainingDevicePath - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UnixSerialIoDriverBindingStart (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Handle - TODO: add argument description\r
- RemainingDevicePath - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UnixSerialIoDriverBindingStop (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE *ChildHandleBuffer\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Handle - TODO: add argument description\r
- NumberOfChildren - TODO: add argument description\r
- ChildHandleBuffer - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UnixSerialIoReset (\r
- IN EFI_SERIAL_IO_PROTOCOL *This\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UnixSerialIoSetAttributes (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN UINT64 BaudRate,\r
- IN UINT32 ReceiveFifoDepth,\r
- IN UINT32 Timeout,\r
- IN EFI_PARITY_TYPE Parity,\r
- IN UINT8 DataBits,\r
- IN EFI_STOP_BITS_TYPE StopBits\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- BaudRate - TODO: add argument description\r
- ReceiveFifoDepth - TODO: add argument description\r
- Timeout - TODO: add argument description\r
- Parity - TODO: add argument description\r
- DataBits - TODO: add argument description\r
- StopBits - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UnixSerialIoSetControl (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN UINT32 Control\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Control - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UnixSerialIoGetControl (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- OUT UINT32 *Control\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- Control - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UnixSerialIoWrite (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- BufferSize - TODO: add argument description\r
- Buffer - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UnixSerialIoRead (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- This - TODO: add argument description\r
- BufferSize - TODO: add argument description\r
- Buffer - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsaSerialFifoFull (\r
- IN SERIAL_DEV_FIFO *Fifo\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Fifo - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsaSerialFifoEmpty (\r
- IN SERIAL_DEV_FIFO *Fifo\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Fifo - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-IsaSerialFifoAdd (\r
- IN SERIAL_DEV_FIFO *Fifo,\r
- IN UINT8 Data\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Fifo - TODO: add argument description\r
- Data - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-IsaSerialFifoRemove (\r
- IN SERIAL_DEV_FIFO *Fifo,\r
- OUT UINT8 *Data\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Fifo - TODO: add argument description\r
- Data - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-IsaSerialReceiveTransmit (\r
- UNIX_SERIAL_IO_PRIVATE_DATA *Private\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Private - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-#endif\r