USB4™ 电源管理要求
USB4 主机路由器必须可靠地支持 USB4 睡眠以及进入和退出。 隧道协议不得在进入或退出 USB4 睡眠时以电子方式发出与各自的隧道断开连接的信号。 此外,在 USB4 域从睡眠中恢复后,USB4 主机路由器必须通过适当的隧道重播协议唤醒。
隧道设备协议(PCIe、USB 3.x 和 Display)会与关联的 USB4 主机路由器设备建立电源关系,使连接管理器可以在隧道设备空闲时启动进入睡眠的操作。 从 Windows 11 开始的 PCIe 和 USB 3.x 设备驱动程序支持根据 USB4 ACPI 要求中描述的基于 ACPI 的 (_DSD) 端口映射来识别关联的 USB4 主机路由器设备并对其进行电源管理。
Windows 11 中的图形堆栈也已更新,以标识 USB4 主机路由器设备,并对 USB4 主机路由器设备进行电源管理。 这需要从 IHV 提供的图形驱动程序中获得支持,如图形驱动程序要求所述。 USB4 连接管理器从 ACPI 获取主机路由器设备 ID,并将其写入 DP-IN 适配器配置空间中的 ADP_DP_CS_2.CM_ID。 如 ACPI 要求中所述,主机接口实例必须始终以一个 3 位的数字 (0-7) 结尾。
图形驱动程序要求
若要确保电源管理关联正确,图形堆栈必须能够识别监视器连接到的 USB4 DP-IN 适配器。 这是通过 USB4 域设置实现的,该设置由 DPCD 通过 USB4 DP-IN 适配器注册,供图形堆栈读取。 这些要求在 DisplayPort™2.0 规范(勘误表)中定义。
DPCD 字段名称 | DPCD 字段地址 | 注意 |
---|---|---|
USB4_Driver_ID | E000Fh [3:0] | 唯一标识系统中的主机路由器。 这是由 USB4 连接管理器设置的,从 ACPI 获取主机路由器设备 ID,并将其写入到 DP-IN 适配器配置空间中的 ADP_DP_CS_2.CM_ID。 |
USB4_ROUTER_TOPOLOGY_ID | E001Bh - E001Fh | 唯一标识主机路由器域中的 USB4 设备 |
DP_IN_Adapter_Number | E000Eh [5:0] | 在 USB4 设备上唯一标识 DP-IN 适配器 |
DP 隧道支持 | E000Dh [0] | 值为 1 表示 USB4 隧道 |
图形驱动程序要求如下:
- WDDM 3.0 或更高版本的驱动程序
- 驱动程序会公开新的适配器上限以指示 USB4 支持
- 驱动程序公开的所有静态视频呈现网络 (VidPN) 目标都需要报告为电源组件
- 连接到同一个静态目标的每个 USB4 动态目标都必须连接到同一个主机路由器。 也就是说,USB4_Driver_ID 必须有相同的值。 不支持将 USB4 DisplayPort 监视器连接到“仅显示”或“间接显示”WDDM 驱动程序。
USB4 驱动程序功能
已将该 SupportUsb4Targets
功能添加到在开始时从驱动程序查询的 DXGK_DISPLAY_DRIVERCAPS_EXTENSION 结构。 设置此值的操作仅对 WDDM 3.0 驱动程序有效,只有在驱动程序确实满足上面列出的所有要求时才应设置此值。
报告 USB4 监视器 DPCD 值
在 WDDM 3.0 中,有一个新的 DXGK_CONNECTION_CHANGE.MonitorConnect.MonitorConnectFlags
字段,该字段包含一个由驱动程序用来指示此监视器是 USB4 连接监视器的 Usb4DisplayPortMonitor
标志。
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;
如果 DisplayPort™ 监视器已连接到指定的视频呈现网络 (VidPN) 目标并连接到 USB4 DP-IN 适配器,则驱动程序应:
- 设置
DXGK_CONNECTION_CHANGE.MonitorConnect.Flags.Usb4DisplayPortMonitor
- 填充
DXGKARG_QUERYCONNECTIONCHANGE.pUsb4MonitorInfo
中的字段
作为 PoFx 组件报告的所有静态 VidPN 目标
若要在图形堆栈和 USB 堆栈之间启用正确的电源管理,需要通过 DxgkDdiQueryAdapterInfo(DXGKQAITYPE_NUMPOWERCOMPONENTS)
和 DxgkDdiQueryAdapterInfo(DXGKQAITYPE_POWERCOMPONENTINFO)
将所有静态 VidPN 目标报告为电源管理框架 (PoFx) 组件。
从同一静态 VidPN 目标创建的所有动态目标
支持连接到动态 VidPN 目标的 USB4 监视器。 但是,连接到静态 VidPN 目标的所有 USB4 动态 VidPN 目标都必须有相同的 USB4_Driver_ID values
,并且必须连接到同一个 USB4 主机路由器。
CLx 低功耗状态
为了节省电力并减少热负荷,连接管理器允许第一个深度链路进入 CL0 和 CL1(如果硬件和当前隧道协议支持)。 面向上游的端口 (UFP) 和面向下游的端口 (DFP) 必须支持 CL0 和 CL1,才能在该链接上启用低功耗状态。 随后,如果 TMU 精度要求和链路上的隧道活动允许,则链路可以进入 CL0 或 CL1 以节省电力。
XHCI USB3 隧道支持
若要通过保持 USB4 主机路由器空闲状态更长时间来实现系统节能,与 USB4 主机路由器关联的 XHCI 控制器必须支持 USB3 隧道支持 ECN(隧道模式支持位和 USB3 隧道支持功能)。 如果 USB3 隧道支持 ECN 不受支持,则必须提供等效的专有机制。 利用 USB3 隧道支持 ECN,USB4 主机路由器能够在 USB4 映射的 USB3 端口以本机模式运行时保持空闲状态。
另请参阅
Thunderbolt 是 Intel Corporation 或其子公司的商标。
“USB4™”是 USB 实现者论坛的商标,只适用于基于并符合 USB4™ 规范的产品。