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