summaryrefslogtreecommitdiff
path: root/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c')
-rw-r--r--ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c44
1 files changed, 40 insertions, 4 deletions
diff --git a/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c b/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c
index 386cf08e32..629d03a9ba 100644
--- a/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c
+++ b/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c
@@ -78,6 +78,8 @@ STATIC CONST EFI_PCI_ROOT_BRIDGE_DEVICE_PATH mPciRootComplexDevicePath = {
}
};
+EFI_EVENT mAcpiRegistration = NULL;
+
/**
* Build and Set UEFI Variable Boot####
*
@@ -187,6 +189,24 @@ OnEndOfDxe (
ASSERT_EFI_ERROR (Status);
}
+STATIC
+BOOLEAN
+AcpiTableJunoR0Check (
+ IN EFI_ACPI_DESCRIPTION_HEADER *AcpiHeader
+ )
+{
+ return TRUE;
+}
+
+STATIC
+BOOLEAN
+AcpiTableJunoR1Check (
+ IN EFI_ACPI_DESCRIPTION_HEADER *AcpiHeader
+ )
+{
+ return TRUE;
+}
+
EFI_STATUS
EFIAPI
ArmJunoEntryPoint (
@@ -297,9 +317,19 @@ ArmJunoEntryPoint (
}
//
- // Set the R1 two boot options if not already done.
+ // Try to install the ACPI Tables
//
+ if (JunoRevision == JUNO_R0) {
+ Status = LocateAndInstallAcpiFromFvConditional (&mJunoAcpiTableFile, AcpiTableJunoR0Check);
+ } else if (JunoRevision == JUNO_R1) {
+ Status = LocateAndInstallAcpiFromFvConditional (&mJunoAcpiTableFile, AcpiTableJunoR1Check);
+ }
+ ASSERT_EFI_ERROR (Status);
+
+ //
+ // Set the R1 two boot options if not already done.
+ //
if (JunoRevision == JUNO_R1) {
Status = SetJunoR1DefaultBootEntries ();
if (EFI_ERROR (Status)) {
@@ -308,6 +338,15 @@ ArmJunoEntryPoint (
// Enable PCI enumeration
PcdSetBool (PcdPciDisableBusEnumeration, FALSE);
+
+ // Declare the related ACPI Tables
+ EfiCreateProtocolNotifyEvent (
+ &gEfiAcpiTableProtocolGuid,
+ TPL_CALLBACK,
+ AcpiPciNotificationEvent,
+ NULL,
+ &mAcpiRegistration
+ );
}
//
@@ -342,9 +381,6 @@ ArmJunoEntryPoint (
return Status;
}
- // Try to install the ACPI Tables
- Status = LocateAndInstallAcpiFromFv (&mJunoAcpiTableFile);
-
return Status;
}