diff options
Diffstat (limited to 'Platform/ARM')
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)
|
