I want to add EHCI/XHCI switching so platforms older than 0.3
would not complain about missing XHCI.
---
 Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf |   1 +
 Silicon/Qemu/SbsaQemu/AcpiTables/Ehci.asl       | 132 ++++++++++++++++++++
 2 files changed, 133 insertions(+)

diff --git a/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf 
b/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf
index cd89ab346aa7..b58a2137ec03 100644
--- a/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf
+++ b/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf
@@ -22,6 +22,7 @@ [Sources]
   Mcfg.aslc
   Spcr.aslc
   Xhci.asl
+  Ehci.asl
 
 [Packages]
   ArmPlatformPkg/ArmPlatformPkg.dec
diff --git a/Silicon/Qemu/SbsaQemu/AcpiTables/Ehci.asl 
b/Silicon/Qemu/SbsaQemu/AcpiTables/Ehci.asl
new file mode 100644
index 000000000000..186f28363d95
--- /dev/null
+++ b/Silicon/Qemu/SbsaQemu/AcpiTables/Ehci.asl
@@ -0,0 +1,132 @@
+/** @file
+*  [DSDT] XHCI Usb Host controller
+*
+*  Copyright (c) 2023, Linaro Ltd. All rights reserved.
+*
+*  SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#include <IndustryStandard/Acpi60.h>
+#include <IndustryStandard/SbsaQemuAcpi.h>
+
+DefinitionBlock (__FILE__, "SSDT", 1, "LINARO", "SBSAEHCI", 1)
+{
+  Scope (\_SB_)
+  {
+    // USB EHCI Host Controller
+    Device (USB2) {
+    Name (_HID, "PNP0D20")      // _HID: Hardware ID
+    Name (_UID, 0x00)            // _UID: Unique ID
+    Name (_CCA, 0x01)            // _CCA: Cache Coherency Attribute
+    Method (_STA) {
+    Return (0xF)
+    }
+    Method (_CRS, 0x0, Serialized) {
+        Name (RBUF, ResourceTemplate() {
+        Memory32Fixed (ReadWrite,
+                        FixedPcdGet32 (PcdPlatformUsbBase),
+                        FixedPcdGet32 (PcdPlatformUsbSize))
+        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive) { 43 }
+        })
+        Return (RBUF)
+    }
+
+    // Root Hub
+    Device (RHUB) {
+        Name (_ADR, 0x00000000)  // Address of Root Hub should be 0 as per 
ACPI 5.0 spec
+        Method (_STA) {
+        Return (0xF)
+        }
+
+        // Ports connected to Root Hub
+        Device (HUB1) {
+        Name (_ADR, 0x00000001)
+        Name (_UPC, Package() {
+                0x00,       // Port is NOT connectable
+                0xFF,       // Don't care
+                0x00000000, // Reserved 0 must be zero
+                0x00000000  // Reserved 1 must be zero
+        })
+        Method (_STA) {
+        Return (0xF)
+        }
+
+        Device (PRT1) {
+                Name (_ADR, 0x00000001)
+                Name (_UPC, Package() {
+                0xFF,        // Port is connectable
+                0x00,        // Port connector is A
+                0x00000000,
+                0x00000000
+                })
+                Name (_PLD, Package() {
+                Buffer(0x10) {
+                        0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                        0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+                }
+                })
+                Method (_STA) {
+                Return (0xF)
+                }
+        } // USB0_RHUB_HUB1_PRT1
+        Device (PRT2) {
+                Name (_ADR, 0x00000002)
+                Name (_UPC, Package() {
+                0xFF,        // Port is connectable
+                0x00,        // Port connector is A
+                0x00000000,
+                0x00000000
+                })
+                Name (_PLD, Package() {
+                Buffer(0x10) {
+                        0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                        0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+                }
+                })
+                Method (_STA) {
+                Return (0xF)
+                }
+        } // USB0_RHUB_HUB1_PRT2
+
+        Device (PRT3) {
+                Name (_ADR, 0x00000003)
+                Name (_UPC, Package() {
+                0xFF,        // Port is connectable
+                0x00,        // Port connector is A
+                0x00000000,
+                0x00000000
+                })
+                Name (_PLD, Package() {
+                Buffer (0x10) {
+                        0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                        0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+                }
+                })
+                Method (_STA) {
+                Return (0xF)
+                }
+        } // USB0_RHUB_HUB1_PRT3
+
+        Device (PRT4) {
+                Name (_ADR, 0x00000004)
+                Name (_UPC, Package() {
+                0xFF,        // Port is connectable
+                0x00,        // Port connector is A
+                0x00000000,
+                0x00000000
+                })
+                Name (_PLD, Package() {
+                Buffer (0x10){
+                        0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+                        0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+                }
+                })
+                Method (_STA) {
+                Return (0xF)
+                }
+        } // USB0_RHUB_HUB1_PRT4
+        } // USB0_RHUB_HUB1
+    } // USB0_RHUB
+    } // USB0
+  } //\SB
+}

-- 
2.41.0



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#109590): https://edk2.groups.io/g/devel/message/109590
Mute This Topic: https://groups.io/mt/101938743/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to