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

Reply via email to