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