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.

Screenshot of hardware ID for PCIe based host router.

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

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.