ShellPkg: acpiview: Add support for parsing FACS
Add support for parsing the ACPI FACS table. The FADT parser has also been updated as it links the FACS table using the FIRMWARE_CTRL or X_FIRMWARE_CTRL fields. Since the FACS table does not follow the standard ACPI header, the FADT parser extracts the FACS signature, length and version fields before invoking the FACS parser. Cc: Ray Ni <ray.ni@intel.com> Cc: Zhichao Gao <zhichao.gao@intel.com> Reviewed-by: Zhichao Gao <zhichao.gao@intel.com> Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
committed by
mergify[bot]
parent
c9416efeef
commit
d5cf0fba20
@ -0,0 +1,71 @@
|
||||
/** @file
|
||||
FACS table parser
|
||||
|
||||
Copyright (c) 2019, ARM Limited. All rights reserved.
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
@par Reference(s):
|
||||
- ACPI 6.3 Specification - January 2019
|
||||
**/
|
||||
|
||||
#include <IndustryStandard/Acpi.h>
|
||||
#include <Library/UefiLib.h>
|
||||
#include "AcpiParser.h"
|
||||
#include "AcpiTableParser.h"
|
||||
|
||||
/**
|
||||
An ACPI_PARSER array describing the ACPI FACS Table.
|
||||
**/
|
||||
STATIC CONST ACPI_PARSER FacsParser[] = {
|
||||
{L"Signature", 4, 0, L"%c%c%c%c", Dump4Chars, NULL, NULL, NULL},
|
||||
{L"Length", 4, 4, L"%d", NULL, NULL, NULL, NULL},
|
||||
{L"Hardware Signature", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
|
||||
{L"Firmware Waking Vector", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
|
||||
{L"Global Lock", 4, 16, L"0x%x", NULL, NULL, NULL, NULL},
|
||||
{L"Flags", 4, 20, L"0x%x", NULL, NULL, NULL, NULL},
|
||||
{L"X Firmware Walking Vector", 8, 24, L"0x%lx", NULL, NULL, NULL, NULL},
|
||||
{L"Version", 1, 32, L"%d", NULL, NULL, NULL, NULL},
|
||||
{L"Reserved", 3, 33, L"%x %x %x", Dump3Chars, NULL, NULL, NULL},
|
||||
{L"OSPM Flags", 4, 36, L"0x%x", NULL, NULL, NULL, NULL},
|
||||
{L"Reserved", 8, 40, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,
|
||||
NULL},
|
||||
{L"Reserved", 8, 48, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,
|
||||
NULL},
|
||||
{L"Reserved", 8, 56, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,
|
||||
NULL}
|
||||
};
|
||||
|
||||
/**
|
||||
This function parses the ACPI FACS table.
|
||||
When trace is enabled this function parses the FACS table and
|
||||
traces the ACPI table fields.
|
||||
|
||||
This function also performs validation 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
|
||||
ParseAcpiFacs (
|
||||
IN BOOLEAN Trace,
|
||||
IN UINT8* Ptr,
|
||||
IN UINT32 AcpiTableLength,
|
||||
IN UINT8 AcpiTableRevision
|
||||
)
|
||||
{
|
||||
if (!Trace) {
|
||||
return;
|
||||
}
|
||||
|
||||
ParseAcpi (
|
||||
Trace,
|
||||
0,
|
||||
"FACS",
|
||||
Ptr,
|
||||
AcpiTableLength,
|
||||
PARSER_PARAMS (FacsParser)
|
||||
);
|
||||
}
|
Reference in New Issue
Block a user