【发布时间】:2021-07-31 20:09:43
【问题描述】:
我在 omap3 处理器上使用 Linux 4.19.55 armv7l。在我的目标上,有一个 USB 调制解调器,它从一个 gpio 引脚值(在 /sys/class/gpio 下定义)获取电源。有时我更改此 gpio 引脚的 value 参数以降低硬件,同时我经常收到错误(由 musb_handle_intr_disconnect 从内部 drivers/usb/musb/musb_core.c 抛出),如下所示:
“musb_handle_intr_disconnect 843:未处理的 DISCONNECT 转换(a_idle)”
我尝试通过挂载 debugfs 并使用 usbmon 从相关总线捕获数据来调试问题。总线 ID 从 lsusb 输出中识别并通过观察 /sys/kernel/debug/usb/devices 确认。我观察到,只要出现上述错误,usbmon 就无法捕获数据。在没有错误的情况下,usbmon 会捕获来自相关总线的流量。请帮助如何调试此问题。
【问题讨论】:
-
我们现在处于 v5.13-rc1。 v5.10 是 LTS,你能在其中一个上重现吗?
-
是的,这个问题在最新的内核上也可以重现。我花了一些时间来升级驱动程序的版本。我发现最新内核也存在问题。
-
嗯...在切换 GPIO 之前,调制解调器的驱动程序不应该关心总线静止吗?如果没有内核端驱动,恐怕你也无能为力。我建议将电子邮件发送到 linux-usb@ 邮件列表。
-
内核端 USB 驱动程序是在集线器下的任何总线上取消注册设备的驱动程序。 usb 驱动程序的状态机的处理仍在随着每个新内核的发展而发展。其中一项提交帮助我解决了这个问题。
标签: usb linux-device-driver embedded-linux usb-debugging