summaryrefslogtreecommitdiff
path: root/Platform/ARM
diff options
context:
space:
mode:
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)