diff options
Diffstat (limited to 'ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c')
| -rw-r--r-- | ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c | 294 |
1 files changed, 147 insertions, 147 deletions
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c index e5267b1d04..72dda11a03 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c @@ -1,147 +1,147 @@ -/** @file
- SPCR table parser
-
- Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent
-
- @par Reference(s):
- - Microsoft Serial Port Console Redirection Table
- Specification - Version 1.03 - August 10, 2015.
-**/
-
-#include <IndustryStandard/Acpi.h>
-#include <IndustryStandard/SerialPortConsoleRedirectionTable.h>
-#include <Library/UefiLib.h>
-#include "AcpiParser.h"
-#include "AcpiTableParser.h"
-
-// Local variables
-STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
-
-/**
- This function validates the Interrupt Type.
-
- @param [in] Ptr Pointer to the start of the field data.
- @param [in] Context Pointer to context specific information e.g. this
- could be a pointer to the ACPI table header.
-**/
-STATIC
-VOID
-EFIAPI
-ValidateInterruptType (
- IN UINT8 *Ptr,
- IN VOID *Context
- )
-{
- #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
- UINT8 InterruptType;
-
- InterruptType = *Ptr;
-
- if (InterruptType !=
- EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC)
- {
- IncrementErrorCount ();
- Print (
- L"\nERROR: InterruptType = %d. This must be 8 on ARM Platforms",
- InterruptType
- );
- }
-
- #endif
-}
-
-/**
- This function validates the Irq.
-
- @param [in] Ptr Pointer to the start of the field data.
- @param [in] Context Pointer to context specific information e.g. this
- could be a pointer to the ACPI table header.
-**/
-STATIC
-VOID
-EFIAPI
-ValidateIrq (
- IN UINT8 *Ptr,
- IN VOID *Context
- )
-{
- #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
- UINT8 Irq;
-
- Irq = *Ptr;
-
- if (Irq != 0) {
- IncrementErrorCount ();
- Print (
- L"\nERROR: Irq = %d. This must be zero on ARM Platforms\n",
- Irq
- );
- }
-
- #endif
-}
-
-/**
- An ACPI_PARSER array describing the ACPI SPCR Table.
-**/
-STATIC CONST ACPI_PARSER SpcrParser[] = {
- PARSE_ACPI_HEADER (&AcpiHdrInfo),
- { L"Interface Type", 1, 36, L"%d", NULL, NULL, NULL, NULL },
- { L"Reserved", 3, 37, L"%x %x %x", Dump3Chars, NULL, NULL, NULL },
- { L"Base Address", 12, 40, NULL, DumpGas, NULL, NULL, NULL },
- { L"Interrupt Type", 1, 52, L"%d", NULL, NULL, ValidateInterruptType, NULL },
- { L"IRQ", 1, 53, L"%d", NULL, NULL, ValidateIrq, NULL },
- { L"Global System Interrupt", 4, 54, L"0x%x", NULL, NULL, NULL, NULL },
- { L"Baud Rate", 1, 58, L"%d", NULL, NULL, NULL, NULL },
- { L"Parity", 1, 59, L"%d", NULL, NULL, NULL, NULL },
- { L"Stop Bits", 1, 60, L"%d", NULL, NULL, NULL, NULL },
- { L"Flow Control", 1, 61, L"0x%x", NULL, NULL, NULL, NULL },
- { L"Terminal Type", 1, 62, L"%d", NULL, NULL, NULL, NULL },
- { L"Reserved", 1, 63, L"%x", NULL, NULL, NULL, NULL },
-
- { L"PCI Device ID", 2, 64, L"0x%x", NULL, NULL, NULL, NULL },
- { L"PCI Vendor ID", 2, 66, L"0x%x", NULL, NULL, NULL, NULL },
- { L"PCI Bus Number", 1, 68, L"0x%x", NULL, NULL, NULL, NULL },
- { L"PCI Device Number", 1, 69, L"0x%x", NULL, NULL, NULL, NULL },
- { L"PCI Function Number", 1, 70, L"0x%x", NULL, NULL, NULL, NULL },
- { L"PCI Flags", 4, 71, L"0x%x", NULL, NULL, NULL, NULL },
- { L"PCI Segment", 1, 75, L"0x%x", NULL, NULL, NULL, NULL },
- { L"Reserved", 4, 76, L"%x", NULL, NULL, NULL, NULL }
-};
-
-/**
- This function parses the ACPI SPCR table.
- When trace is enabled this function parses the SPCR table and
- traces the ACPI table fields.
-
- This function also performs validations of the ACPI table fields.
-
- @param [in] Trace If TRUE, trace the ACPI fields.
- @param [in] Ptr Pointer to the start of the buffer.
- @param [in] AcpiTableLength Length of the ACPI table.
- @param [in] AcpiTableRevision Revision of the ACPI table.
-**/
-VOID
-EFIAPI
-ParseAcpiSpcr (
- IN BOOLEAN Trace,
- IN UINT8 *Ptr,
- IN UINT32 AcpiTableLength,
- IN UINT8 AcpiTableRevision
- )
-{
- if (!Trace) {
- return;
- }
-
- // Dump the SPCR
- ParseAcpi (
- TRUE,
- 0,
- "SPCR",
- Ptr,
- AcpiTableLength,
- PARSER_PARAMS (SpcrParser)
- );
-}
+/** @file + SPCR table parser + + Copyright (c) 2016 - 2019, ARM Limited. All rights reserved. + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Reference(s): + - Microsoft Serial Port Console Redirection Table + Specification - Version 1.03 - August 10, 2015. +**/ + +#include <IndustryStandard/Acpi.h> +#include <IndustryStandard/SerialPortConsoleRedirectionTable.h> +#include <Library/UefiLib.h> +#include "AcpiParser.h" +#include "AcpiTableParser.h" + +// Local variables +STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo; + +/** + This function validates the Interrupt Type. + + @param [in] Ptr Pointer to the start of the field data. + @param [in] Context Pointer to context specific information e.g. this + could be a pointer to the ACPI table header. +**/ +STATIC +VOID +EFIAPI +ValidateInterruptType ( + IN UINT8 *Ptr, + IN VOID *Context + ) +{ + #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64) + UINT8 InterruptType; + + InterruptType = *Ptr; + + if (InterruptType != + EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC) + { + IncrementErrorCount (); + Print ( + L"\nERROR: InterruptType = %d. This must be 8 on ARM Platforms", + InterruptType + ); + } + + #endif +} + +/** + This function validates the Irq. + + @param [in] Ptr Pointer to the start of the field data. + @param [in] Context Pointer to context specific information e.g. this + could be a pointer to the ACPI table header. +**/ +STATIC +VOID +EFIAPI +ValidateIrq ( + IN UINT8 *Ptr, + IN VOID *Context + ) +{ + #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64) + UINT8 Irq; + + Irq = *Ptr; + + if (Irq != 0) { + IncrementErrorCount (); + Print ( + L"\nERROR: Irq = %d. This must be zero on ARM Platforms\n", + Irq + ); + } + + #endif +} + +/** + An ACPI_PARSER array describing the ACPI SPCR Table. +**/ +STATIC CONST ACPI_PARSER SpcrParser[] = { + PARSE_ACPI_HEADER (&AcpiHdrInfo), + { L"Interface Type", 1, 36, L"%d", NULL, NULL, NULL, NULL }, + { L"Reserved", 3, 37, L"%x %x %x", Dump3Chars, NULL, NULL, NULL }, + { L"Base Address", 12, 40, NULL, DumpGas, NULL, NULL, NULL }, + { L"Interrupt Type", 1, 52, L"%d", NULL, NULL, ValidateInterruptType, NULL }, + { L"IRQ", 1, 53, L"%d", NULL, NULL, ValidateIrq, NULL }, + { L"Global System Interrupt", 4, 54, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Baud Rate", 1, 58, L"%d", NULL, NULL, NULL, NULL }, + { L"Parity", 1, 59, L"%d", NULL, NULL, NULL, NULL }, + { L"Stop Bits", 1, 60, L"%d", NULL, NULL, NULL, NULL }, + { L"Flow Control", 1, 61, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Terminal Type", 1, 62, L"%d", NULL, NULL, NULL, NULL }, + { L"Reserved", 1, 63, L"%x", NULL, NULL, NULL, NULL }, + + { L"PCI Device ID", 2, 64, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PCI Vendor ID", 2, 66, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PCI Bus Number", 1, 68, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PCI Device Number", 1, 69, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PCI Function Number", 1, 70, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PCI Flags", 4, 71, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PCI Segment", 1, 75, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Reserved", 4, 76, L"%x", NULL, NULL, NULL, NULL } +}; + +/** + This function parses the ACPI SPCR table. + When trace is enabled this function parses the SPCR table and + traces the ACPI table fields. + + This function also performs validations of the ACPI table fields. + + @param [in] Trace If TRUE, trace the ACPI fields. + @param [in] Ptr Pointer to the start of the buffer. + @param [in] AcpiTableLength Length of the ACPI table. + @param [in] AcpiTableRevision Revision of the ACPI table. +**/ +VOID +EFIAPI +ParseAcpiSpcr ( + IN BOOLEAN Trace, + IN UINT8 *Ptr, + IN UINT32 AcpiTableLength, + IN UINT8 AcpiTableRevision + ) +{ + if (!Trace) { + return; + } + + // Dump the SPCR + ParseAcpi ( + TRUE, + 0, + "SPCR", + Ptr, + AcpiTableLength, + PARSER_PARAMS (SpcrParser) + ); +} |
