综述: PCIE有PM和ASPM两种功耗管理模式,USB只有一种
USB有U1/U2/U3三种低功耗模式
本文只针对U1进行分析
如下图所示,为主要状态变换
背景知识
- U1是一种低功耗模式,定义的是link的状态不是设备的状态
- 发送LGO_X进入低功耗模式,需要双次应答的,具体自行看LAU/LXU等
- LFPS很重要,是比较重要的
实现机制
通过LGO_U1进入U1,没有第二种途径,所以USB U1控制很简单
推出的时候就有很多选择了,依据大概有两种:1 外界引入的影响 2 进入更深层次的低功耗,这都是套路,和PCIE一样
详细一点
看LFPS ,握手成功,就回到向U0的状态,注意不能直接进入U0,所有的恢复都需要到recory状态,这个牵扯到训练的问题,具体的不再赘述。
如果LFPS握手失败,那不好意思可以重头再来,不过注意此时还是有电源的,所以并不是disable.
此时有最熟悉的warm reset这时候,会进入RX.detect, 否则直接进入ess.inactive状态。更暴力VBUS移除,那就彻底玩完,disable。至于为什么区分inactive和disable两个状态, 留给读者思考