1 /** @file 2 ACPI Serial Port Console Redirection Table as defined by Microsoft in 3 http://www.microsoft.com/whdc/system/platform/server/spcr.mspx 4 5 Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR> 6 (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR> 7 Copyright (c) 2014 - 2016, ARM Limited. All rights reserved.<BR> 8 SPDX-License-Identifier: BSD-2-Clause-Patent 9 **/ 10 11 #ifndef _SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_H_ 12 #define _SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_H_ 13 14 15 #include <IndustryStandard/Acpi.h> 16 17 // 18 // Ensure proper structure formats 19 // 20 #pragma pack(1) 21 22 /// 23 /// SPCR Revision (defined in spec) 24 /// 25 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION 0x02 26 27 /// 28 /// Serial Port Console Redirection Table Format 29 /// 30 typedef struct { 31 EFI_ACPI_DESCRIPTION_HEADER Header; 32 UINT8 InterfaceType; 33 UINT8 Reserved1[3]; 34 EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE BaseAddress; 35 UINT8 InterruptType; 36 UINT8 Irq; 37 UINT32 GlobalSystemInterrupt; 38 UINT8 BaudRate; 39 UINT8 Parity; 40 UINT8 StopBits; 41 UINT8 FlowControl; 42 UINT8 TerminalType; 43 UINT8 Reserved2; 44 UINT16 PciDeviceId; 45 UINT16 PciVendorId; 46 UINT8 PciBusNumber; 47 UINT8 PciDeviceNumber; 48 UINT8 PciFunctionNumber; 49 UINT32 PciFlags; 50 UINT8 PciSegment; 51 UINT32 Reserved3; 52 } EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE; 53 54 #pragma pack() 55 56 // 57 // SPCR Definitions 58 // 59 60 // 61 // Interface Type 62 // 63 64 /// 65 /// Full 16550 interface 66 /// 67 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_16550 0 68 /// 69 /// Full 16450 interface 70 /// 71 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_16450 1 72 73 74 // 75 // The Serial Port Subtypes for ARM are documented in Table 3 of the DBG2 Specification 76 // 77 78 /// 79 /// ARM PL011 UART 80 /// 81 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_ARM_PL011_UART 0x03 82 83 /// 84 /// ARM SBSA Generic UART (2.x) supporting 32-bit only accesses [deprecated] 85 /// 86 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_ARM_SBSA_GENERIC_UART_2X 0x0d 87 88 /// 89 /// ARM SBSA Generic UART 90 /// 91 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_ARM_SBSA_GENERIC_UART 0x0e 92 93 /// 94 /// ARM DCC 95 /// 96 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_DCC 0x0f 97 98 /// 99 /// BCM2835 UART 100 /// 101 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_BCM2835_UART 0x10 102 103 // 104 // Interrupt Type 105 // 106 107 /// 108 /// PC-AT-compatible dual-8259 IRQ interrupt 109 /// 110 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_8259 0x1 111 /// 112 /// I/O APIC interrupt (Global System Interrupt) 113 /// 114 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_APIC 0x2 115 /// 116 /// I/O SAPIC interrupt (Global System Interrupt) 117 /// 118 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_SAPIC 0x4 119 /// 120 /// ARMH GIC interrupt (Global System Interrupt) 121 /// 122 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC 0x8 123 124 // 125 // Baud Rate 126 // 127 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_9600 3 128 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_19200 4 129 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_57600 6 130 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_115200 7 131 132 // 133 // Parity 134 // 135 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_PARITY_NO_PARITY 0 136 137 // 138 // Stop Bits 139 // 140 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_STOP_BITS_1 1 141 142 // 143 // Flow Control 144 // 145 146 /// 147 /// DCD required for transmit 148 /// 149 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_DCD 0x1 150 /// 151 /// RTS/CTS hardware flow control 152 /// 153 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_RTS_CTS 0x2 154 /// 155 /// XON/XOFF software control 156 /// 157 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_XON_XOFF 0x4 158 159 // 160 // Terminal Type 161 // 162 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT100 0 163 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT100_PLUS 1 164 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT_UTF8 2 165 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_ANSI 3 166 167 #endif 168