1/* $NetBSD: efiser.h,v 1.1.1.2 2018/08/16 18:17:47 jmcneill Exp $ */ 2 3#ifndef _EFI_SER_H 4#define _EFI_SER_H 5 6/*++ 7 8Copyright (c) 1998 Intel Corporation 9 10Module Name: 11 12 efiser.h 13 14Abstract: 15 16 EFI serial protocol 17 18Revision History 19 20--*/ 21 22// 23// Serial protocol 24// 25 26#define EFI_SERIAL_IO_PROTOCOL_GUID \ 27 { 0xBB25CF6F, 0xF1D4, 0x11D2, {0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD} } 28#define SERIAL_IO_PROTOCOL EFI_SERIAL_IO_PROTOCOL_GUID 29 30INTERFACE_DECL(_EFI_SERIAL_IO_PROTOCOL); 31 32typedef enum { 33 DefaultParity, 34 NoParity, 35 EvenParity, 36 OddParity, 37 MarkParity, 38 SpaceParity 39} EFI_PARITY_TYPE; 40 41typedef enum { 42 DefaultStopBits, 43 OneStopBit, // 1 stop bit 44 OneFiveStopBits, // 1.5 stop bits 45 TwoStopBits // 2 stop bits 46} EFI_STOP_BITS_TYPE; 47 48#define EFI_SERIAL_CLEAR_TO_SEND 0x0010 // RO 49#define EFI_SERIAL_DATA_SET_READY 0x0020 // RO 50#define EFI_SERIAL_RING_INDICATE 0x0040 // RO 51#define EFI_SERIAL_CARRIER_DETECT 0x0080 // RO 52#define EFI_SERIAL_REQUEST_TO_SEND 0x0002 // WO 53#define EFI_SERIAL_DATA_TERMINAL_READY 0x0001 // WO 54#define EFI_SERIAL_INPUT_BUFFER_EMPTY 0x0100 // RO 55#define EFI_SERIAL_OUTPUT_BUFFER_EMPTY 0x0200 // RO 56#define EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE 0x1000 // RW 57#define EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE 0x2000 // RW 58#define EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE 0x4000 // RW 59 60typedef 61EFI_STATUS 62(EFIAPI *EFI_SERIAL_RESET) ( 63 IN struct _EFI_SERIAL_IO_PROTOCOL *This 64 ); 65 66typedef 67EFI_STATUS 68(EFIAPI *EFI_SERIAL_SET_ATTRIBUTES) ( 69 IN struct _EFI_SERIAL_IO_PROTOCOL *This, 70 IN UINT64 BaudRate, 71 IN UINT32 ReceiveFifoDepth, 72 IN UINT32 Timeout, 73 IN EFI_PARITY_TYPE Parity, 74 IN UINT8 DataBits, 75 IN EFI_STOP_BITS_TYPE StopBits 76 ); 77 78typedef 79EFI_STATUS 80(EFIAPI *EFI_SERIAL_SET_CONTROL_BITS) ( 81 IN struct _EFI_SERIAL_IO_PROTOCOL *This, 82 IN UINT32 Control 83 ); 84 85typedef 86EFI_STATUS 87(EFIAPI *EFI_SERIAL_GET_CONTROL_BITS) ( 88 IN struct _EFI_SERIAL_IO_PROTOCOL *This, 89 OUT UINT32 *Control 90 ); 91 92typedef 93EFI_STATUS 94(EFIAPI *EFI_SERIAL_WRITE) ( 95 IN struct _EFI_SERIAL_IO_PROTOCOL *This, 96 IN OUT UINTN *BufferSize, 97 IN VOID *Buffer 98 ); 99 100typedef 101EFI_STATUS 102(EFIAPI *EFI_SERIAL_READ) ( 103 IN struct _EFI_SERIAL_IO_PROTOCOL *This, 104 IN OUT UINTN *BufferSize, 105 OUT VOID *Buffer 106 ); 107 108typedef struct { 109 UINT32 ControlMask; 110 111 // current Attributes 112 UINT32 Timeout; 113 UINT64 BaudRate; 114 UINT32 ReceiveFifoDepth; 115 UINT32 DataBits; 116 UINT32 Parity; 117 UINT32 StopBits; 118} SERIAL_IO_MODE; 119 120#define SERIAL_IO_INTERFACE_REVISION 0x00010000 121 122typedef struct _EFI_SERIAL_IO_PROTOCOL { 123 UINT32 Revision; 124 EFI_SERIAL_RESET Reset; 125 EFI_SERIAL_SET_ATTRIBUTES SetAttributes; 126 EFI_SERIAL_SET_CONTROL_BITS SetControl; 127 EFI_SERIAL_GET_CONTROL_BITS GetControl; 128 EFI_SERIAL_WRITE Write; 129 EFI_SERIAL_READ Read; 130 131 SERIAL_IO_MODE *Mode; 132} EFI_SERIAL_IO_PROTOCOL; 133 134typedef struct _EFI_SERIAL_IO_PROTOCOL _SERIAL_IO_INTERFACE; 135typedef EFI_SERIAL_IO_PROTOCOL SERIAL_IO_INTERFACE; 136 137#endif 138 139