summaryrefslogtreecommitdiff
path: root/Platform/ARM
diff options
context:
space:
mode:
authorAmrathesh <amrathesh@arm.com>2026-10-05 17:50:39 +0300
committerSami Mujawar <sami.mujawar@arm.com>2026-10-09 15:37:52 +0300
commit013fca79e55c7ac4f3d0eaf23799a9a73ed43dba (patch)
treeca830331eef39a3f9f3b14cdd19fad4038fb2b32 /Platform/ARM
parentb39a3d1b666d3e708ba1a42335a9e1657ab6d894 (diff)
downloadedk2-platforms-master.tar.xz
Platform/ARM/VExpressPkg: Move PL050 devices to Configuration managerHEADmaster
Describe the PL050 keyboard and mouse interfaces in the Configuration Manager and request the PL050 SSDT generator. Remove the equivalent static DSDT devices and select GICv5 SPI identifiers when GICv5 is enabled. Signed-off-by: Amrathesh <amrathesh@arm.com>
Diffstat (limited to 'Platform/ARM')
-rw-r--r--Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl24
-rw-r--r--Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtGicV5.asl26
-rw-r--r--Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c42
-rw-r--r--Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.h13
-rw-r--r--Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/Platform.h11
5 files changed, 62 insertions, 54 deletions
diff --git a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl
index 9682a76705..e3129f46bb 100644
--- a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl
+++ b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl
@@ -68,29 +68,5 @@ DefinitionBlock("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARM-VEXP", 1) {
})
}
- //
- // Keyboard and Mouse
- //
- Device(KMI0) {
- Name(_HID,"ARMH0501")
- Name(_CID,"PL050_KBD")
- Name(_CRS,ResourceTemplate() {
- Memory32Fixed(ReadWrite,0x1C060008,0x4)
- Memory32Fixed(ReadWrite,0x1C060000,0x4)
- Memory32Fixed(ReadOnly, 0x1C060004,0x4)
- Interrupt(ResourceConsumer,Level,ActiveHigh,Exclusive) {44}
- })
- }
-
- Device(KMI1) {
- Name(_HID,"ARMH0502")
- Name(_CID,"PL050_MOUSE")
- Name(_CRS,ResourceTemplate() {
- Memory32Fixed(ReadWrite,0x1C070008,0x4)
- Memory32Fixed(ReadWrite,0x1C070000,0x4)
- Memory32Fixed(ReadOnly, 0x1C070004,0x4)
- Interrupt(ResourceConsumer,Level,ActiveHigh,Exclusive) {45}
- })
- }
} // Scope(_SB)
}
diff --git a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtGicV5.asl b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtGicV5.asl
index 0706030fe5..26bae5961c 100644
--- a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtGicV5.asl
+++ b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtGicV5.asl
@@ -1,7 +1,7 @@
/** @file
Differentiated System Description Table Fields (DSDT)
- Copyright (c) 2014-2025, ARM Ltd. All rights reserved.<BR>
+ Copyright (c) 2014-2026, ARM Ltd. All rights reserved.<BR>
Copyright (c) 2013, Al Stone <al.stone@linaro.org>
All rights reserved.
@@ -69,29 +69,5 @@ DefinitionBlock("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARM-VEXP", 1) {
})
}
- //
- // Keyboard and Mouse
- //
- Device(KMI0) {
- Name(_HID,"ARMH0501")
- Name(_CID,"PL050_KBD")
- Name(_CRS,ResourceTemplate() {
- Memory32Fixed(ReadWrite,0x1C060008,0x4)
- Memory32Fixed(ReadWrite,0x1C060000,0x4)
- Memory32Fixed(ReadOnly, 0x1C060004,0x4)
- Interrupt(ResourceConsumer,Level,ActiveHigh,Exclusive) {0x6000000C}
- })
- }
-
- Device(KMI1) {
- Name(_HID,"ARMH0502")
- Name(_CID,"PL050_MOUSE")
- Name(_CRS,ResourceTemplate() {
- Memory32Fixed(ReadWrite,0x1C070008,0x4)
- Memory32Fixed(ReadWrite,0x1C070000,0x4)
- Memory32Fixed(ReadOnly, 0x1C070004,0x4)
- Interrupt(ResourceConsumer,Level,ActiveHigh,Exclusive) {0x6000000D}
- })
- }
} // Scope(_SB)
}
diff --git a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
index dec08aac22..de981ad65e 100644
--- a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
+++ b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
@@ -1,7 +1,7 @@
/** @file
Configuration Manager Dxe
- Copyright (c) 2017 - 2025, Arm Limited. All rights reserved.<BR>
+ Copyright (c) 2017 - 2026, Arm Limited. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -107,6 +107,13 @@ EDKII_PLATFORM_REPOSITORY_INFO VExpressPlatRepositoryInfo = {
CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdSsdtCpuTopology),
NULL
},
+ // SSDT PL050 Keyboard/Mouse Table
+ {
+ EFI_ACPI_6_3_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
+ 0, // Unused
+ CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdSsdtPl050),
+ NULL
+ },
// PPTT Table
{
EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE,
@@ -185,6 +192,26 @@ EDKII_PLATFORM_REPOSITORY_INFO VExpressPlatRepositoryInfo = {
// Power management profile information
{ EFI_ACPI_6_5_PM_PROFILE_ENTERPRISE_SERVER }, // PowerManagement Profile
+ // PL050 keyboard/mouse interfaces.
+ {
+ {
+ FALSE, // IsMouse
+ FVP_PL050_KEYBOARD_BASE_ADDRESS, // BaseAddress
+ {
+ FVP_PL050_KEYBOARD_IRQ, // Interrupt
+ BIT0 // ResourceConsumer, Level, ActiveHigh, Exclusive
+ }
+ },
+ {
+ TRUE, // IsMouse
+ FVP_PL050_MOUSE_BASE_ADDRESS, // BaseAddress
+ {
+ FVP_PL050_MOUSE_IRQ, // Interrupt
+ BIT0 // ResourceConsumer, Level, ActiveHigh, Exclusive
+ }
+ }
+ },
+
/* GIC CPU Interface information
GIC_ENTRY (CPUInterfaceNumber, Mpidr, PmuIrq, VGicIrq, EnergyEfficiency)
Note: The MPIDR is fixed up in InitializePlatformRepository() if the
@@ -1838,6 +1865,9 @@ InitializePlatformRepository (
PlatformRepo->DbgSerialPort.Interrupt = FVP_GICV5_DBG_IRQ;
+ PlatformRepo->Pl050Info[0].Interrupt.Interrupt = FVP_GICV5_PL050_KEYBOARD_IRQ;
+ PlatformRepo->Pl050Info[1].Interrupt.Interrupt = FVP_GICV5_PL050_MOUSE_IRQ;
+
PlatformRepo->SmmuV3Info.IdMappingCount = 2;
PlatformRepo->SmmuV3Info.Flags |= EFI_ACPI_IORT_SMMUv3_FLAG_DEVICEID_VALID;
PlatformRepo->SmmuV3Info.DeviceIdMappingIndex = 1; // DeviceIdMapping[1]
@@ -2687,6 +2717,16 @@ GetArmNameSpaceObject (
);
break;
+ case EArmObjPl050Info:
+ Status = HandleCmObject (
+ CmObjectId,
+ PlatformRepo->Pl050Info,
+ sizeof (PlatformRepo->Pl050Info),
+ ARRAY_SIZE (PlatformRepo->Pl050Info),
+ CmObject
+ );
+ break;
+
case EArmObjGenericTimerInfo:
Status = HandleCmObject (
CmObjectId,
diff --git a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.h b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.h
index cb2c96d205..3ca9d5cc3e 100644
--- a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.h
+++ b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.h
@@ -1,6 +1,6 @@
/** @file
- Copyright (c) 2017 - 2025, Arm Limited. All rights reserved.<BR>
+ Copyright (c) 2017 - 2026, Arm Limited. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -137,9 +137,9 @@ typedef EFI_STATUS (*CM_OBJECT_HANDLER_PROC) (
/** The number of ACPI tables to install
*/
#ifdef ENABLE_TPM
-#define PLAT_ACPI_TABLE_COUNT 13
+#define PLAT_ACPI_TABLE_COUNT 14
#else
-#define PLAT_ACPI_TABLE_COUNT 12
+#define PLAT_ACPI_TABLE_COUNT 13
#endif
#ifdef ENABLE_TPM
@@ -148,6 +148,10 @@ typedef EFI_STATUS (*CM_OBJECT_HANDLER_PROC) (
#define PLAT_SMBIOS_TABLE_COUNT 2
#endif
+/** The number of PL050 keyboard/mouse interfaces.
+*/
+#define PLAT_PL050_COUNT 2
+
/** The number of platform generic timer blocks
*/
#define PLAT_GTBLOCK_COUNT 1
@@ -245,6 +249,9 @@ typedef struct PlatformRepositoryInfo {
/// Power management profile information
CM_ARCH_COMMON_POWER_MANAGEMENT_PROFILE_INFO PmProfileInfo;
+ /// PL050 keyboard/mouse interface information
+ CM_ARM_PL050_INFO Pl050Info[PLAT_PL050_COUNT];
+
/// GIC CPU interface information
CM_ARM_GICC_INFO GicCInfo[PLAT_CPU_COUNT];
diff --git a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/Platform.h b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/Platform.h
index 320f6b421c..a91d837547 100644
--- a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/Platform.h
+++ b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/Platform.h
@@ -1,6 +1,6 @@
/** @file
- Copyright (c) 2017 - 2019, ARM Limited. All rights reserved.
+ Copyright (c) 2017 - 2026, ARM Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -97,6 +97,12 @@
SBSA_WATCHDOG_ACTIVE_HIGH | \
SBSA_WATCHDOG_LEVEL_TRIGGERED)
+// PL050 keyboard and mouse interfaces
+#define FVP_PL050_KEYBOARD_BASE_ADDRESS 0x1C060000
+#define FVP_PL050_MOUSE_BASE_ADDRESS 0x1C070000
+#define FVP_PL050_KEYBOARD_IRQ 44
+#define FVP_PL050_MOUSE_IRQ 45
+
// GICv5
#define FVP_GICV5_INTERRUPT_TYPE_SHIFT (29)
#define FVP_GICV5_INTERRUPT_TYPE_PPI (1 << FVP_GICV5_INTERRUPT_TYPE_SHIFT)
@@ -125,6 +131,9 @@
#define FVP_GICV5_SPCR_IRQ (FVP_GICV5_INTERRUPT_TYPE_SPI | 0x05)
#define FVP_GICV5_DBG_IRQ (FVP_GICV5_INTERRUPT_TYPE_SPI | 0x06)
+#define FVP_GICV5_PL050_KEYBOARD_IRQ (FVP_GICV5_INTERRUPT_TYPE_SPI | 0x0c)
+#define FVP_GICV5_PL050_MOUSE_IRQ (FVP_GICV5_INTERRUPT_TYPE_SPI | 0x0d)
+
#define FVP_GICV5_SMMU3_EVENT_IRQ (FVP_GICV5_INTERRUPT_TYPE_SPI | 0x4a)
#define FVP_GICV5_SMMU3_PRI_IRQ (FVP_GICV5_INTERRUPT_TYPE_SPI | 0x4b)
#define FVP_GICV5_SMMU3_GERR_IRQ (FVP_GICV5_INTERRUPT_TYPE_SPI | 0x4f)