]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Facs/FacsParser.c
ShellPkg: acpiview: Add support for parsing FACS
[mirror_edk2.git] / ShellPkg / Library / UefiShellAcpiViewCommandLib / Parsers / Facs / FacsParser.c
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Facs/FacsParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Facs/FacsParser.c
new file mode 100644 (file)
index 0000000..d6bea86
--- /dev/null
@@ -0,0 +1,71 @@
+/** @file\r
+  FACS table parser\r
+\r
+  Copyright (c) 2019, ARM Limited. All rights reserved.\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+  @par Reference(s):\r
+    - ACPI 6.3 Specification - January 2019\r
+**/\r
+\r
+#include <IndustryStandard/Acpi.h>\r
+#include <Library/UefiLib.h>\r
+#include "AcpiParser.h"\r
+#include "AcpiTableParser.h"\r
+\r
+/**\r
+  An ACPI_PARSER array describing the ACPI FACS Table.\r
+**/\r
+STATIC CONST ACPI_PARSER FacsParser[] = {\r
+  {L"Signature", 4, 0, L"%c%c%c%c", Dump4Chars, NULL, NULL, NULL},\r
+  {L"Length", 4, 4, L"%d", NULL,  NULL, NULL, NULL},\r
+  {L"Hardware Signature", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Firmware Waking Vector", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Global Lock", 4, 16, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Flags", 4, 20, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"X Firmware Walking Vector", 8, 24, L"0x%lx", NULL, NULL, NULL, NULL},\r
+  {L"Version", 1, 32, L"%d", NULL, NULL, NULL, NULL},\r
+  {L"Reserved", 3, 33, L"%x %x %x", Dump3Chars, NULL, NULL, NULL},\r
+  {L"OSPM Flags", 4, 36, L"0x%x", NULL, NULL, NULL, NULL},\r
+  {L"Reserved", 8, 40, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,\r
+    NULL},\r
+  {L"Reserved", 8, 48, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,\r
+    NULL},\r
+  {L"Reserved", 8, 56, L"%x %x %x %x %x %x %x %x", Dump8Chars, NULL, NULL,\r
+    NULL}\r
+};\r
+\r
+/**\r
+  This function parses the ACPI FACS table.\r
+  When trace is enabled this function parses the FACS table and\r
+  traces the ACPI table fields.\r
+\r
+  This function also performs validation of the ACPI table fields.\r
+\r
+  @param [in] Trace              If TRUE, trace the ACPI fields.\r
+  @param [in] Ptr                Pointer to the start of the buffer.\r
+  @param [in] AcpiTableLength    Length of the ACPI table.\r
+  @param [in] AcpiTableRevision  Revision of the ACPI table.\r
+**/\r
+VOID\r
+EFIAPI\r
+ParseAcpiFacs (\r
+  IN BOOLEAN Trace,\r
+  IN UINT8*  Ptr,\r
+  IN UINT32  AcpiTableLength,\r
+  IN UINT8   AcpiTableRevision\r
+  )\r
+{\r
+  if (!Trace) {\r
+    return;\r
+  }\r
+\r
+  ParseAcpi (\r
+    Trace,\r
+    0,\r
+    "FACS",\r
+    Ptr,\r
+    AcpiTableLength,\r
+    PARSER_PARAMS (FacsParser)\r
+    );\r
+}\r