Instead of going through a model #ifdef, the call to
EFI_ACPI_5_1_GICC_STRUCTURE_INIT () is factorized by
setting up a new set of PCDs.

Signed-off-by: Pete Batard <p...@akeo.ie>
---
 Platform/RaspberryPi/AcpiTables/AcpiTables.inf |  8 +++++
 Platform/RaspberryPi/AcpiTables/Madt.aslc      | 31 ++++++++------------
 Platform/RaspberryPi/RPi3/RPi3.dsc             |  9 ++++++
 Platform/RaspberryPi/RPi4/RPi4.dsc             |  7 +++++
 Platform/RaspberryPi/RaspberryPi.dec           |  7 +++++
 5 files changed, 43 insertions(+), 19 deletions(-)

diff --git a/Platform/RaspberryPi/AcpiTables/AcpiTables.inf 
b/Platform/RaspberryPi/AcpiTables/AcpiTables.inf
index 9ad5246d6bb6..6642541d6a0a 100644
--- a/Platform/RaspberryPi/AcpiTables/AcpiTables.inf
+++ b/Platform/RaspberryPi/AcpiTables/AcpiTables.inf
@@ -39,6 +39,7 @@ [Packages]
   EmbeddedPkg/EmbeddedPkg.dec
   MdeModulePkg/MdeModulePkg.dec
   MdePkg/MdePkg.dec
+  Platform/RaspberryPi/RaspberryPi.dec
   Silicon/Broadcom/Bcm27xx/Bcm27xx.dec
   Silicon/Broadcom/Bcm283x/Bcm283x.dec
   Silicon/Broadcom/Drivers/Net/BcmNet.dec
@@ -56,6 +57,13 @@ [FixedPcd]
   gBcmNetTokenSpaceGuid.PcdBcmGenetRegistersAddress
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
   gEmbeddedTokenSpaceGuid.PcdInterruptBaseAddress
+  gRaspberryPiTokenSpaceGuid.PcdGicInterruptInterfaceHBase
+  gRaspberryPiTokenSpaceGuid.PcdGicInterruptInterfaceVBase
+  gRaspberryPiTokenSpaceGuid.PcdGicGsivId
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq0
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq1
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq2
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq3
 
 [BuildOptions]
   GCC:*_*_*_ASL_FLAGS       = -vw3133 -vw3150
diff --git a/Platform/RaspberryPi/AcpiTables/Madt.aslc 
b/Platform/RaspberryPi/AcpiTables/Madt.aslc
index 4029cd191ab5..faf461814536 100644
--- a/Platform/RaspberryPi/AcpiTables/Madt.aslc
+++ b/Platform/RaspberryPi/AcpiTables/Madt.aslc
@@ -44,29 +44,22 @@ PI_MULTIPLE_APIC_DESCRIPTION_TABLE Madt = {
     0, // Flags
   },
   {
-#if (RPI_MODEL == 3)
     EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
-        0, 0, GET_MPID(0, 0), EFI_ACPI_5_1_GIC_ENABLED, 0x09, 0x40000000, 0, 
0, 0, 0),
+      0, 0, GET_MPID(0, 0), EFI_ACPI_5_1_GIC_ENABLED, FixedPcdGet32 
(PcdGicPmuIrq0),
+      FixedPcdGet64 (PcdGicInterruptInterfaceBase), FixedPcdGet64 
(PcdGicInterruptInterfaceVBase),
+      FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 
(PcdGicGsivId), 0),
     EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
-        1, 1, GET_MPID(0, 1), EFI_ACPI_5_1_GIC_ENABLED, 0x09, 0x40000000, 0, 
0, 0, 0),
+      1, 1, GET_MPID(0, 1), EFI_ACPI_5_1_GIC_ENABLED, FixedPcdGet32 
(PcdGicPmuIrq1),
+      FixedPcdGet64 (PcdGicInterruptInterfaceBase), FixedPcdGet64 
(PcdGicInterruptInterfaceVBase),
+      FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 
(PcdGicGsivId), 0),
     EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
-        2, 2, GET_MPID(0, 2), EFI_ACPI_5_1_GIC_ENABLED, 0x09, 0x40000000, 0, 
0, 0, 0),
+      2, 2, GET_MPID(0, 2), EFI_ACPI_5_1_GIC_ENABLED, FixedPcdGet32 
(PcdGicPmuIrq2),
+      FixedPcdGet64 (PcdGicInterruptInterfaceBase), FixedPcdGet64 
(PcdGicInterruptInterfaceVBase),
+      FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 
(PcdGicGsivId), 0),
     EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
