Topics

[PATCH 2/3] Platform/RaspberryPi/AcpiTables: Add further named components


Jeremy Linton
 

Add some additional IORT nodes for the USB & EMMC devices, realistically
we probably only need to have a single node with the lowest AddressSizeLimit
but this is conceptually "cleaner" should anyone actually try and use these
values rather than the _DMA provided ones.

Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
---
Platform/RaspberryPi/AcpiTables/Iort.aslc | 44 +++++++++++++++++++++++++++=
+++-
1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/Platform/RaspberryPi/AcpiTables/Iort.aslc b/Platform/Raspberry=
Pi/AcpiTables/Iort.aslc
index 00720194bb..810307ae37 100644
--- a/Platform/RaspberryPi/AcpiTables/Iort.aslc
+++ b/Platform/RaspberryPi/AcpiTables/Iort.aslc
@@ -20,6 +20,8 @@ typedef struct {
typedef struct {=0D
EFI_ACPI_6_0_IO_REMAPPING_TABLE Iort;=0D
RPI4_NC_NODE NamedCompNode;=0D
+ RPI4_NC_NODE NamedCompNode2;=0D
+ RPI4_NC_NODE NamedCompNode3;=0D
} RPI4_IO_REMAPPING_STRUCTURE;=0D
=0D
STATIC RPI4_IO_REMAPPING_STRUCTURE Iort =3D {=0D
@@ -27,7 +29,7 @@ STATIC RPI4_IO_REMAPPING_STRUCTURE Iort =3D {
ACPI_HEADER (EFI_ACPI_6_0_IO_REMAPPING_TABLE_SIGNATURE,=0D
RPI4_IO_REMAPPING_STRUCTURE,=0D
EFI_ACPI_IO_REMAPPING_TABLE_REVISION),=0D
- 1, // NumNodes=0D
+ 3, // NumNodes=0D
sizeof (EFI_ACPI_6_0_IO_REMAPPING_TABLE), // NodeOffset=0D
0 // Reserved=0D
}, {=0D
@@ -50,6 +52,46 @@ STATIC RPI4_IO_REMAPPING_STRUCTURE Iort =3D {
}, {=0D
"\\_SB_.SCB0.XHC0" // ObjectName=0D
}=0D
+ }, {=0D
+ // gpu/dwc usb named component node=0D
+ {=0D
+ {=0D
+ EFI_ACPI_IORT_TYPE_NAMED_COMP, // Type=0D
+ sizeof (RPI4_NC_NODE), // Length=0D
+ 0x0, // Revision=0D
+ 0x0, // Reserved=0D
+ 0x0, // NumIdMappings=0D
+ 0x0, // IdReference=0D
+ },=0D
+ 0x0, // Flags=0D
+ 0x0, // CacheCoherent=0D
+ 0x0, // AllocationHints=0D
+ 0x0, // Reserved=0D
+ 0x0, // MemoryAccessFlags=0D
+ 30, // AddressSizeLimit=0D
+ }, {=0D
+ "\\_SB_.GDV0.USB0" // ObjectName=0D
+ }=0D
+ }, {=0D
+ // emmc2 named component node=0D
+ {=0D
+ {=0D
+ EFI_ACPI_IORT_TYPE_NAMED_COMP, // Type=0D
+ sizeof (RPI4_NC_NODE), // Length=0D
+ 0x0, // Revision=0D
+ 0x0, // Reserved=0D
+ 0x0, // NumIdMappings=0D
+ 0x0, // IdReference=0D
+ },=0D
+ 0x0, // Flags=0D
+ 0x0, // CacheCoherent=0D
+ 0x0, // AllocationHints=0D
+ 0x0, // Reserved=0D
+ 0x0, // MemoryAccessFlags=0D
+ 30, // AddressSizeLimit=0D
+ }, {=0D
+ "\\_SB_.GDV1.SDC3" // ObjectName=0D
+ }=0D
}=0D
};=0D
=0D
--=20
2.13.7


Pete Batard
 

On 2021.04.08 06:58, Jeremy Linton wrote:
Add some additional IORT nodes for the USB & EMMC devices, realistically
we probably only need to have a single node with the lowest AddressSizeLimit
but this is conceptually "cleaner" should anyone actually try and use these
values rather than the _DMA provided ones.
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
---
Platform/RaspberryPi/AcpiTables/Iort.aslc | 44 ++++++++++++++++++++++++++++++-
1 file changed, 43 insertions(+), 1 deletion(-)
diff --git a/Platform/RaspberryPi/AcpiTables/Iort.aslc b/Platform/RaspberryPi/AcpiTables/Iort.aslc
index 00720194bb..810307ae37 100644
--- a/Platform/RaspberryPi/AcpiTables/Iort.aslc
+++ b/Platform/RaspberryPi/AcpiTables/Iort.aslc
@@ -20,6 +20,8 @@ typedef struct {
typedef struct {
EFI_ACPI_6_0_IO_REMAPPING_TABLE Iort;
RPI4_NC_NODE NamedCompNode;
+ RPI4_NC_NODE NamedCompNode2;
+ RPI4_NC_NODE NamedCompNode3;
} RPI4_IO_REMAPPING_STRUCTURE;
STATIC RPI4_IO_REMAPPING_STRUCTURE Iort = {
@@ -27,7 +29,7 @@ STATIC RPI4_IO_REMAPPING_STRUCTURE Iort = {
ACPI_HEADER (EFI_ACPI_6_0_IO_REMAPPING_TABLE_SIGNATURE,
RPI4_IO_REMAPPING_STRUCTURE,
EFI_ACPI_IO_REMAPPING_TABLE_REVISION),
- 1, // NumNodes
+ 3, // NumNodes
sizeof (EFI_ACPI_6_0_IO_REMAPPING_TABLE), // NodeOffset
0 // Reserved
}, {
@@ -50,6 +52,46 @@ STATIC RPI4_IO_REMAPPING_STRUCTURE Iort = {
}, {
"\\_SB_.SCB0.XHC0" // ObjectName
}
+ }, {
+ // gpu/dwc usb named component node
+ {
+ {
+ EFI_ACPI_IORT_TYPE_NAMED_COMP, // Type
+ sizeof (RPI4_NC_NODE), // Length
+ 0x0, // Revision
+ 0x0, // Reserved
+ 0x0, // NumIdMappings
+ 0x0, // IdReference
+ },
+ 0x0, // Flags
+ 0x0, // CacheCoherent
+ 0x0, // AllocationHints
+ 0x0, // Reserved
+ 0x0, // MemoryAccessFlags
+ 30, // AddressSizeLimit
+ }, {
+ "\\_SB_.GDV0.USB0" // ObjectName
+ }
+ }, {
+ // emmc2 named component node
+ {
+ {
+ EFI_ACPI_IORT_TYPE_NAMED_COMP, // Type
+ sizeof (RPI4_NC_NODE), // Length
+ 0x0, // Revision
+ 0x0, // Reserved
+ 0x0, // NumIdMappings
+ 0x0, // IdReference
+ },
+ 0x0, // Flags
+ 0x0, // CacheCoherent
+ 0x0, // AllocationHints
+ 0x0, // Reserved
+ 0x0, // MemoryAccessFlags
+ 30, // AddressSizeLimit
+ }, {
+ "\\_SB_.GDV1.SDC3" // ObjectName
+ }
}
};
Reviewed-by: Pete Batard <pete@akeo.ie>


Andrei Warkentin
 

Reviewed-by: Andrei Warkentin <awarkentin@...>


From: Jeremy Linton <jeremy.linton@...>
Sent: Thursday, April 8, 2021 12:58 AM
To: devel@edk2.groups.io <devel@edk2.groups.io>
Cc: ard.biesheuvel@... <ard.biesheuvel@...>; leif@... <leif@...>; pete@... <pete@...>; samer.el-haj-mahmoud@... <samer.el-haj-mahmoud@...>; Andrei Warkentin <awarkentin@...>; Jeremy Linton <jeremy.linton@...>
Subject: [PATCH 2/3] Platform/RaspberryPi/AcpiTables: Add further named components
 
Add some additional IORT nodes for the USB & EMMC devices, realistically
we probably only need to have a single node with the lowest AddressSizeLimit
but this is conceptually "cleaner" should anyone actually try and use these
values rather than the _DMA provided ones.

Signed-off-by: Jeremy Linton <jeremy.linton@...>
---
 Platform/RaspberryPi/AcpiTables/Iort.aslc | 44 ++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/Platform/RaspberryPi/AcpiTables/Iort.aslc b/Platform/RaspberryPi/AcpiTables/Iort.aslc
index 00720194bb..810307ae37 100644
--- a/Platform/RaspberryPi/AcpiTables/Iort.aslc
+++ b/Platform/RaspberryPi/AcpiTables/Iort.aslc
@@ -20,6 +20,8 @@ typedef struct {
 typedef struct {

   EFI_ACPI_6_0_IO_REMAPPING_TABLE      Iort;

   RPI4_NC_NODE                         NamedCompNode;

+  RPI4_NC_NODE                         NamedCompNode2;

+  RPI4_NC_NODE                         NamedCompNode3;

 } RPI4_IO_REMAPPING_STRUCTURE;

 

 STATIC RPI4_IO_REMAPPING_STRUCTURE Iort = {

@@ -27,7 +29,7 @@ STATIC RPI4_IO_REMAPPING_STRUCTURE Iort = {
     ACPI_HEADER (EFI_ACPI_6_0_IO_REMAPPING_TABLE_SIGNATURE,

                  RPI4_IO_REMAPPING_STRUCTURE,

                  EFI_ACPI_IO_REMAPPING_TABLE_REVISION),

-    1,                                              // NumNodes

+    3,                                              // NumNodes

     sizeof (EFI_ACPI_6_0_IO_REMAPPING_TABLE),       // NodeOffset

     0                                               // Reserved

   }, {

@@ -50,6 +52,46 @@ STATIC RPI4_IO_REMAPPING_STRUCTURE Iort = {
     }, {

       "\\_SB_.SCB0.XHC0"                            // ObjectName

     }

+  }, {

+    // gpu/dwc usb named component node

+    {

+      {

+        EFI_ACPI_IORT_TYPE_NAMED_COMP,              // Type

+        sizeof (RPI4_NC_NODE),                      // Length

+        0x0,                                        // Revision

+        0x0,                                        // Reserved

+        0x0,                                        // NumIdMappings

+        0x0,                                        // IdReference

+      },

+      0x0,                                          // Flags

+      0x0,                                          // CacheCoherent

+      0x0,                                          // AllocationHints

+      0x0,                                          // Reserved

+      0x0,                                          // MemoryAccessFlags

+      30,                                           // AddressSizeLimit

+    }, {

+      "\\_SB_.GDV0.USB0"                            // ObjectName

+    }

+  }, {

+    // emmc2 named component node

+    {

+      {

+        EFI_ACPI_IORT_TYPE_NAMED_COMP,              // Type

+        sizeof (RPI4_NC_NODE),                      // Length

+        0x0,                                        // Revision

+        0x0,                                        // Reserved

+        0x0,                                        // NumIdMappings

+        0x0,                                        // IdReference

+      },

+      0x0,                                          // Flags

+      0x0,                                          // CacheCoherent

+      0x0,                                          // AllocationHints

+      0x0,                                          // Reserved

+      0x0,                                          // MemoryAccessFlags

+      30,                                           // AddressSizeLimit

+    }, {

+      "\\_SB_.GDV1.SDC3"                            // ObjectName

+    }

   }

 };

 

--
2.13.7