These patches correct a number of problems with the JUNO ACPI tables. First, put CCA attributes on the devices which can do DMA. This is because the linux kernel now requires ARM64 devices specify a coherency model. Without CCA the devices are unable to perform DMA.
Update the EHCI window to a full 64k as documented in the Juno Platform SoC TRM. This makes it match the values used in other places. Finally, add the MALI GPU resources to the tables, and add some _DSD entries for the SMSC ethernet chip. The latter changes are required for the mainline kernels to use the adapter. Signed-off-by: Jeremy Linton <[email protected]> --- .../ArmJunoPkg/AcpiTables/AcpiSsdtRootPci.asl | 1 + ArmPlatformPkg/ArmJunoPkg/AcpiTables/Dsdt.asl | 27 ++++++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ArmPlatformPkg/ArmJunoPkg/AcpiTables/AcpiSsdtRootPci.asl b/ArmPlatformPkg/ArmJunoPkg/AcpiTables/AcpiSsdtRootPci.asl index 7d50a5f..645ba93 100644 --- a/ArmPlatformPkg/ArmJunoPkg/AcpiTables/AcpiSsdtRootPci.asl +++ b/ArmPlatformPkg/ArmJunoPkg/AcpiTables/AcpiSsdtRootPci.asl @@ -51,6 +51,7 @@ DefinitionBlock("SsdtPci.aml", "SSDT", 1, "ARMLTD", "ARM-JUNO", EFI_ACPI_ARM_OEM Name(_CID, EISAID("PNP0A03")) // Compatible PCI Root Bridge Name(_SEG, Zero) // PCI Segment Group number Name(_BBN, Zero) // PCI Base Bus Number + Name(_CCA, 1) // Initially mark the PCI coherent (for JunoR1) // Root Complex 0 Device (RP0) { diff --git a/ArmPlatformPkg/ArmJunoPkg/AcpiTables/Dsdt.asl b/ArmPlatformPkg/ArmJunoPkg/AcpiTables/Dsdt.asl index 7a56f00..987186f 100644 --- a/ArmPlatformPkg/ArmJunoPkg/AcpiTables/Dsdt.asl +++ b/ArmPlatformPkg/ArmJunoPkg/AcpiTables/Dsdt.asl @@ -68,6 +68,15 @@ DefinitionBlock("DsdtTable.aml", "DSDT", 1, "ARMLTD", "ARM-JUNO", EFI_ACPI_ARM_O Memory32Fixed(ReadWrite, 0x1A000000, 0x1000) Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) { 192 } }) + Name(_DSD, Package() { + ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), + Package() { + Package(2) {"phy-mode", "mii"}, + Package(2) {"reg-io-width", 4 }, + Package(2) {"smsc,irq-active-high",1}, + Package(2) {"smsc,irq-push-pull",1} + } + }) // _DSD() } // UART PL011 @@ -82,16 +91,30 @@ DefinitionBlock("DsdtTable.aml", "DSDT", 1, "ARMLTD", "ARM-JUNO", EFI_ACPI_ARM_O } // - // USB Host Controller + // Mali GPU + // + Device(GPU0){ + Name(_HID, "ARMH0624") + Name(_UID, Zero) + Name(_CCA, 1) + Name(_CRS, ResourceTemplate() { + Memory32Fixed(ReadWrite, 0x2D000000, 0x10000) + Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) { 64 } // GPU interrupt 64, job interrupt 65, MMU interrupt 66 + }) + } + + // + // USB EHCI Host Controller // Device(USB0){ Name(_HID, "ARMH0D20") Name(_CID, "PNP0D20") Name(_UID, 2) + Name(_CCA, 0) //EHCI on this platform is not coherent! Method(_CRS, 0x0, Serialized){ Name(RBUF, ResourceTemplate(){ - Memory32Fixed(ReadWrite, 0x7FFC0000, 0x000000B0) + Memory32Fixed(ReadWrite, 0x7FFC0000, 0x10000) Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) {149} // INT ID=149 GIC IRQ ID=117 for Juno SoC USB EHCI Controller }) Return(RBUF) -- 2.4.3 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

