-/**@file\r
+/** @file\r
ACPI Serial Port Console Redirection Table as defined by Microsoft in\r
http://www.microsoft.com/whdc/system/platform/server/spcr.mspx\r
- \r
- Copyright (c) 2007, Intel Corporation\r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+ Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>\r
+ Copyright (c) 2014 - 2016, ARM Limited. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
**/\r
\r
#ifndef _SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_H_\r
#define _SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_H_\r
\r
-\r
#include <IndustryStandard/Acpi.h>\r
\r
//\r
// Ensure proper structure formats\r
//\r
-#ifdef _MSC_EXTENSIONS\r
#pragma pack(1)\r
-#endif\r
\r
-//\r
-// SPCR Revision (defined in spec)\r
-//\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION 0x01\r
+///\r
+/// SPCR Revision (defined in spec)\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION 0x02\r
\r
-//\r
-// SPCR Structure Definition\r
-//\r
+///\r
+/// Serial Port Console Redirection Table Format\r
+///\r
typedef struct {\r
- EFI_ACPI_DESCRIPTION_HEADER Header;\r
- UINT8 InterfaceType;\r
- UINT8 Reserved1[3];\r
- EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE BaseAddress;\r
- UINT8 InterruptType;\r
- UINT8 Irq;\r
- UINT32 GlobalSystemInterrupt;\r
- UINT8 BaudRate;\r
- UINT8 Parity;\r
- UINT8 StopBits;\r
- UINT8 FlowControl;\r
- UINT8 TerminalType;\r
- UINT8 Language;\r
- UINT16 PciDeviceId;\r
- UINT16 PciVendorId;\r
- UINT8 PciBusNumber;\r
- UINT8 PciDeviceNumber;\r
- UINT8 PciFunctionNumber;\r
- UINT32 PciFlags;\r
- UINT8 PciSegment;\r
- UINT32 Reserved2;\r
+ EFI_ACPI_DESCRIPTION_HEADER Header;\r
+ UINT8 InterfaceType;\r
+ UINT8 Reserved1[3];\r
+ EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE BaseAddress;\r
+ UINT8 InterruptType;\r
+ UINT8 Irq;\r
+ UINT32 GlobalSystemInterrupt;\r
+ UINT8 BaudRate;\r
+ UINT8 Parity;\r
+ UINT8 StopBits;\r
+ UINT8 FlowControl;\r
+ UINT8 TerminalType;\r
+ UINT8 Reserved2;\r
+ UINT16 PciDeviceId;\r
+ UINT16 PciVendorId;\r
+ UINT8 PciBusNumber;\r
+ UINT8 PciDeviceNumber;\r
+ UINT8 PciFunctionNumber;\r
+ UINT32 PciFlags;\r
+ UINT8 PciSegment;\r
+ UINT32 Reserved3;\r
} EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE;\r
\r
-#ifdef _MSC_EXTENSIONS\r
#pragma pack()\r
-#endif\r
\r
//\r
// SPCR Definitions\r
//\r
// Interface Type\r
//\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_16550 0\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_16450 1\r
+\r
+///\r
+/// Full 16550 interface\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_16550 0\r
+///\r
+/// Full 16450 interface\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_16450 1\r
+\r
+//\r
+// The Serial Port Subtypes for ARM are documented in Table 3 of the DBG2 Specification\r
+//\r
+\r
+///\r
+/// ARM PL011 UART\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_ARM_PL011_UART 0x03\r
+\r
+///\r
+/// NVIDIA 16550 UART\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_NVIDIA_16550_UART 0x05\r
+\r
+///\r
+/// ARM SBSA Generic UART (2.x) supporting 32-bit only accesses [deprecated]\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_ARM_SBSA_GENERIC_UART_2X 0x0d\r
+\r
+///\r
+/// ARM SBSA Generic UART\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_ARM_SBSA_GENERIC_UART 0x0e\r
+\r
+///\r
+/// ARM DCC\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_DCC 0x0f\r
+\r
+///\r
+/// BCM2835 UART\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_BCM2835_UART 0x10\r
+\r
+///\r
+/// 16550-compatible with parameters defined in Generic Address Structure\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_16550_WITH_GAS 0x12\r
\r
//\r
// Interrupt Type\r
//\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_8259 0x1\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_APIC 0x2\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_SAPIC 0x4\r
+\r
+///\r
+/// PC-AT-compatible dual-8259 IRQ interrupt\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_8259 0x1\r
+///\r
+/// I/O APIC interrupt (Global System Interrupt)\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_APIC 0x2\r
+///\r
+/// I/O SAPIC interrupt (Global System Interrupt)\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_SAPIC 0x4\r
+///\r
+/// ARMH GIC interrupt (Global System Interrupt)\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC 0x8\r
\r
//\r
// Baud Rate\r
//\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_9600 3\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_19200 4\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_57600 5\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_115200 6\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_9600 3\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_19200 4\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_57600 6\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_115200 7\r
\r
//\r
// Parity\r
//\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_PARITY_NO_PARITY 0\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_PARITY_NO_PARITY 0\r
\r
//\r
// Stop Bits\r
//\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_STOP_BITS_1 1\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_STOP_BITS_1 1\r
\r
//\r
// Flow Control\r
//\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_DCD 0x1\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_RTS_CTS 0x2\r
+\r
+///\r
+/// DCD required for transmit\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_DCD 0x1\r
+///\r
+/// RTS/CTS hardware flow control\r
+///\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_RTS_CTS 0x2\r
+///\r
+/// XON/XOFF software control\r
+///\r
#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_XON_XOFF 0x4\r
\r
//\r
// Terminal Type\r
//\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT100 0\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT100_PLUS 1\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT_UTF8 2\r
-#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_ANSI 3\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT100 0\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT100_PLUS 1\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT_UTF8 2\r
+#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_ANSI 3\r
\r
#endif\r