]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmbeddedPkg/Include/Library/AcpiLib.h
MdeModulePkg/BootMaintUi: Add error handling codes when AllocatePool fail
[mirror_edk2.git] / EmbeddedPkg / Include / Library / AcpiLib.h
index 9fa9c5102da53d5fb02d46fd0b5d44acfcc2a89c..e5bcf56c29dba7ef29db9e022c8918d40ba423d5 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Helper Library for ACPI\r
 \r
-  Copyright (c) 2014, ARM Ltd. All rights reserved.\r
+  Copyright (c) 2014-2016, ARM Ltd. All rights reserved.\r
 \r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -18,6 +18,8 @@
 \r
 #include <Uefi.h>\r
 \r
+#include <IndustryStandard/Acpi10.h>\r
+\r
 //\r
 // Macros for the Generic Address Space\r
 //\r
     GicDistHwId, GicDistBase, GicDistVector, EFI_ACPI_RESERVED_DWORD \\r
   }\r
 \r
+#define EFI_ACPI_6_0_GIC_DISTRIBUTOR_INIT(GicDistHwId, GicDistBase, GicDistVector, GicVersion) \\r
+  { \\r
+    EFI_ACPI_6_0_GICD, sizeof (EFI_ACPI_6_0_GIC_DISTRIBUTOR_STRUCTURE), EFI_ACPI_RESERVED_WORD, \\r
+    GicDistHwId, GicDistBase, GicDistVector, GicVersion, \\r
+    {EFI_ACPI_RESERVED_BYTE, EFI_ACPI_RESERVED_BYTE, EFI_ACPI_RESERVED_BYTE} \\r
+  }\r
+\r
 // Note the parking protocol is configured by UEFI if required\r
 #define EFI_ACPI_5_0_GIC_STRUCTURE_INIT(GicId, AcpiCpuId, Flags, PmuIrq, GicBase) \\r
   { \\r
     GsivId, GicRBase, Mpidr                                                          \\r
   }\r
 \r
+#define EFI_ACPI_6_0_GIC_MSI_FRAME_INIT(GicMsiFrameId, PhysicalBaseAddress, Flags, SPICount, SPIBase) \\r
+  { \\r
+    EFI_ACPI_6_0_GIC_MSI_FRAME, sizeof (EFI_ACPI_6_0_GIC_MSI_FRAME_STRUCTURE), EFI_ACPI_RESERVED_WORD, \\r
+    GicMsiFrameId, PhysicalBaseAddress, Flags, SPICount, SPIBase \\r
+  }\r
+\r
 //\r
 // SBSA Generic Watchdog\r
 //\r
     ControlFramePhysicalAddress, WatchdogTimerGSIV, WatchdogTimerFlags)                                 \\r
   {                                                                                                     \\r
     EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG, sizeof(EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE), \\r
-    EFI_ACPI_RESERVED_WORD, RefreshFramePhysicalAddress, ControlFramePhysicalAddress,                   \\r
+    EFI_ACPI_RESERVED_BYTE, RefreshFramePhysicalAddress, ControlFramePhysicalAddress,                   \\r
     WatchdogTimerGSIV, WatchdogTimerFlags                                                               \\r
   }\r
 \r
+typedef\r
+BOOLEAN\r
+(EFIAPI *EFI_LOCATE_ACPI_CHECK) (\r
+  IN  EFI_ACPI_DESCRIPTION_HEADER *AcpiHeader\r
+  );\r
+\r
+/**\r
+  Locate and Install the ACPI tables from the Firmware Volume if it verifies\r
+  the function condition.\r
+\r
+  @param  AcpiFile                Guid of the ACPI file into the Firmware Volume\r
+  @param  CheckAcpiTableFunction  Function that checks if the ACPI table should be installed\r
+\r
+  @return EFI_SUCCESS             The function completed successfully.\r
+  @return EFI_NOT_FOUND           The protocol could not be located.\r
+  @return EFI_OUT_OF_RESOURCES    There are not enough resources to find the protocol.\r
+\r
+**/\r
+EFI_STATUS\r
+LocateAndInstallAcpiFromFvConditional (\r
+  IN CONST EFI_GUID*        AcpiFile,\r
+  IN EFI_LOCATE_ACPI_CHECK  CheckAcpiTableFunction\r
+  );\r
+\r
 /**\r
   Locate and Install the ACPI tables from the Firmware Volume\r
 \r