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