From 66e0f0cba4e8bbc0e39bd88ad1b81b94ba813938 Mon Sep 17 00:00:00 2001 From: belliash Date: Sun, 31 Jul 2022 23:55:16 +0200 Subject: [PATCH] Support for universal asynchronous receiver-transmitter (UART) port --- sdk/xtdk/xtuefi.h | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/sdk/xtdk/xtuefi.h b/sdk/xtdk/xtuefi.h index d5b9e6ef..aba4c715 100644 --- a/sdk/xtdk/xtuefi.h +++ b/sdk/xtdk/xtuefi.h @@ -191,6 +191,26 @@ typedef enum EFI_GRAPHICS_OUTPUT_BLT_OPERATION EfiGraphicsOutputBltOperationMax } EFI_GRAPHICS_OUTPUT_BLT_OPERATION, *PEFI_GRAPHICS_OUTPUT_BLT_OPERATION; +/* Enumeration of UART parity types */ +typedef enum _EFI_UART_PARITY_TYPE +{ + DefaultParity, + NoParity, + EvenParity, + OddParity, + MarkParity, + SpaceParity +} EFI_UART_PARITY_TYPE, *PEFI_UART_PARITY_TYPE; + +/* Enumeration of UART stop bit types */ +typedef enum _EFI_UART_STOP_BITS_TYPE +{ + DefaultStopBits, + OneStopBit, + OneFiveStopBits, + TwoStopBits +} EFI_UART_STOP_BITS_TYPE, *PEFI_UART_STOP_BITS_TYPE; + /* EFI structures forward references */ typedef struct _EFI_CAPSULE_HEADER EFI_CAPSULE_HEADER, *PEFI_CAPSULE_HEADER; typedef struct _EFI_GUID EFI_GUID, *PEFI_GUID; @@ -298,6 +318,8 @@ typedef struct _EFI_MBR_PARTITION_RECORD EFI_MBR_PARTITION_RECORD, *PEFI_MBR_PAR typedef struct _EFI_MASTER_BOOT_RECORD EFI_MASTER_BOOT_RECORD, *PEFI_MASTER_BOOT_RECORD; typedef struct _EFI_GPT_PARTITION_TABLE_HEADER EFI_GPT_PARTITION_TABLE_HEADER, *PEFI_GPT_PARTITION_TABLE_HEADER; typedef struct _EFI_GPT_PARTITION_ENTRY EFI_GPT_PARTITION_ENTRY, *PEFI_GPT_PARTITION_ENTRY; +typedef struct _EFI_UART_IO_MODE EFI_UART_IO_MODE, *PEFI_UART_IO_MODE; +typedef struct _EFI_UART_IO_PROTOCOL EFI_UART_IO_PROTOCOL, *PEFI_UART_IO_PROTOCOL; /* EFI unions forward references */ typedef union _EFI_DEV_PATH EFI_DEV_PATH, *PEFI_DEV_PATH; @@ -487,6 +509,12 @@ typedef EFI_STATUS (*PEFI_EBC_UNLOAD_IMAGE)(IN PEFI_EBC_PROTOCOL This, IN EFI_HA typedef EFI_STATUS (*PEFI_EBC_ICACHE_FLUSH)(IN EFI_PHYSICAL_ADDRESS Start, IN UINT64 Length); typedef EFI_STATUS (*PEFI_EBC_REGISTER_ICACHE_FLUSH)(IN PEFI_EBC_PROTOCOL This, IN PEFI_EBC_ICACHE_FLUSH Flush); typedef EFI_STATUS (*PEFI_EBC_GET_VERSION)(IN PEFI_EBC_PROTOCOL This, IN OUT PUINT64 Version); +typedef EFI_STATUS (*PEFI_UART_RESET)(IN PEFI_UART_IO_PROTOCOL This); +typedef EFI_STATUS (*PEFI_UART_SET_ATTRIBUTES)(IN PEFI_UART_IO_PROTOCOL This, IN UINT64 BaudRate, IN UINT32 ReceiveFifoDepth, IN UINT32 Timeout, IN EFI_UART_PARITY_TYPE Parity, IN UINT8 DataBits, IN EFI_UART_STOP_BITS_TYPE StopBits); +typedef EFI_STATUS (*PEFI_UART_SET_CONTROL_BITS)(IN PEFI_UART_IO_PROTOCOL This, IN UINT32 Control); +typedef EFI_STATUS (*PEFI_UART_GET_CONTROL_BITS)(IN PEFI_UART_IO_PROTOCOL This, OUT PUINT32 Control); +typedef EFI_STATUS (*PEFI_UART_WRITE)(IN PEFI_UART_IO_PROTOCOL This, IN OUT PUINT_PTR BufferSize, IN PVOID Buffer); +typedef EFI_STATUS (*PEFI_UART_READ)(IN PEFI_UART_IO_PROTOCOL This, IN OUT PUINT_PTR BufferSize, OUT PVOID Buffer); /* 128-bit buffer containing a unique identifier value */ typedef struct _EFI_GUID @@ -1648,4 +1676,28 @@ typedef struct _EFI_GPT_PARTITION_ENTRY UINT16 PartitionName[36]; } EFI_GPT_PARTITION_ENTRY, *PEFI_GPT_PARTITION_ENTRY; +/* EFI UART I/O mode */ +typedef struct _EFI_UART_IO_MODE +{ + UINT32 ControlMask; + UINT32 Timeout; + UINT64 BaudRate; + UINT32 ReceiveFifoDepth; + UINT32 DataBits; + UINT32 Parity; + UINT32 StopBits; +} EFI_UART_IO_MODE, *PEFI_UART_IO_MODE; + +/* EFI UART I/O protocol */ +typedef struct _EFI_UART_IO_PROTOCOL { + UINT32 Revision; + PEFI_UART_RESET Reset; + PEFI_UART_SET_ATTRIBUTES SetAttributes; + PEFI_UART_SET_CONTROL_BITS SetControl; + PEFI_UART_GET_CONTROL_BITS GetControl; + PEFI_UART_WRITE Write; + PEFI_UART_READ Read; + PEFI_UART_IO_MODE Mode; +} EFI_UART_IO_PROTOCOL, *PEFI_UART_IO_PROTOCOL; + #endif /* __XTDK_XTUEFI_H */