From: Wasim Khan <wasim.k...@nxp.com>

LX2160A SoC has 6 PCIe controllers with 32GB space available
for each controller. A platform may have different PCIe controllers
enabled based on the RCW used to boot platform.
Add space for all PCIe controllers in VirtualMemoryMap.

Signed-off-by: Wasim Khan <wasim.k...@nxp.com>
---
 Platform/NXP/LX2160aRdbPkg/Library/ArmPlatformLib/ArmPlatformLib.inf  |  2 ++
 Silicon/NXP/LX2160A/Include/Soc.h                                     |  3 +++
 Platform/NXP/LX2160aRdbPkg/Library/ArmPlatformLib/ArmPlatformLibMem.c | 11 
++++++++++-
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git 
a/Platform/NXP/LX2160aRdbPkg/Library/ArmPlatformLib/ArmPlatformLib.inf 
b/Platform/NXP/LX2160aRdbPkg/Library/ArmPlatformLib/ArmPlatformLib.inf
index e1ab682c1976..d98a2539410f 100644
--- a/Platform/NXP/LX2160aRdbPkg/Library/ArmPlatformLib/ArmPlatformLib.inf
+++ b/Platform/NXP/LX2160aRdbPkg/Library/ArmPlatformLib/ArmPlatformLib.inf
@@ -37,6 +37,8 @@ [Sources.AArch64]
 [FixedPcd]
   gArmTokenSpaceGuid.PcdArmPrimaryCore
   gArmTokenSpaceGuid.PcdArmPrimaryCoreMask
+  gNxpQoriqLsTokenSpaceGuid.PcdNumPciController
+  gNxpQoriqLsTokenSpaceGuid.PcdPciExp1BaseAddr
 
 [Ppis]
   gArmMpCoreInfoPpiGuid
diff --git a/Silicon/NXP/LX2160A/Include/Soc.h 
b/Silicon/NXP/LX2160A/Include/Soc.h
index 6c745d580a6d..d62b8adcdbe7 100644
--- a/Silicon/NXP/LX2160A/Include/Soc.h
+++ b/Silicon/NXP/LX2160A/Include/Soc.h
@@ -26,6 +26,9 @@
 #define LX2160A_FSPI0_PHYS_ADDRESS   (BASE_512MB)
 #define LX2160A_FSPI0_SIZE           (SIZE_256MB)
 
+#define LX2160A_PCI1_PHYS_ADDRESS    FixedPcdGet64 (PcdPciExp1BaseAddr)
+#define LX2160A_PCI_SIZE             SIZE_32GB
+
 #define LX2160A_DCFG_ADDRESS         NXP_LAYERSCAPE_CHASSIS3V2_DCFG_ADDRESS
 
 // SVR
diff --git 
a/Platform/NXP/LX2160aRdbPkg/Library/ArmPlatformLib/ArmPlatformLibMem.c 
b/Platform/NXP/LX2160aRdbPkg/Library/ArmPlatformLib/ArmPlatformLibMem.c
index 391dab265ad7..98a6b2fc4ed4 100644
--- a/Platform/NXP/LX2160aRdbPkg/Library/ArmPlatformLib/ArmPlatformLibMem.c
+++ b/Platform/NXP/LX2160aRdbPkg/Library/ArmPlatformLib/ArmPlatformLibMem.c
@@ -12,7 +12,7 @@
 #include <Library/MemoryAllocationLib.h>
 #include <Soc.h>
 
-#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS          6
+#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS          (6 + FixedPcdGet32 
(PcdNumPciController))
 
 /**
   Return the Virtual Memory Map of your platform
@@ -30,6 +30,7 @@ ArmPlatformGetVirtualMemoryMap (
   )
 {
   UINTN                            Index;
+  UINT32                           I;
   ARM_MEMORY_REGION_DESCRIPTOR     *VirtualMemoryTable;
 
   Index = 0;
@@ -71,6 +72,14 @@ ArmPlatformGetVirtualMemoryMap (
   VirtualMemoryTable[Index].Length       = LX2160A_FSPI0_SIZE;
   VirtualMemoryTable[Index++].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE;
 
+  // PCIe Space
+  for (I = 0; I < FixedPcdGet32 (PcdNumPciController); I++) {
+    VirtualMemoryTable[Index].PhysicalBase = LX2160A_PCI1_PHYS_ADDRESS + I * 
LX2160A_PCI_SIZE;
+    VirtualMemoryTable[Index].VirtualBase  = LX2160A_PCI1_PHYS_ADDRESS + I * 
LX2160A_PCI_SIZE;
+    VirtualMemoryTable[Index].Length       = LX2160A_PCI_SIZE;
+    VirtualMemoryTable[Index++].Attributes   = 
ARM_MEMORY_REGION_ATTRIBUTE_DEVICE;
+  }
+
   // End of Table
   ZeroMem (&VirtualMemoryTable[Index], sizeof (ARM_MEMORY_REGION_DESCRIPTOR));
 
-- 
2.7.4


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#61789): https://edk2.groups.io/g/devel/message/61789
Mute This Topic: https://groups.io/mt/75189879/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to