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