USB4 ACPI 要求
本文介绍了 USB4 设备如何与高级配置和电源接口 (ACPI) 设备进行交互。 ACPI 设备是由高级配置和电源接口 (ACPI) 规范定义的。
USB4 的 _OSC(操作系统功能)
BIOS 必须按 ACPI 6.4 规范向 USB4 连接管理器授予控制权。 系统必须在平台范围的操作系统电源管理 (OSPM) 功能中授予对原生 USB4 支持的控制权限。 当操作系统调用 _OSC 时,如果将“查询标志”设置为 0,并将“原生 USB4 支持”设置为 1,则将授予控制权限。
此外,还必须实现 USB 的 _OSC。 BIOS 可能不允许出于安全原因控制 PCIe 隧道,具体取决于所需的策略或用户设置。 但是,必须始终启用 USB 隧道、DisplayPort™ 隧道和域间 USB4 连接。 如果 USB 隧道、DisplayPort™ 隧道或域间连接被禁用,则连接管理器会将设备置于失败状态。
按照上述方式实现这两项功能后,PCIe 总线会将硬件 ID“PCI\USB4_MS_CM”添加到 PCIe 枚举主机路由器的硬件 ID 列表。 这将允许即插即用加载 USB4 连接管理器驱动程序。
注意
在进行休眠 (S4) 转换时,不应更改原生 USB4 支持的 _OSC 设置或 USB 的 _OSC。 更改此类设置时需要完全重启。
USB 3.x 和 PCIe 的端口映射 (_DSD)
对于 PCIe 和 USB 3.x 软件堆栈,若要建立与 USB4 主机路由器的电源关系,需要隧道 PCIe 和 USB 3.x 端口的特定于设备的数据 (_DSD)。 如果没有这样做,USB4 域可能会关闭电源,而不会与隧道 PCIe 和 USB 3.x 设备进行协调。
注意
主机接口实例必须始终以一个 3 位的数字 (0-7) 结尾。
下面是 ACPI 源语言 (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
}
})
}
对于 USB4,现有的描述 USB 端口功能 (_UPC) 的 USB 要求保持不变。
PCIe 端口的额外要求
与 USB4 关联的 PCIe 根端口必须指定为能够在 D3 状态下处理热插拔事件。 有关详细信息,请参阅在 D3 中识别支持热插拔的 PCIe 根端口和识别外部公开的 PCIe 根端口。
应使用 _S0W
和 _CRS
或 _PRW
方法适当地将 PCIe 根端口标记为能够从 D3Cold 状态唤醒。 有关 _S0W
和 _CRS
或 _PRW
的详细信息,请参阅 ACPI 规范和 D3cold 固件要求。
用于阻止主机到主机连接的数据角色交换的特定于设备的方法
在某些平台上,Windows 系统 UCSI OPM 驱动程序可能会尝试通过使用 UCSI 的“设置 USB 操作角色”(SET_UOR
) 命令来请求 USB 数据角色交换,以便更正 USB 连接中的 USB 数据角色。 但是,这可能会影响主机到主机连接,因为此类连接的任何一端都可能会启动此角色更正操作。 若要解决此问题,平台必须按如下方式在 UCSI 设备下实现 ACPI _DSM 方法,以声明应禁用 UCSI OPM 中的数据角色更正功能。
USB 的特定于设备的方法 (_DSM)
为了在 UCSI OPM 中禁用 USB 数据角色更正功能,Windows 会定义特定于设备的方法 (_DSM),该方法具有如下所述的函数。
函数 4:在 UCSI OPM 中禁用 USB 数据角色更正功能
参数
Arg0:UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
Arg1:修订 ID = 0
Arg2:函数索引 = 4
Arg3:空包(未使用)
返回值
一个包含以下值之一的整数:
元素 | 对象类型 | 说明 |
---|---|---|
已禁用 | 4 字节(32 位)无符号长整型 | 指定是否应禁用 UCSI OPM 中的角色更正。 0x00(默认值)- 不禁用 USB 数据角色更正。 0x01 - 在 UCSI OPM 中禁用 USB 数据角色更正。 |
使用此函数时,_DSM 方法必须出现在 UCSI 设备下。
注意
每个 _DSM 的函数索引 0 都是一个返回支持的函数索引集的查询函数。 它始终是必需的。 有关详细信息,请参阅 ACPI 6.4 规范中的 9.1.1 _DSM(特定于设备的方法)。
另请参阅
Thunderbolt 是 Intel Corporation 或其子公司的商标。
“USB4™”是 USB 实现者论坛的商标,只适用于基于并符合 USB4™ 规范的产品。