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 连接管理器驱动程序。

Screenshot of hardware ID for PCIe based host router.

注意

在进行休眠 (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™ 规范的产品。