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