]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe.c
ArmPlatformPkg: Enable support for flash in 64-bit address space
[mirror_edk2.git] / ArmPlatformPkg / Drivers / NorFlashDxe / NorFlashDxe.c
index 41cdd1cbd397695b47d27f4a4dcdd75a5f37f5c8..28dc8e125c78786a9c92f1137370304f6be69592 100644 (file)
@@ -1,6 +1,6 @@
 /** @file  NorFlashDxe.c\r
 \r
-  Copyright (c) 2011 - 2020, Arm Limited. All rights reserved.<BR>\r
+  Copyright (c) 2011 - 2021, Arm Limited. All rights reserved.<BR>\r
 \r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
@@ -343,9 +343,18 @@ NorFlashInitialise (
 \r
   for (Index = 0; Index < mNorFlashDeviceCount; Index++) {\r
     // Check if this NOR Flash device contain the variable storage region\r
-    ContainVariableStorage =\r
-        (NorFlashDevices[Index].RegionBaseAddress <= PcdGet32 (PcdFlashNvStorageVariableBase)) &&\r
-        (PcdGet32 (PcdFlashNvStorageVariableBase) + PcdGet32 (PcdFlashNvStorageVariableSize) <= NorFlashDevices[Index].RegionBaseAddress + NorFlashDevices[Index].Size);\r
+\r
+   if (PcdGet64 (PcdFlashNvStorageVariableBase64) != 0) {\r
+     ContainVariableStorage =\r
+       (NorFlashDevices[Index].RegionBaseAddress <= PcdGet64 (PcdFlashNvStorageVariableBase64)) &&\r
+       (PcdGet64 (PcdFlashNvStorageVariableBase64) + PcdGet32 (PcdFlashNvStorageVariableSize) <=\r
+        NorFlashDevices[Index].RegionBaseAddress + NorFlashDevices[Index].Size);\r
+   } else {\r
+     ContainVariableStorage =\r
+       (NorFlashDevices[Index].RegionBaseAddress <= PcdGet32 (PcdFlashNvStorageVariableBase)) &&\r
+       (PcdGet32 (PcdFlashNvStorageVariableBase) + PcdGet32 (PcdFlashNvStorageVariableSize) <=\r
+        NorFlashDevices[Index].RegionBaseAddress + NorFlashDevices[Index].Size);\r
+  }\r
 \r
     Status = NorFlashCreateInstance (\r
       NorFlashDevices[Index].DeviceBaseAddress,\r
@@ -413,10 +422,11 @@ NorFlashFvbInitialize (
       EFI_MEMORY_UC | EFI_MEMORY_RUNTIME);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  mFlashNvStorageVariableBase = PcdGet32 (PcdFlashNvStorageVariableBase);\r
+  mFlashNvStorageVariableBase = (FixedPcdGet64 (PcdFlashNvStorageVariableBase64) != 0) ?\r
+    FixedPcdGet64 (PcdFlashNvStorageVariableBase64) : FixedPcdGet32 (PcdFlashNvStorageVariableBase);\r
 \r
   // Set the index of the first LBA for the FVB\r
-  Instance->StartLba = (PcdGet32 (PcdFlashNvStorageVariableBase) - Instance->RegionBaseAddress) / Instance->Media.BlockSize;\r
+  Instance->StartLba = (mFlashNvStorageVariableBase - Instance->RegionBaseAddress) / Instance->Media.BlockSize;\r
 \r
   BootMode = GetBootModeHob ();\r
   if (BootMode == BOOT_WITH_DEFAULT_SETTINGS) {\r