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

DWC3 USB控制器中USB运行时挂起和恢复的实现,usb,resume,power-management,suspend,Usb,Resume,Power Management,Suspend,我是USB电源管理新手,我需要实现USB运行时暂停和恢复。 我的开发板有DWC3 USB控制器。根据规范,该DWC3控制器产生3.5毫秒的暂停中断 我想知道如何配置该控制器,使其能够生成挂起/恢复中断。我参考了Linux USB驱动程序,但找不到合适的信息 如果可能,请向我提供详细信息。好的,让我修正一下您使用的一些术语 它被称为暂停信令和恢复信令 根据规范,该DWC3控制器产生3.5毫秒的暂停中断 这是一般要求。任何连接到主机的USB设备或集线器在总线上看到3毫秒的空闲信号/状态时,将开始转换

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

我想知道如何配置该控制器,使其能够生成挂起/恢复中断。我参考了Linux USB驱动程序,但找不到合适的信息


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

好的,让我修正一下您使用的一些术语

它被称为暂停信令和恢复信令

根据规范,该DWC3控制器产生3.5毫秒的暂停中断

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

我想知道如何配置该控制器,使其能够生成挂起/恢复中断

这不是中断,而是信号。你不能产生这些信号。这些将由控制器生成。您必须告诉控制器开始挂起信号。
这可以通过使用链接状态U3写入PORTSC寄存器来完成

我参考了Linux USB驱动程序,但找不到合适的信息

正如我所说,您必须写入链路状态U3才能开始挂起信令,请检查drivers/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端口无效。

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

非常感谢。我会按照你的建议去做。@user3267021又添加了一个我忘记提到的编辑Hi Shaibal,即使我将控制器配置为挂起签名,我如何知道挂起信号已经出现?有回调方法吗?我对这个概念很陌生。暂停不会引起任何中断。当您开始任何USB传输时,恢复链接将使链接脱离重置状态。要进行验证,可以连接USB分析仪查看链路状态,也可以连接万用表查看电流消耗。在挂起模式下,设备将消耗微安。我正在询问代码实现。我怎样才能知道控制器发出了暂停信号?有回调函数吗?