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:
- WDDM 3.0 or above driver
- Driver exposes a new adapter cap to indicate USB4 support
- All static video present network (VidPN) targets exposed by the driver need to be reported as power components
- 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:
- Set
DXGK_CONNECTION_CHANGE.MonitorConnect.Flags.Usb4DisplayPortMonitor
- 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.
XHCI USB3 tunneling support
To save system power by keeping USB4 host routers idling longer, the XHCI controller associated with the USB4 host router must support the USB3 Tunneling Support ECN (Tunneled Mode support bit and USB3 Tunneling Support capability). An equivalent proprietary mechanism must be available if USB3 Tunneling Support ECN is not supported. The USB3 Tunneling Support ECN enables USB4 host routers to stay idle when a USB4-mapped USB3 port is operating in native mode.
See also
- Universal Serial Bus 4
- Introduction to the USB4 connection manager in Windows
- USB4 design details and general requirements
- USB4 ACPI 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.