使用 ACPI 配置计算机上的 USB 端口
如果系统需要 ACPI BIOS 更改才能准确反映 USB 端口配置,则应在配置端口时考虑用户将设备连接到端口的能力。
如果使用 ACPI 指定 USB 端口的配置,则必须定义 USB 端口功能 (_UPC) 和物理位置说明 (_PLD) 对象。 尽管 ACPI 6.0 规范没有明确禁止仅使用 _UPC 对象,但更准确地说,这两个对象的使用表明用户能够将设备连接到端口。 仅使用 _UPC 对象可能无法正确或按预期设置设备容器分组。
如果设置了 DeviceRemovable 位,则连接到端口的设备可从中心进行删除。 下表显示了给定端口的 ACPI 对象的值如何影响 Windows 为该设备报告的 USB 中心描述符 DeviceRemovable 位的值。
USB 端口状态 | 示例 | _Upc。PortIsConnectable 字节 | _Pld。UserVisible 位 (位 64) | 生成的 DeviceRemovable 位值 |
---|---|---|---|---|
端口可见,用户可以自由连接和断开连接设备。 |
端口公开在计算机上对用户可见的面板的表面上。 |
设置 (0xFF) |
设置 (1) |
设置 |
端口是隐藏的或内部的,用户无法自由连接和断开连接设备。 |
端口直接硬连接到集成设备,例如笔记本电脑网络摄像头或内部 USB 集线器。 |
设置 (0xFF) |
已清除 |
已清除 |
端口由 USB 主控制器以物理方式实现,但不使用。 |
端口是未连接到端口插头终端或集成设备的多余端口。 |
已清除 (0x00) |
清除 |
已清除 |
注意 将端口定义为不可连接但对用户可见的端口是无效的配置。
以下示例演示格式正确的 ACPI 源语言 (ASL) ,该语言演示了如何使用 _UPC 和 _PLD 对象来描述 USB 端口:
若要指定内部 (用户不可见) 且可连接到集成设备的端口, _UPC。PortIsConnectable 字节必须设置为 0xFF 和 _PLD。UserVisible 位必须设置为 0。
在以下示例中,设备与计算机的设备容器进行分组。
Name(_UPC, Package(){ 0xFF, // Port is connectable 0xFF, // Connector type (N/A for non-visible ports) 0x00000000, // Reserved 0, must be zero 0x00000000}) // Reserved 1, must be zero Name(_PLD, Buffer(0x10){ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
若要指定外部端口 (用户可见) 并且可以连接到外部设备的端口, _UPC。PortIsConnectable 字节必须设置为 0xFF 和 _PLD。UserVisible 位必须设置为 1。 _UPD。PortConnectorType 字节必须设置为 ACPI 3.0 规范第 9.13 节中指定的相应 USB 连接器类型。
在以下示例中,为设备分配了一个新的设备容器,并显示为单独的物理设备。
Name(_UPC, Package(){ 0xFF, // Port is connectable 0x00, // Connector type, Type 'A' in this case 0x00000000, // Reserved 0, must be zero 0x00000000}) // Reserved 1, must be zero Name(_PLD, Buffer(0x10){ 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
ACPI 中必须正确描述 USB Type-C 连接器才能通过 USB 类型 C ACPI 验证 硬件实验室工具包测试。
USB Type-C 连接器的示例_UPC:
Name(_UPC, Package(4){
0x01, // Port is connectable
0x09, // Connector type: Type C connector - USB2 and SS with Switch
0x00000000, // Reserved0 – must be zero
0x00000000}) // Reserved1 – must be zero
有关 ACPI 6.0 接口的详细信息,请参阅 高级配置和电源接口规范修订版 6.0。