176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef _EFI_SER_H 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _EFI_SER_H 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*++ 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanCopyright (c) 1998 Intel Corporation 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanModule Name: 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman efiser.h 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1276d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanAbstract: 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI serial protocol 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanRevision History 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman--*/ 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// Serial protocol 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman// 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define SERIAL_IO_PROTOCOL \ 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman { 0xBB25CF6F, 0xF1D4, 0x11D2, {0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD} } 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanINTERFACE_DECL(_SERIAL_IO_INTERFACE); 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef enum { 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman DefaultParity, 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman NoParity, 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EvenParity, 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OddParity, 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman MarkParity, 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman SpaceParity 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_PARITY_TYPE; 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef enum { 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman DefaultStopBits, 4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OneStopBit, // 1 stop bit 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OneFiveStopBits, // 1.5 stop bits 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman TwoStopBits // 2 stop bits 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} EFI_STOP_BITS_TYPE; 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SERIAL_CLEAR_TO_SEND 0x0010 // RO 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SERIAL_DATA_SET_READY 0x0020 // RO 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SERIAL_RING_INDICATE 0x0040 // RO 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SERIAL_CARRIER_DETECT 0x0080 // RO 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SERIAL_REQUEST_TO_SEND 0x0002 // WO 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SERIAL_DATA_TERMINAL_READY 0x0001 // WO 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SERIAL_INPUT_BUFFER_EMPTY 0x0100 // RO 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SERIAL_OUTPUT_BUFFER_EMPTY 0x0200 // RO 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE 0x1000 // RW 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE 0x2000 // RW 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE 0x4000 // RW 5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 5876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_SERIAL_RESET) ( 6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN struct _SERIAL_IO_INTERFACE *This 6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 6476d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_SERIAL_SET_ATTRIBUTES) ( 6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN struct _SERIAL_IO_INTERFACE *This, 6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT64 BaudRate, 6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT32 ReceiveFifoDepth, 6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT32 Timeout, 7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_PARITY_TYPE Parity, 7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT8 DataBits, 7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN EFI_STOP_BITS_TYPE StopBits 7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 7676d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_SERIAL_SET_CONTROL_BITS) ( 7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN struct _SERIAL_IO_INTERFACE *This, 7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN UINT32 Control 8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 8376d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_SERIAL_GET_CONTROL_BITS) ( 8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN struct _SERIAL_IO_INTERFACE *This, 8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OUT UINT32 *Control 8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 8876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 9076d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 9176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_SERIAL_WRITE) ( 9276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN struct _SERIAL_IO_INTERFACE *This, 9376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN OUT UINTN *BufferSize, 9476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN VOID *Buffer 9576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 9676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 9776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef 9876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS 9976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman(EFIAPI *EFI_SERIAL_READ) ( 10076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN struct _SERIAL_IO_INTERFACE *This, 10176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman IN OUT UINTN *BufferSize, 10276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman OUT VOID *Buffer 10376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ); 10476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct { 10676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT32 ControlMask; 10776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 10876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman // current Attributes 10976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT32 Timeout; 11076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT64 BaudRate; 11176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT32 ReceiveFifoDepth; 11276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT32 DataBits; 11376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT32 Parity; 11476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT32 StopBits; 11576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} SERIAL_IO_MODE; 11676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 11776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define SERIAL_IO_INTERFACE_REVISION 0x00010000 11876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 11976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmantypedef struct _SERIAL_IO_INTERFACE { 12076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman UINT32 Revision; 12176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_SERIAL_RESET Reset; 12276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_SERIAL_SET_ATTRIBUTES SetAttributes; 12376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_SERIAL_SET_CONTROL_BITS SetControl; 12476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_SERIAL_GET_CONTROL_BITS GetControl; 12576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_SERIAL_WRITE Write; 12676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman EFI_SERIAL_READ Read; 12776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 12876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman SERIAL_IO_MODE *Mode; 12976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} SERIAL_IO_INTERFACE; 13076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 13176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif 13276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 133