我是USB电源管理的新手,我需要实现USB运行时挂起和恢复。 我的开发板有DWC3 USB控制器。根据规范,这个DWC3控制器产生SUSPEND中断3.5毫秒。
我想知道如何配置此控制器,以便它可以生成SUSPEND / RESUME中断。我提到了Linux USB驱动程序,但我找不到合适的信息。
如果可能,请提供详细信息。
答案 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寄存器中注册休眠事件。