系列文章目录
XHCI 1.2b 规范摘要(一)
XHCI 1.2b 规范摘要(二)
XHCI 1.2b 规范摘要(三)
XHCI 1.2b 规范摘要(四)
XHCI 1.2b 规范摘要(五)
XHCI 1.2b 规范摘要(六)
XHCI 1.2b 规范摘要(七)
XHCI 1.2b 规范摘要(八)
XHCI 1.2b 规范摘要(九)
XHCI 1.2b 规范摘要(十)
XHCI 1.2b 规范摘要(11)
XHCI 1.2b 规范摘要(12)
XHCI 1.2b 规范摘要(13)
XHCI 1.2b 规范摘要(14)
XHCI 1.2b 规范摘要(15)
文章目录
7 xHCI 扩展功能
xHCI Extended Capabilities 。
xHC 使用类似 PCI 扩展功能的方法导出 xHCI 特定的扩展功能。如果 xHC 实现任何扩展功能,它会在 HCCPARAMS1 寄存器 (5.3.6) 的 xHCI 扩展功能指针 (xECP) 字段中指定一个非零值。此值是从 Base (基址)到 xHC MMIO 空间的偏移量,其中 Base (基址)是主机控制器的 MMIO 地址空间的开头。每个功能寄存器的格式如表 7-1 所示。
7.1 USB 传统支持功能
USB Legacy Support Capability 。
xHC 提供的 USB 传统支持是可选的规范功能,适用于预操作系统软件 (BIOS) 和操作系统,用于协调 xHC 的所有权。
此功能通过 xHCI 扩展功能指针 (xECP) 字段链接,并驻留在 MMIO 空间中。
xECP 字段位于 HCCPARAMS1 寄存器中,请参阅第 5.3.6 节。
注意:USB 传统支持功能寄存器位于辅助电源井中。有关复位条件,请参阅第 4.22.1 节。
7.1.1 USB 传统支持功能 (USBLEGSUP)
USB Legacy Support Capability (USBLEGSUP) 。
偏移: xECP + 00h
属性:RO, RW
大小:32 bits
该寄存器是 xHCI 扩展功能(xHCI Extended Capability)寄存器。它包含一个特定功能部分和一个指向下一个 xHCI 扩展功能的指针。该寄存器由预操作系统软件 (BIOS) 和操作系统用于协调 xHC 的所有权。该寄存器位于辅助电源井(Aux Power well)中。
7.1.2 USB 传统支持控制/状态 (USBLEGCTLSTS)
USB Legacy Support Control/Status (USBLEGCTLSTS) 。
偏移: xECP + 04h
属性:RO, RW, RW1C
大小:32 bits
预操作系统 (BIOS) 软件使用此寄存器来启用系统管理中断 (SMI,System Management Interrupts),以跟踪每个 xHCI/USB 事件。此寄存器的位 [21:16] 只是 USBSTS 寄存器 [5:0] 的影子位。此寄存器位于辅助电源井中。
注意:对于所有启用寄存器位,“1” = 启用,“0” = 禁用。
注意:SMI – 系统管理中断(System Management Interrupt)。
注意:BAR – 基址寄存器(Base Address Register)。
注意:MSE – 内存空间启用(Memory Space Enable)。
注意:SMI 与中断阈值无关。
7.2 xHCI 支持的协议功能
xHCI Supported Protocol Capability 。
所有 xHCI 实现都需要至少一个这些功能结构。支持多个总线协议的实现可以定义多个功能结构。有关更多信息,请参阅第 4.19.7 节。
7.2.1 协议速度 ID (PSI)
Protocol Speed ID (PSI) 。
在 xHCI 支持的协议功能数据结构中,协议速度 ID (PSI) Dword 紧跟偏移量为 10h 的 Dword。表 7-10 定义了 PSI Dword 的字段。
7.2.2 支持的协议
Supported Protocols 。
表 7-11 列出了本规范中定义的支持协议。
7.3 HCI 扩展电源管理功能
HCI Extended Power Management Capability 。
对于不支持基于 PCI 的系统接口的所有 xHC 实现,此功能都是必需的。
xHCI 扩展电源管理功能应使用 PCI PM 规范第 3.2 节中定义的电源管理寄存器块定义格式,但有以下例外。对于 xHCI,寄存器中 “Next Capability Pointer” 字段的定义已从 PCI 定义中修改。寄存器的 “Next Capability Pointer” 非零值表示从此 32 位字到第一个扩展功能的开头的相对偏移量(以 32 位字为单位)。
注意:有关寄存器定义和结构组织的详细信息,请参阅第 5.2.7 节。
7.4 xHCI 扩展消息中断功能
xHCI Extended Message Interrupt Capability 。
对于不支持基于 PCI 的系统接口的所有 xHC 实现,此功能或 xHCI 消息中断功能都是必需的。选择取决于 xHC 实现。
xHCI 扩展消息中断功能应使用 PCI 规范第 6.8.2 节中定义的 MSI-X 功能和表结构的格式,但有以下例外。对于 xHCI,寄存器中 “Next Capability Pointer” 字段的定义已从 PCI 定义中修改。寄存器的 “Next Capability Pointer” 非零值表示从此 32 位字到第一个扩展功能的开头的相对偏移量(以 32 位字为单位)。
注意:有关寄存器定义和结构组织的详细信息,请参阅第 5.2.8 节。
7.5 xHCI 消息中断能力
xHCI Message Interrupt Capability 。
对于不支持基于 PCI 的系统接口的所有 xHC 实现,此功能或 xHCI 消息中断功能都是必需的。选择取决于 xHC 实现。
xHCI 消息中断功能应使用 PCI 规范第 6.8.1 节中定义的 MSI 功能结构的格式,但有以下例外。对于 xHCI,寄存器中 “Next Capability Pointer” 字段的定义已从 PCI 定义中修改。寄存器的 “Next Capability Pointer” 非零值表示从此 32 位字到第一个扩展功能的开头的相对偏移量(以 32 位字为单位)。
注意:有关寄存器定义和结构组织的详细信息,请参阅第 5.2.8 节。
7.6 调试功能 (DbC)
Debug Capability (DbC) 。
xHC 提供的 USB 调试功能是一项可选功能,可通过 USB 进行低级系统调试。xHCI 调试功能提供了一种连接两个系统的方法,其中一个系统是调试主机,另一个是调试目标(被测系统)。
本节介绍调试目标用于向调试主机呈现调试设备的 xHCI USB 调试功能。调试设备完全符合 USB 框架。调试设备在调试主机和调试目标之间提供相当于高性能全双工串行链路的功能。
USB 调试功能提供的接口完全独立于本规范其他部分中描述的 xHCI 接口。本节介绍作为 xHCI 兼容控制器的一部分的 USB3 调试功能所需的实现和行为。 xHCI USB 调试功能的具体功能如下:
-
xHCI USB 调试功能提供的接口独立于操作系统使用的标准 xHCI 接口,例如,USBCMD 寄存器 R/S 标志对调试功能的操作没有影响。
-
如果 DbC 系统总线复位 (SBR) = ‘0’,则芯片硬件复位或主机控制器复位 (HCRST = ‘1’) 或轻型主机控制器复位 (LHCRST = ‘1’) 的断言应复位调试功能,或者如果 SBR = ‘1’,则芯片硬件复位、系统总线(例如,PCI RST# 的断言)或从 PCI PM D3hot 状态到 D0 状态的转换应复位 DbC。
-
仅适用于支持增强型超高速的主机。
-
调试功能会自动分配给第一个 xHCI 根集线器端口,该端口可检测到具有增强型超高速功能的根集线器或外部集线器的下游端口的连接。
-
分配给调试功能的根集线器端口通过 xHCI 显示为功能齐全的根集线器端口,永远不会看到设备连接。
-
只要端口未挂起且主机控制器处于 D0 电源状态,调试功能即可运行。
-
调试功能通过标准 USB3 集线器工作,允许使用单个主机调试大量系统。
-
支持高带宽数据传输。
此功能通过 xHCI 扩展功能指针 (xECP) 字段链接,并驻留在 MMIO 空间中。只要有可能,调试功能就会尝试重用为 xHCI 架构定义的逻辑块。例如,调试功能事件环管理寄存器块的操作和定义与第 5.5.2.3 节中定义的 xHCI 事件环寄存器相同,只是它提供了专用于调试功能的事件环。
由于调试功能为 USB 提供了一个“设备端”接口,用于管理设备的上游端口,而不是根集线器的下游端口,因此调试功能中的某些寄存器定义可能看起来与 xHCI 中的非常相似,但它们可能存在细微的差异以支持“设备端”操作。例如,调试功能 DCPORTSC 寄存器中的许多字段与 xHCI PORTSC 寄存器中的字段同名,但它们的工作方式不同,因为 DCPORTSC 寄存器应管理“设备端”操作。
调试功能还利用 xHCI 端点上下文数据结构;但是,它们的组织与 xHCI 不同。
注意:阅读以下部分中的寄存器定义时,请记住调试功能的“设备端”差异。
☆