USB4 power management requirements

USB4 host routers must reliably support USB4 sleep and entry and exit. The tunneled protocols must not electrically signal disconnect to their respective tunnels on entry or exit from USB4 sleep. Additionally, the USB4 host router must replay the protocol wake over the appropriate tunnel after the USB4 domain has resumed from sleep.

The tunneled device protocols (PCIe, USB 3.x, and display) establish power relations with the associated USB4 host router device which allows the connection manager to initiate sleep entry when the tunneled devices are idle. The PCIe and USB 3.x device drivers starting in Windows 11 have the support to identify and power manage the associated USB4 host router device based on the ACPI based (_DSD) port mapping described in the USB4 ACPI requirements.

The graphics stack in Windows 11 has also been updated to identify the USB4 host router device and power manage the USB4 host router device. This requires support from the IHV provided graphics driver as described in Graphics driver requirements. The USB4 connection manager obtains the host router device ID from ACPI and writes to ADP_DP_CS_2.CM_ID in the DP-IN adapter configuration space. As described in the ACPI requirements, the host interface instance must always end with a 3-bit digit (0-7).

Graphics driver requirements

To ensure the correct power management associations, the graphics stack must be able to identify which USB4 DP-IN adapter to which the monitor is connected. This is achieved by the USB4 domain setting the DPCD register via the USB4 DP-IN adapter that the graphics stack can read. These requirements are defined in DisplayPort™ 2.0 specification (Errata).

DPCD field name DPCD field address Note
USB4_Driver_ID E000Fh [3:0] Uniquely identifies the host router in the system. This is set by the USB4 connection manager writing obtaining the host router device ID obtained from ACPI and writing it to ADP_DP_CS_2.CM_ID in the DP IN Adapter configuration space.
USB4_ROUTER_TOPOLOGY_ID E001Bh - E001Fh Uniquely identifies the USB4 device in the host router domain
DP_IN_Adapter_Number E000Eh [5:0] Uniquely identifies the DP-IN adapter on the USB4 device
DP Tunneling Support E000Dh [0] A value of 1 indicates USB4 tunneling

The graphics driver requirements are:

  1. WDDM 3.0 or above driver
  2. Driver exposes a new adapter cap to indicate USB4 support
  3. All static video present network (VidPN) targets exposed by the driver need to be reported as power components
  4. Each USB4 dynamic target connected to same static target must be connected to the same host router. That is, the USB4_Driver_ID must have the same value. Connecting a USB4 DisplayPort monitor to a display only or indirect display WDDM driver is not supported.

USB4 driver capabilities

The SupportUsb4Targets capability has been added to the DXGK_DISPLAY_DRIVERCAPS_EXTENSION structure that is queried from the driver at start time. Setting this value is only valid for WDDM 3.0 drivers and should only be set if the driver does meet all the requirements listed above.

Reporting USB4 monitor DPCD values

In WDDM 3.0 there is a new DXGK_CONNECTION_CHANGE.MonitorConnect.MonitorConnectFlags field that has a Usb4DisplayPortMonitor flag the driver uses to indicate this monitor is a USB4 connected monitor.

typedef struct _DXGK_CONNECTION_MONITOR_CONNECT_FLAGS
{
    union
    {
        struct
        {
            UINT    Usb4DisplayPortMonitor  : 1;
            UINT    Reserved                :31;
        };
        UINT Value;
    };
} DXGK_CONNECTION_MONITOR_CONNECT_FLAGS;

typedef struct _DXGK_CONNECTION_CHANGE {
    ULONGLONG                       ConnectionChangeId;
    D3DDDI_VIDEO_PRESENT_TARGET_ID  TargetId            :24;
    DXGK_CONNECTION_STATUS          ConnectionStatus    : 4;
    UINT                            Reserved            : 4;
    union {
        struct {
            D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY LinkTargetType;
            DXGK_CONNECTION_MONITOR_CONNECT_FLAGS MonitorConnectFlags;
        } MonitorConnect;
        struct {
            D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY BaseTargetType;
            D3DDDI_VIDEO_PRESENT_TARGET_ID  NewTargetId;
        } TargetConnect;
        struct {
            D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY BaseTargetType;
            D3DDDI_VIDEO_PRESENT_TARGET_ID  NewTargetId;
        } TargetJoin;
    };
} DXGK_CONNECTION_CHANGE, *PDXGK_CONNECTION_CHANGE;

typedef struct _DXGK_CONNECTION_USB4_INFO
{
    UINT Dpcd_DP_IN_Adapter_Number;
    UINT Dpcd_USB4_Driver_ID;
    BYTE Dpcd_USB4_ROUTER_TOPOLOGY_ID[5];
} DXGK_CONNECTION_USB4_INFO, *PDXGK_CONNECTION_USB4_INFO;

typedef struct _DXGKARG_QUERYCONNECTIONCHANGE
{
    DXGK_CONNECTION_CHANGE     ConnectionChange; // out: Buffer into which the oldest available change is copied by driver
    PDXGK_CONNECTION_USB4_INFO pUsb4MonitorInfo; // inout: Pointer to an operating system allocated structure driver should
                                                 //        complete if MonitorConnect.Flags.Usb4DisplayPortMonitor was set
} DXGKARG_QUERYCONNECTIONCHANGE;

When a DisplayPort™ monitor has been connected to the specified video present network (VidPN) target and is connected to a USB4 DP-IN adapter the driver should:

  1. Set DXGK_CONNECTION_CHANGE.MonitorConnect.Flags.Usb4DisplayPortMonitor
  2. Complete the fields in DXGKARG_QUERYCONNECTIONCHANGE.pUsb4MonitorInfo

All static VidPN targets being reported as PoFx components

To enable correct power management between the graphics and USB stack, all static VidPN targets are required to be reported as power management framework (PoFx) components through DxgkDdiQueryAdapterInfo(DXGKQAITYPE_NUMPOWERCOMPONENTS) and DxgkDdiQueryAdapterInfo(DXGKQAITYPE_POWERCOMPONENTINFO).

All dynamic targets created from same static VidPN target

USB4 monitors connected to dynamic VidPN targets are supported. But all USB4 dynamic VidPN targets connected to a static VidPN target must have the same USB4_Driver_ID values, they must be connected to the same USB4 host router.

CLx low power states

To save power and reduce thermal load, the connection manager enables first depth links to enter CL0s and CL1, if supported by hardware and currently tunneled protocols. Both the upstream facing port (UFP) and downstream facing port (DFP) must support CL0s and CL1 for the low power states to be enabled on the link. Subsequently, if the TMU accuracy requirements and tunneled activity on the link allow, the link may enter CL0s or CL1 to save power.

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.