]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmVirtPkg/FdtClientDxe/FdtClientDxe.c
ArmVirtPkg/VirtFdtDxe: move FDT config table installation to FdtClientDxe
[mirror_edk2.git] / ArmVirtPkg / FdtClientDxe / FdtClientDxe.c
index 9c589e620cb40c7d542a85d4b8e26c05d9db2d7a..c336e2410033e2832db06fa98d2517a4948edc10 100644 (file)
@@ -20,6 +20,7 @@
 #include <Library/HobLib.h>\r
 #include <libfdt.h>\r
 \r
+#include <Guid/Fdt.h>\r
 #include <Guid/FdtHob.h>\r
 \r
 #include <Protocol/FdtClient.h>\r
@@ -234,6 +235,7 @@ InitializeFdtClientDxe (
 {\r
   VOID              *Hob;\r
   VOID              *DeviceTreeBase;\r
+  EFI_STATUS        Status;\r
 \r
   Hob = GetFirstGuidHob (&gFdtHobGuid);\r
   if (Hob == NULL || GET_GUID_HOB_DATA_SIZE (Hob) != sizeof (UINT64)) {\r
@@ -251,6 +253,15 @@ InitializeFdtClientDxe (
 \r
   DEBUG ((EFI_D_INFO, "%a: DTB @ 0x%p\n", __FUNCTION__, mDeviceTreeBase));\r
 \r
+  if (!FeaturePcdGet (PcdPureAcpiBoot)) {\r
+    //\r
+    // Only install the FDT as a configuration table if we want to leave it up\r
+    // to the OS to decide whether it prefers ACPI over DT.\r
+    //\r
+    Status = gBS->InstallConfigurationTable (&gFdtTableGuid, DeviceTreeBase);\r
+    ASSERT_EFI_ERROR (Status);\r
+  }\r
+\r
   return gBS->InstallProtocolInterface (&ImageHandle, &gFdtClientProtocolGuid,\r
                 EFI_NATIVE_INTERFACE, &mFdtClientProtocol);\r
 }\r