链路电源管理中的L2状态

时间:2017-07-11 06:31:01

标签: linux usb power-management suspend

我有一项任务,我需要在链路电源管理中实现L2挂起状态。我使用开发板,它有与PHY接口的DWC3 usb控制器。基本上我们的主板使用Linux usb DWC3驱动程序并连接到主机。

我的理解是USB控制器在3.125毫秒的总线不活动后产生SUSPEND信号。 谁能告诉我如何配置这个控制器来实现L2挂起状态?

1 个答案:

答案 0 :(得分:0)

在您当前的设置中,您的主板处于设备/小工具模式,并且您已连接到主机。 请记住,USB设备无法驱动挂起信号。它应该由Host启动。

暂停USB 2.0设备的过程 -

  
    

1 - USB主机没有要发送的数据,当前正在发送SOF帧     2 - 主机SW通过在EHCI / XHCI控制器中设置suspend / U3来暂停设备     3 - 现在USB设备在没有SOF的总线中看到空闲状态
    4 - 大约3 ms后,设备硬件通过将其终端接地并连接内部上拉寄存器开始自行挂起     5 - 然后设备再次轮询线路以查看主机是否已移除其终止     6 - 由于主机已删除终止,设备将暂停

  

暂停USB 3.0设备的过程 -

  
    

1 - USB主机没有要发送的数据
    2 - 主机SW通过在XHCI控制器中设置U3来暂停设备     3 - 主机开始发送LGO_U3链接命令以启动暂停信令
    4 - 设备收到LGO_U3命令后,将确认并开始暂停

  

总而言之,从USB设备开始,您无法启动暂停信令。您只能设置设备堆栈的内部状态。

EDIT 1 - 此暂停过程适用于USB 2.0 /高速设备。如果您的主板是通过SS端口连接到主机的超高速/ USB 3.0设备,则链路级别的过程略有不同,但从用户的角度来看没有区别。
编辑2 - 我现在已经用USB 2.0和USb 3.0设备的暂停过程更新了答案