USB4 ACPI requirements
This article describes how USB4 devices interface with an Advanced Configuration and Power Interface (ACPI) device. ACPI devices are defined by the Advanced Configuration and Power Interface (ACPI) Specification.
_OSC (Operating System Capabilities) for USB4
The BIOS must grant control to the USB4 connection manager as per ACPI 6.4 specification. The system must grant control of native USB4 support in platform-wide operating system power management (OSPM) capabilities. Control is granted when _OSC is called by the operating system with Query Flag set to 0 and Native USB4 Support set to 1.
Additionally, _OSC for USB must also be implemented. The BIOS may disallow control over PCIe tunneling for security reasons as per required policies or user-settings. However, USB tunneling, DisplayPort™ tunneling and interdomain USB4 connections must always be enabled. The connection manager will place the device into a failed state if USB tunneling, DisplayPort™ tunneling or interdomain connections are disabled.
Once both capabilities are implemented as described above, the PCIe bus will add a hardware-ID of "PCI\USB4_MS_CM" to the list of hardware IDs for PCIe enumerated host routers. This will allow Plug and Play to load the USB4 connection manager driver.
Note
_OSC settings for native USB4 support or _OSC for USB should not be changed across a hibernate (S4) transition. A full reboot is required when such settings are altered.
Port mapping (_DSD) for USB 3.x and PCIe
For the PCIe and USB 3.x software stacks to establish power relations with the USB4 host router, device-specific data (_DSD) for the tunneled PCIe and USB 3.x ports is required. In the absence of this, the USB4 domain may power down without coordinating with the tunneled PCIe and USB 3.x devices.
Note
The host interface instance must always end with a 3-bit digit (0-7).
The following is a port mapping example in ACPI source language (ASL):
Scope (\_SB.PCI0)
{
Device (NHI0) { } //Host interface instance must always end with a 3-bit digit (0-7).
Device (DSB0) //Tunneled PCIe port instance
{
Name (_DSD, Package () {
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), //Device Properties UUID
Package () {
Package () { "usb4-host-interface", \_SB.PCI0.NHI0 },
Package () { "usb4-port-number", PortInstance#}, // PortInstance# is unused and can be 0
}
})
}
…
Device (SS01) // e.g. Tunnel capable USB 3.x super speed port under RHUB
{
…
Name (_DSD, Package () {
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), //Device Properties UUID
Package () {
Package () { "usb4-host-interface", \_SB.PCI0.NHI0 },
Package () { "usb4-port-number", PortInstance#}, // PortInstance# is unused and can be 0
}
})
}
Existing USB requirements for describing USB port capabilities(_UPC) remain unchanged for USB4.
Additional requirements for PCIe ports
PCIe root ports associated with USB4 must be designated as capable of handling hot plug events while in D3 state. For more information, see Identifying PCIe Root Ports supporting hot plug in D3 and Identifying externally exposed PCIe Root Ports.
PCIe root ports should be appropriately marked as capable of waking from D3Cold by using the _S0W
and _CRS
, or _PRW
methods. For more information about _S0W
and _CRS
, or _PRW
, see the ACPI specification and firmware requirements for D3cold.
Device-specific method to prevent data role swap for host-to-host connections
On certain platforms, Windows system UCSI OPM drivers may try to correct the USB data role in a USB connection by requesting a USB data role swap using the UCSI "Set USB Operation Role" (SET_UOR
) command. However, this may impact the host-to-host connection, as either side of such a connection may initiate this role correction. To address this problem, the platform must implement ACPI _DSM method under the UCSI device as follows to claim that data role correction in UCSI OPM should be disabled.
USB device-specific method (_DSM)
To disable USB data role correction in UCSI OPM, Windows defines a device-specific method (_DSM) that has the function described below.
Function 4: Disable the USB data role correction in UCSI OPM
Arguments
Arg0: UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
Arg1: Revision ID = 0
Arg2: Function index = 4
Arg3: Empty package (not used)
Return value
An integer containing one of the following values:
Element | Object type | Description |
---|---|---|
Disabled | 4-byte (32-bit) unsigned long | Specify whether the role correction in UCSI OPM should be disabled. 0x00 (Default) - Do not disable the USB data role correction. 0x01 - Disable the USB data role correction in UCSI OPM. |
When this function is used, the _DSM method must appear under the UCSI device.
Note
Function index 0 of every _DSM is a query function that returns the set of supported function indexes. It's always required. For more information, see section 9.1.1 _DSM (Device Specific Method), in the ACPI 6.4 specification.
See also
- Universal Serial Bus 4
- Introduction to the USB4 connection manager in Windows
- USB4 design details and general requirements
- USB4 power management requirements
- USB4 interdomain connections
- USB4 required testing
- USB4 debugging and troubleshooting
Thunderbolt is a trademark of Intel Corporation or its subsidiaries.
"USB4™" is a trademark of USB Implementers Forum and is only intended for use with products based on and compliant with the USB4™ specification.