From: Wasim Khan <wasim.khan@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.khan@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/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-