系列文章目录
XHCI 1.2b 规范摘要(一)
XHCI 1.2b 规范摘要(二)
XHCI 1.2b 规范摘要(三)
XHCI 1.2b 规范摘要(四)
XHCI 1.2b 规范摘要(五)
XHCI 1.2b 规范摘要(六)
XHCI 1.2b 规范摘要(七)
XHCI 1.2b 规范摘要(八)
文章目录
- 系列文章目录
- 4 运营模式(Operational Model)
- 4.23 电源管理(Power Management)
- 4.23.1 电源井(Power Wells)
- 4.23.2 xHCI 电源管理(xHCI Power Management)
- 4.23.2.1 保存和恢复操作(Save and Restore Operations)
- 4.23.3 PCI 电源管理(PCI Power Management)
- 4.23.3.1 标准 PCI 电源管理(Standard PCI Power Management)
- 4.23.3.2 PCI 扩展电源管理(PCI Extended Power Management)
- 4.23.4 USB 电源管理(USB Power Management)
- 4.23.4.1 USB2
- 4.23.4.2 USB3
- 4.23.4.3 USB 供电(USB Power Delivery)
- 4.23.5 USB Link 电源管理(USB Link Power Management)
- 4.23.5.1 根集线器端口 LPM 支持(Root Hub Port LPM Support)
- 4.23.5.2 最大退出延迟(Max Exit Latency)
- 4.24 主机控制器管理(Host Controller Management)
- 4.24.1 内部错误(Internal Errors)
- 4.24.2 端口到连接器的映射(Port to Connector Mapping)
- 4.24.2.1 根集线器端口到外部端口的分配
- 4.24.2.2 外部端口到 USB 连接器的映射
- 4.24.2.3 映射举例(Mapping Example)
- 4.25 基于 USB 虚拟化的可信 IO 管理 (USB VTIO)
- 4.25.1 VTIO 使用和要求(VTIO Usage and Requirements)
- 4.25.1.1 数据结构的含义(Data Structure Implications)
- 4.25.1.2 其他内存访问(Other Memory Access)
- 4.25.2 DMA-ID 分配的管理(Management of DMA-ID Assignment)
4 运营模式(Operational Model)
4.23 电源管理(Power Management)
本节总结了 xHCI 的各种电源管理功能。
在本规范中,将从电源传输角度确定需要特别考虑的特定寄存器和功能。本规范中有关电源传输的任何讨论的主要目的是提高各种实现之间的互操作性,而不指定特定的电源传输方法。短语“需要在电源周期内保持状态”;或对为支持主机控制器的电源管理功能而明确定义的配置、命令和状态寄存器的引用将帮助读者识别需要特别注意的那些构造。
读者还应注意,常见的行业规范可能会施加特定的电源传输要求,设计必须符合这些要求才能符合该行业标准。
注意:本节提供的规范和白皮书参考资料并非详尽的清单,鼓励读者参考可能与设计人员的具体实现相关的其他规范。
4.23.1 电源井(Power Wells)
本节介绍核心电源(Core Power)和辅助电源(Auxiliary Power,辅助)井的预期功能。系统板/附加卡 xHC 实现上的电源井要求包括:
- 整个系统有一个公共接地层 。
- 允许使用分压(即辅助电源和核心电源)井。
- 只要将交流电源应用于系统(如果支持),辅助电源井电压供应就应存在。
- 系统可以关闭核心电源。
辅助电源井中的寄存器在与核心井中的寄存器不同的条件下重置。在以下情况下,辅助电源井、内存空间寄存器将初始化为其默认值:
- 辅助电源井的初始通电,或
- HCRST 中的值为 “1”(请参阅第 5.4.1 节)
注意:USB 传统支持功能寄存器是辅助电源井重置规则的一个例外。有关更多信息,请参阅 “Pre-OS to OS Handoff Synchronization” 部分。
在以下情况下,核心井、内存空间寄存器将初始化为其默认值:
- 芯片硬件复位声明,或
- HCRST 中的值为 “1”,或
- 从 PCI PM D3hot 状态转换为 D0 状态
辅助电源井中实现的 PCI 配置空间寄存器的复位条件与核心井中的寄存器不同。辅助电源井配置空间寄存器在以下情况下初始化为其默认值:
- 辅助电源井的初始通电。
在以下情况下,核心井 PCI 配置空间寄存器将初始化为其默认值:
- 系统(核心井)硬件复位声明,或
- 从 PCI PM D3hot 状态转换为 D0 状态。
首次通电或 HCRST(芯片硬件复位或通过 USBCMD 寄存器中的 HCRST 位)后,所有操作和运行时寄存器应保持其默认值,如第 5.4 和 5.5 节中定义。在“轻度”硬件复位(通过 USBCMD 寄存器中的轻度主机控制器复位 (LHCRST) 位)后,只有辅助电源井中未包含的操作和运行时寄存器应保持其默认值。辅助电源井中的所有寄存器应保持在断言轻度主机控制器复位 (LHCRST) 之前断言的值。有关更多信息,请参阅第 5.4.1 节。
这些复位条件的例外情况将在相关寄存器部分中定义。
注意:启用或禁用核心电源井电压供应的方法(例如,从 D3hot 状态转换为 D3cold 状态)超出了本规范的范围。通常使用平台级电源控制机制。
4.23.2 xHCI 电源管理(xHCI Power Management)
当系统软件决定关闭 xHC 电源,以便稍后恢复操作时,它应读取 xHC 寄存器并保存其状态。在启动 xHC 后,但在将 xHC 置于运行模式(运行/停止 (R/S) = ‘1’)之前,系统软件应恢复所有 xHC 寄存器。
此外,xHC 实现会维护软件无法通过其寄存器组看到的内部状态。还应保存和恢复此状态,以便 xHC 正确地从电源事件中恢复,例如,与 ERDP 相关的内部环周期状态 (RCS) 标志、启用设备插槽集等。xHCI 提供两个控制标志来启用此操作:保存状态(Save State)和恢复状态(Restore State)。这些标志作为位驻留在 USBCMD 寄存器中。
仅当 xHC 停止(运行/停止 (R/S) = ‘0’)时,才可以设置保存状态和恢复状态标志。
保存 xHC 状态并关闭电源所需的系统软件步骤如下:
- 通过对运行状态下的繁忙端点发出停止端点命令来停止所有 USB 活动。如果不支持强制保存上下文功能 (Force Save Context Capability,FSC = ‘0’),则还应对运行状态下的所有空闲端点发出停止端点命令。停止端点命令(Stop Endpoint Command)会导致 xHC 更新系统内存中的相应端点或流上下文,例如 TR 出队指针、DCS 等字段。请参阅实施说明 “0” 。
注意:所有符合 xHCI 1.1 和 xHCI 1.2 的 xHC 都必须强制支持强制保存上下文功能(Force Save Context Capability,即 FSC = ‘1’)。
- 确保命令环处于停止状态(CRR = ‘0’)或空闲状态(即命令传输环为空),并且已收到与其相关的所有命令完成事件。
- 通过设置 Run/Stop (R/S) = ‘0’ 来停止控制器。
- 如果 FSC = ‘1’,则软件应确保在清除 Run/Stop (R/S) 时,任何未收到停止端点命令的运行端点都处于空闲状态。
- 按以下顺序 Operational Runtime 和 VTIO 寄存器:USBCMD、DNCTRL、DCBAAP、CONFIG、ERSTSZ、ERSTBA、ERDP、IMAN、IMOD 和 VTIO 并保存其状态。
- 设置 USBCMD 寄存器 (5.4.1) 中的控制器保存状态 (CSS,Controller Save State) 标志,并等待 USBSTS 寄存器 (5.4.2) 中的保存状态状态 (SSS,Save State Status) 标志转换为 ‘0’。
- 保存状态(Save State)操作应将所有内部 xHC 槽、端点、流或其他状态保存到步骤 6 和 7 中描述的内存位置,这对于成功恢复 xHC 状态是必要的,如下所述。
- 如果 Max Scratch Pad Buffers > ‘0’ 且 Scratchpad Restore (SPR) = ‘1’,则保存暂存区缓冲区(Scratchpad Buffers)的图像。
- 保存 xHC 引用的 DCBAA、上下文和其他数据结构的内存图像。
- 移除 Core Well 电源。
4.23.2.1 保存和恢复操作(Save and Restore Operations)
4.23.3 PCI 电源管理(PCI Power Management)
4.23.3.1 标准 PCI 电源管理(Standard PCI Power Management)
4.23.3.2 PCI 扩展电源管理(PCI Extended Power Management)
4.23.4 USB 电源管理(USB Power Management)
4.23.4.1 USB2
4.23.4.2 USB3
4.23.4.3 USB 供电(USB Power Delivery)
4.23.5 USB Link 电源管理(USB Link Power Management)
4.23.5.1 根集线器端口 LPM 支持(Root Hub Port LPM Support)
4.23.5.2 最大退出延迟(Max Exit Latency)
4.24 主机控制器管理(Host Controller Management)
4.24.1 内部错误(Internal Errors)
4.24.2 端口到连接器的映射(Port to Connector Mapping)
4.24.2.1 根集线器端口到外部端口的分配
Root Hub Port to External Port Assignment 。
4.24.2.2 外部端口到 USB 连接器的映射
External Port to USB Connector mapping 。
4.24.2.3 映射举例(Mapping Example)
4.25 基于 USB 虚拟化的可信 IO 管理 (USB VTIO)
USB Virtualization Based Trusted IO Management (USB VTIO) 。
4.25.1 VTIO 使用和要求(VTIO Usage and Requirements)
4.25.1.1 数据结构的含义(Data Structure Implications)
4.25.1.2 其他内存访问(Other Memory Access)
4.25.2 DMA-ID 分配的管理(Management of DMA-ID Assignment)
☆