summaryrefslogtreecommitdiff
path: root/Platform/ARM/VExpressPkg
diff options
context:
space:
mode:
Diffstat (limited to 'Platform/ARM/VExpressPkg')
-rw-r--r--Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc2
-rw-r--r--Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl11
-rw-r--r--Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtGicV5.asl11
-rw-r--r--Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c33
-rw-r--r--Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.h7
-rw-r--r--Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf1
-rw-r--r--Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/Platform.h5
7 files changed, 41 insertions, 29 deletions
diff --git a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc b/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc
index a5e430350e..1b6cab4644 100644
--- a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc
+++ b/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc
@@ -426,10 +426,8 @@
# use the TTY terminal type
gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType|4
-!ifdef EDK2_ENABLE_SMSC_91X
# Ethernet (SMSC 91C111)
gArmVExpressTokenSpaceGuid.PcdLan91xDxeBaseAddress|0x1A000000
-!endif
!if $(SECURE_BOOT_ENABLE) == TRUE
# override the default values from SecurityPkg to ensure images from all sources are verified in secure boot
diff --git a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl
index e3129f46bb..9efdcb95bd 100644
--- a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl
+++ b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/Dsdt.asl
@@ -35,17 +35,6 @@ DefinitionBlock("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARM-VEXP", 1) {
Return (Arg3)
}
- // SMC91X
- Device (NET0) {
- Name (_HID, "LNRO0003")
- Name (_UID, 0)
-
- Name (_CRS, ResourceTemplate () {
- Memory32Fixed (ReadWrite, 0x1a000000, 0x00010000)
- Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) {0x2F}
- })
- }
-
// VIRTIO block device
Device (VIRT) {
Name (_HID, "LNRO0005")
diff --git a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtGicV5.asl b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtGicV5.asl
index 26bae5961c..2921cbfeee 100644
--- a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtGicV5.asl
+++ b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/AslTables/DsdtGicV5.asl
@@ -36,17 +36,6 @@ DefinitionBlock("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARM-VEXP", 1) {
Return (Arg3)
}
- // SMC91X
- Device (NET0) {
- Name (_HID, "LNRO0003")
- Name (_UID, 0)
-
- Name (_CRS, ResourceTemplate () {
- Memory32Fixed (ReadWrite, 0x1a000000, 0x00010000)
- Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) {0x6000000F}
- })
- }
-
// VIRTIO block device
Device (VIRT) {
Name (_HID, "LNRO0005")
diff --git a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
index de981ad65e..03ab763b66 100644
--- a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
+++ b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
@@ -136,6 +136,13 @@ EDKII_PLATFORM_REPOSITORY_INFO VExpressPlatRepositoryInfo = {
NULL,
},
#endif
+ // SSDT table describing the SMC91X network device
+ {
+ EFI_ACPI_6_3_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
+ 0, // Unused
+ CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdSsdtSmc91x),
+ NULL
+ },
// Note: The last 3 tables in this list are for FVP RevC only.
// IORT Table - FVP RevC
{
@@ -339,6 +346,16 @@ EDKII_PLATFORM_REPOSITORY_INFO VExpressPlatRepositoryInfo = {
EFI_ACPI_6_3_DWORD, // Access size
},
+ // SMC91X network device
+ {
+ FixedPcdGet32 (PcdLan91xDxeBaseAddress),
+ FVP_SMC91X_SIZE,
+ {
+ FVP_SMC91X_IRQ,
+ 0 // Level, ActiveHigh
+ }
+ },
+
// GIC ITS
{
// The GIC ITS ID.
@@ -1788,8 +1805,8 @@ InitialiseProcStrings (
@param [in] This Pointer to the Configuration Manager Protocol.
- @retval
- EFI_SUCCESS Success
+ @retval EFI_SUCCESS The platform repository was initialized.
+ @return An error from platform information initialization.
**/
STATIC
EFI_STATUS
@@ -1846,6 +1863,8 @@ InitializePlatformRepository (
if (PlatformRepo->HasGicV5) {
// GICv5 uses different interrupts to previous GICs
+ PlatformRepo->Smc91xInfo.Interrupt.Interrupt = FVP_GICV5_SMC91X_IRQ;
+
for (Index = 0; Index < PLAT_CPU_COUNT; Index++) {
PlatformRepo->GicCInfo[Index].PerformanceInterruptGsiv = FVP_GICV5_PMU_IRQ;
PlatformRepo->GicCInfo[Index].VGICMaintenanceInterrupt = FVP_GICV5_VGIC_IRQ;
@@ -2522,6 +2541,16 @@ GetArchCommonNameSpaceObject (
);
break;
+ case EArchCommonObjSmc91xInfo:
+ Status = HandleCmObject (
+ CmObjectId,
+ &PlatformRepo->Smc91xInfo,
+ sizeof (PlatformRepo->Smc91xInfo),
+ 1,
+ CmObject
+ );
+ break;
+
#ifdef HEADLESS_PLATFORM
case EArchCommonObjFixedFeatureFlags:
Status = HandleCmObject (
diff --git a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.h b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.h
index 3ca9d5cc3e..71c30978f8 100644
--- a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.h
+++ b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.h
@@ -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 14
+#define PLAT_ACPI_TABLE_COUNT 15
#else
-#define PLAT_ACPI_TABLE_COUNT 13
+#define PLAT_ACPI_TABLE_COUNT 14
#endif
#ifdef ENABLE_TPM
@@ -281,6 +281,9 @@ typedef struct PlatformRepositoryInfo {
/// Serial port information for the DBG2 UART port
CM_ARCH_COMMON_SERIAL_PORT_INFO DbgSerialPort;
+ /// SMC91X network device information
+ CM_ARCH_COMMON_SMC91X_INFO Smc91xInfo;
+
/// GIC ITS information
CM_ARM_GIC_ITS_INFO GicItsInfo;
diff --git a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf
index e4fb44a4f8..2423bc47ed 100644
--- a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf
+++ b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf
@@ -92,6 +92,7 @@
gArmVExpressTokenSpaceGuid.PcdTpmSipSmcId
gArmVExpressTokenSpaceGuid.PcdTpmUseSipSmc
+ gArmVExpressTokenSpaceGuid.PcdLan91xDxeBaseAddress
[Pcd]
gArmTokenSpaceGuid.PcdGenericWatchdogEl2IntrNum
diff --git a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/Platform.h b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/Platform.h
index a91d837547..b6988de519 100644
--- a/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/Platform.h
+++ b/Platform/ARM/VExpressPkg/ConfigurationManager/ConfigurationManagerDxe/Platform.h
@@ -119,6 +119,10 @@
#define FVP_GICV5_IWB_CONF_FRAME_BASE (0x2f000000)
#define FVP_GICV5_IWB_GSIV_BASE (FVP_GICV5_GSI_TYPE_IWB)
+#define FVP_SMC91X_SIZE (0x00010000)
+#define FVP_SMC91X_IRQ (0x2F)
+#define FVP_GICV5_SMC91X_IRQ (FVP_GICV5_INTERRUPT_TYPE_SPI | 0x0F)
+
#define FVP_GICV5_PMU_IRQ (FVP_GICV5_INTERRUPT_TYPE_PPI | 0x17)
#define FVP_GICV5_VGIC_IRQ (FVP_GICV5_INTERRUPT_TYPE_PPI | 0x19)
@@ -150,4 +154,3 @@
#define FVP_GICV5_PCIE_IWB3_IRQ (FVP_GICV5_IWB_GSIV_BASE | 0xab)
#endif // PLATFORM_H__
-