在DWC3 USB控制器中USB运行时挂起和恢复实现

时间:2017-06-30 09:07:03

标签: usb resume power-management suspend

我是USB电源管理的新手,我需要实现USB运行时挂起和恢复。 我的开发板有DWC3 USB控制器。根据规范,这个DWC3控制器产生SUSPEND中断3.5毫秒。

我想知道如何配置此控制器,以便它可以生成SUSPEND / RESUME中断。我提到了Linux USB驱动程序,但我找不到合适的信息。

如果可能,请提供详细信息。

2 个答案:

答案 0 :(得分:0)

好的,让我修一些你用过的术语。

它称为Suspend信令和Resume信令。

  
    

根据规范,这个DWC3控制器会产生SUSPEND中断3.5毫秒。

  

这是一般要求。连接到主机的任何USB设备或集线器在总线上看到3 ms的空闲信令/状态时将开始转换到挂起状态。

  
    

我想知道如何配置此控制器,以便它可以生成SUSPEND / RESUME中断。

  

再次它不是中断,它的信令。你无法生成这些信号。这些将由控制器生成。你必须告诉控制器开始暂停信号。
这可以通过用链接状态U3写PORTSC寄存器来完成。

  
    

我提到Linux USB驱动程序,但我找不到合适的信息。

  

正如我所说,您必须编写链接状态U3以启动Suspend信令,请查看下面关于如何启用挂起和恢复信令的驱动程序/ usb / core / hub.c中的API。

usb_port_suspend()
usb_port_resume()

编辑1-要了解有关挂起和恢复信令的更多信息,请参阅USB 3.0规范。

编辑2 - 请记住,在集线器的情况下,USB 3.0规定不再支持全局暂停。所以它始终是一个特定的端口暂停在集线器上。

编辑3 - 要求暂停3毫秒的要求是USB 2.0特有的,它对USB 3.0端口无效。

答案 1 :(得分:0)

我的理解是错误的,没有要求。我必须实现USB休眠(L2暂停)功能。为此,当主机挂起时,我们会收到一个事件“休眠事件”。现在该功能已实现并且可以正常工作。需要从DWC3控制器的DEVENT寄存器中注册休眠事件。