summaryrefslogtreecommitdiff
path: root/Platform
diff options
context:
space:
mode:
authorPete Batard <pete@akeo.ie>2020-03-26 11:53:19 +0000
committerArd Biesheuvel <ard.biesheuvel@linaro.org>2020-03-26 13:34:45 +0100
commit8e97b8f68d3309989115f48efc851db97f05070f (patch)
tree5ce9e005723918b99cbfd5b8698d7dd03ecdf088 /Platform
parentc358e37f94b73a617e8784a5cb51471f5f5c4535 (diff)
Platform/RPi/AcpiTables: Use PCDs in MADT
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 <pete@akeo.ie> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Diffstat (limited to 'Platform')
-rw-r--r--Platform/RaspberryPi/AcpiTables/AcpiTables.inf8
-rw-r--r--Platform/RaspberryPi/AcpiTables/Madt.aslc31
-rw-r--r--Platform/RaspberryPi/RPi3/RPi3.dsc9
-rw-r--r--Platform/RaspberryPi/RPi4/RPi4.dsc7
-rw-r--r--Platform/RaspberryPi/RaspberryPi.dec7
5 files changed, 43 insertions, 19 deletions
diff --git a/Platform/RaspberryPi/AcpiTables/AcpiTables.inf b/Platform/RaspberryPi/AcpiTables/AcpiTables.inf
index 9ad5246d..6642541d 100644
--- a/Platform/RaspberryPi/AcpiTables/AcpiTables.inf
+++ b/Platform/RaspberryPi/AcpiTables/AcpiTables.inf
@@ -39,6 +39,7 @@
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 @@
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 4029cd19..faf46181 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 7fb9a41f..1651def8 100644
--- a/Platform/RaspberryPi/RPi3/RPi3.dsc
+++ b/Platform/RaspberryPi/RPi3/RPi3.dsc
@@ -403,6 +403,15 @@
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 1abb0104..4fe4d810 100644
--- a/Platform/RaspberryPi/RPi4/RPi4.dsc
+++ b/Platform/RaspberryPi/RPi4/RPi4.dsc
@@ -431,6 +431,13 @@
#
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 dc37541f..d59b5481 100644
--- a/Platform/RaspberryPi/RaspberryPi.dec
+++ b/Platform/RaspberryPi/RaspberryPi.dec
@@ -47,6 +47,13 @@
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