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