142eedea958591087603bbacd1c2227d2494026afyshang/** @file
2568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  ACPI Serial Port Console Redirection Table as defined by Microsoft in
3568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  http://www.microsoft.com/whdc/system/platform/server/spcr.mspx
4568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
5c374aa43a199a5aab53218ef3cf99284ba19ae98Heyi Guo  Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
6d4f293d1dd122525bea8d241817ee239148ad6deSamer El-Haj-Mahmoud  (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
79df063a06aef048c042498e2f542fb693e93493ahhtian  This program and the accompanying materials
8568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  are licensed and made available under the terms and conditions of the BSD License
9568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  which accompanies this distribution.  The full text of the license may be found at
10568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  http://opensource.org/licenses/bsd-license.php
11568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
12568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14568eb0cb4be2a61d7ae6273582438fd80223f49cqwang**/
15568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
16568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#ifndef _SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_H_
17568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define _SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_H_
18568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
19ecc4094208bcbdd61997dfb2cc931092dd140b0cyshang
20ecc4094208bcbdd61997dfb2cc931092dd140b0cyshang#include <IndustryStandard/Acpi.h>
21568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
22766f4bc13745f77fbcd68efc7d689f493c67b833qhuang//
23766f4bc13745f77fbcd68efc7d689f493c67b833qhuang// Ensure proper structure formats
24766f4bc13745f77fbcd68efc7d689f493c67b833qhuang//
25766f4bc13745f77fbcd68efc7d689f493c67b833qhuang#pragma pack(1)
26766f4bc13745f77fbcd68efc7d689f493c67b833qhuang
271bc5d0217a6e9e6086a14cc00c075b9003bd3f0aklu///
281bc5d0217a6e9e6086a14cc00c075b9003bd3f0aklu/// SPCR Revision (defined in spec)
291bc5d0217a6e9e6086a14cc00c075b9003bd3f0aklu///
30c374aa43a199a5aab53218ef3cf99284ba19ae98Heyi Guo#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION 0x02
31568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
321bc5d0217a6e9e6086a14cc00c075b9003bd3f0aklu///
334135253bde4f1bb0004844f3ab1112882c76072exli/// Serial Port Console Redirection Table Format
341bc5d0217a6e9e6086a14cc00c075b9003bd3f0aklu///
35568eb0cb4be2a61d7ae6273582438fd80223f49cqwangtypedef struct {
36568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  EFI_ACPI_DESCRIPTION_HEADER             Header;
37568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   InterfaceType;
38568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   Reserved1[3];
39d4f293d1dd122525bea8d241817ee239148ad6deSamer El-Haj-Mahmoud  EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE  BaseAddress;
40568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   InterruptType;
41568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   Irq;
42568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT32                                  GlobalSystemInterrupt;
43568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   BaudRate;
44568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   Parity;
45568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   StopBits;
46568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   FlowControl;
47568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   TerminalType;
48c374aa43a199a5aab53218ef3cf99284ba19ae98Heyi Guo  UINT8                                   Reserved2;
49568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT16                                  PciDeviceId;
50568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT16                                  PciVendorId;
51568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   PciBusNumber;
52568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   PciDeviceNumber;
53568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   PciFunctionNumber;
54568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT32                                  PciFlags;
55568eb0cb4be2a61d7ae6273582438fd80223f49cqwang  UINT8                                   PciSegment;
56c374aa43a199a5aab53218ef3cf99284ba19ae98Heyi Guo  UINT32                                  Reserved3;
57568eb0cb4be2a61d7ae6273582438fd80223f49cqwang} EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE;
58766f4bc13745f77fbcd68efc7d689f493c67b833qhuang
59568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#pragma pack()
60568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
61568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
62568eb0cb4be2a61d7ae6273582438fd80223f49cqwang// SPCR Definitions
63568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
64568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
65568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
66568eb0cb4be2a61d7ae6273582438fd80223f49cqwang// Interface Type
67568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
684135253bde4f1bb0004844f3ab1112882c76072exli
694135253bde4f1bb0004844f3ab1112882c76072exli///
704135253bde4f1bb0004844f3ab1112882c76072exli/// Full 16550 interface
714135253bde4f1bb0004844f3ab1112882c76072exli///
72568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_16550   0
734135253bde4f1bb0004844f3ab1112882c76072exli///
744135253bde4f1bb0004844f3ab1112882c76072exli/// Full 16450 interface
754135253bde4f1bb0004844f3ab1112882c76072exli///
76568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_16450   1
77568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
78568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
79568eb0cb4be2a61d7ae6273582438fd80223f49cqwang// Interrupt Type
80568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
814135253bde4f1bb0004844f3ab1112882c76072exli
824135253bde4f1bb0004844f3ab1112882c76072exli///
834135253bde4f1bb0004844f3ab1112882c76072exli/// PC-AT-compatible dual-8259 IRQ interrupt
844135253bde4f1bb0004844f3ab1112882c76072exli///
85568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_8259    0x1
864135253bde4f1bb0004844f3ab1112882c76072exli///
874135253bde4f1bb0004844f3ab1112882c76072exli/// I/O APIC interrupt (Global System Interrupt)
884135253bde4f1bb0004844f3ab1112882c76072exli///
89568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_APIC    0x2
904135253bde4f1bb0004844f3ab1112882c76072exli///
914135253bde4f1bb0004844f3ab1112882c76072exli/// I/O SAPIC interrupt (Global System Interrupt)
924135253bde4f1bb0004844f3ab1112882c76072exli///
93568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_SAPIC   0x4
94c374aa43a199a5aab53218ef3cf99284ba19ae98Heyi Guo///
95c374aa43a199a5aab53218ef3cf99284ba19ae98Heyi Guo/// ARMH GIC interrupt (Global System Interrupt)
96c374aa43a199a5aab53218ef3cf99284ba19ae98Heyi Guo///
97c374aa43a199a5aab53218ef3cf99284ba19ae98Heyi Guo#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC     0x8
98568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
99568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
100568eb0cb4be2a61d7ae6273582438fd80223f49cqwang// Baud Rate
101568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
102568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_9600         3
103568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_19200        4
10404cabbc0a1bbe1f4be36f0c8d855dee532ad8ad2jyao#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_57600        6
10504cabbc0a1bbe1f4be36f0c8d855dee532ad8ad2jyao#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_BAUD_RATE_115200       7
106568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
107568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
108568eb0cb4be2a61d7ae6273582438fd80223f49cqwang// Parity
109568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
110568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_PARITY_NO_PARITY       0
111568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
112568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
113568eb0cb4be2a61d7ae6273582438fd80223f49cqwang// Stop Bits
114568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
115568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_STOP_BITS_1            1
116568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
117568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
118568eb0cb4be2a61d7ae6273582438fd80223f49cqwang// Flow Control
119568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
1204135253bde4f1bb0004844f3ab1112882c76072exli
1214135253bde4f1bb0004844f3ab1112882c76072exli///
1224135253bde4f1bb0004844f3ab1112882c76072exli/// DCD required for transmit
1234135253bde4f1bb0004844f3ab1112882c76072exli///
124568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_DCD       0x1
1254135253bde4f1bb0004844f3ab1112882c76072exli///
1264135253bde4f1bb0004844f3ab1112882c76072exli/// RTS/CTS hardware flow control
1274135253bde4f1bb0004844f3ab1112882c76072exli///
128568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_RTS_CTS   0x2
1294135253bde4f1bb0004844f3ab1112882c76072exli///
1304135253bde4f1bb0004844f3ab1112882c76072exli///  XON/XOFF software control
1314135253bde4f1bb0004844f3ab1112882c76072exli///
132568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_XON_XOFF  0x4
133568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
134568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
135568eb0cb4be2a61d7ae6273582438fd80223f49cqwang// Terminal Type
136568eb0cb4be2a61d7ae6273582438fd80223f49cqwang//
137568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT100      0
138568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT100_PLUS 1
139568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_VT_UTF8    2
140568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_TERMINAL_TYPE_ANSI       3
141568eb0cb4be2a61d7ae6273582438fd80223f49cqwang
142568eb0cb4be2a61d7ae6273582438fd80223f49cqwang#endif
143