-        3, 3, GET_MPID(0, 3), EFI_ACPI_5_1_GIC_ENABLED, 0x09, 0x40000000, 0, 
0, 0, 0),
-#elif (RPI_MODEL == 4)
-    EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
-        0, 0, GET_MPID(0, 0), EFI_ACPI_5_1_GIC_ENABLED, 48, FixedPcdGet64 
(PcdGicInterruptInterfaceBase),
-        0xFF846000, 0xFF844000, 0x19, 0),
-    EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
-        1, 1, GET_MPID(0, 1), EFI_ACPI_5_1_GIC_ENABLED, 49, FixedPcdGet64 
(PcdGicInterruptInterfaceBase),
-        0xFF846000, 0xFF844000, 0x19, 0),
-    EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
-        2, 2, GET_MPID(0, 2), EFI_ACPI_5_1_GIC_ENABLED, 50, FixedPcdGet64 
(PcdGicInterruptInterfaceBase),
-        0xFF846000, 0xFF844000, 0x19, 0),
-    EFI_ACPI_5_1_GICC_STRUCTURE_INIT(
-        3, 3, GET_MPID(0, 3), EFI_ACPI_5_1_GIC_ENABLED, 51, FixedPcdGet64 
(PcdGicInterruptInterfaceBase),
-        0xFF846000, 0xFF844000, 0x19, 0),
-#endif
+      3, 3, GET_MPID(0, 3), EFI_ACPI_5_1_GIC_ENABLED, FixedPcdGet32 
(PcdGicPmuIrq3),
+      FixedPcdGet64 (PcdGicInterruptInterfaceBase), FixedPcdGet64 
(PcdGicInterruptInterfaceVBase),
+      FixedPcdGet64 (PcdGicInterruptInterfaceHBase), FixedPcdGet32 
(PcdGicGsivId), 0),
   },
 #if (RPI_MODEL != 3)
   EFI_ACPI_5_0_GIC_DISTRIBUTOR_INIT(0, FixedPcdGet64 (PcdGicDistributorBase), 
0)
diff --git a/Platform/RaspberryPi/RPi3/RPi3.dsc 
b/Platform/RaspberryPi/RPi3/RPi3.dsc
index 7fb9a41f3d9a..1651def87ce1 100644
--- a/Platform/RaspberryPi/RPi3/RPi3.dsc
+++ b/Platform/RaspberryPi/RPi3/RPi3.dsc
@@ -403,6 +403,15 @@ [PcdsFixedAtBuild.common]
   gRaspberryPiTokenSpaceGuid.PcdCpuDefSpeedMHz|1200
   gRaspberryPiTokenSpaceGuid.PcdCpuMaxSpeedMHz|1500
 
+  #
+  # ARM General Interrupt Controller
+  #
+  gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0x40000000
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq0|0x09
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq1|0x09
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq2|0x09
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq3|0x09
+
   ## Default Terminal Type
   ## 0-PCANSI, 1-VT100, 2-VT00+, 3-UTF8, 4-TTYTERM
   gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|4
diff --git a/Platform/RaspberryPi/RPi4/RPi4.dsc 
b/Platform/RaspberryPi/RPi4/RPi4.dsc
index 1abb010469f5..4fe4d810a0bc 100644
--- a/Platform/RaspberryPi/RPi4/RPi4.dsc
+++ b/Platform/RaspberryPi/RPi4/RPi4.dsc
@@ -431,6 +431,13 @@ [PcdsFixedAtBuild.common]
   #
   gArmTokenSpaceGuid.PcdGicDistributorBase|0xFF841000
   gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase|0xFF842000
+  gRaspberryPiTokenSpaceGuid.PcdGicInterruptInterfaceHBase|0xFF844000
+  gRaspberryPiTokenSpaceGuid.PcdGicInterruptInterfaceVBase|0xFF846000
+  gRaspberryPiTokenSpaceGuid.PcdGicGsivId|0x19
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq0|0x30
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq1|0x31
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq2|0x32
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq3|0x33
 
   #
   # Fixed CPU settings.
diff --git a/Platform/RaspberryPi/RaspberryPi.dec 
b/Platform/RaspberryPi/RaspberryPi.dec
index dc37541f3732..d59b548185e3 100644
--- a/Platform/RaspberryPi/RaspberryPi.dec
+++ b/Platform/RaspberryPi/RaspberryPi.dec
@@ -47,6 +47,13 @@ [PcdsFixedAtBuild.common]
   gRaspberryPiTokenSpaceGuid.PcdCpuLowSpeedMHz|600|UINT32|0x0000000a
   gRaspberryPiTokenSpaceGuid.PcdCpuDefSpeedMHz|800|UINT32|0x0000000b
   gRaspberryPiTokenSpaceGuid.PcdCpuMaxSpeedMHz|1000|UINT32|0x0000000c
+  
gRaspberryPiTokenSpaceGuid.PcdGicInterruptInterfaceHBase|0x0|UINT64|0x00000030
+  
gRaspberryPiTokenSpaceGuid.PcdGicInterruptInterfaceVBase|0x0|UINT64|0x00000031
+  gRaspberryPiTokenSpaceGuid.PcdGicGsivId|0x0|UINT32|0x00000032
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq0|0x0|UINT32|0x00000033
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq1|0x0|UINT32|0x00000034
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq2|0x0|UINT32|0x00000035
+  gRaspberryPiTokenSpaceGuid.PcdGicPmuIrq3|0x0|UINT32|0x00000036
 
 [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
   gRaspberryPiTokenSpaceGuid.PcdCpuClock|0|UINT32|0x0000000d
-- 
2.21.0.windows.1


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

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

Reply via email to