usb 控制器挂掉fsl-ehci fsl-ehci.0: HC died; cleaning up

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

usb 控制器挂掉fsl-ehci fsl-ehci.0: HC died; cleaning up

4,587 Views
maqicheng
Contributor I

Dear sir 

  我们在做项目时遇到  usb 控制器挂掉问题,   导致usb 后续无法识别u盘. 重启可以恢复.

详细log 见附件,  问题发生时也导出了usb相关寄存器信息:

出问题时两个状态位是异常,对硬件而言代表着什么变化,或者哪些情况才有可能有下面这种情况产生
在USBC_n_PORTSC1 中。CSC bit 变成1了, 有链接状态改变上来了,PE bit变成0了, 认为现在这个port 变成disable的了。

该寄存器仅仅从datasheet 上看没有很明确的说法,怀疑是硬件稳定性问题,

请问是否可以从cpu 角度对该问题,该寄存器有更确切的说明或者说导致问题的可能性.

<6>[10687.516530] usb 2-1: majun2 oldspeed 0 udev->speed 3
<6>[10687.516543] usb 2-1: new high speed USB device number 38 using fsl-ehci
<6>[10687.667062] hub 2-0:1.0: perform initial device setup (usbcore-internal)
<3>[10687.667906] usb 2-1: device v2a45 p0c02 is not supported
<6>[10687.667917] usb 2-1: udev 38, busnum 2, minor = 165
<6>[10687.672229] hub 2-0:1.0: status: 0
<6>[10687.675561] hub 2-0:1.0: port 1, status 0100, change 0003, 12 Mb/s
<6>[10687.675573] usb 2-1: USB disconnect, device number 38
<3>[10687.677397] fsl-ehci fsl-ehci.0: fatal error
<3>[10687.678288] fsl-ehci fsl-ehci.0: HC died; cleaning up
<3>[10687.716525] hub 2-0:1.0: hub_port_status failed (err = -19)
<3>[10687.716539] hub 2-0:1.0: connect-debounce failed, port 1 disabled

追了下代码和文档, 但还是无法分析出根本原因,  
fsl-ehci fsl-ehci.1: fatal error
fsl-ehci fsl-ehci.1: force halt; handshake d997e344 00004000 00004000 -> -110

从log上看出问题时候 echi的状态寄存器的值是 d997e344
出现这个错误的根本原因从逻辑上看是,在ehci_irq被触发之后,首先判断到
if (status == ~(u32) 0) {
ehci_dbg (ehci, "device removed\n");
goto dead;
}
设备是没有被移除的。当设备移除时 status 应该是FFFF...
然后由于此时的status寄存器的值是 d997e344,会出发sys_fatal的检测逻辑, STS_FATAL的值是
1<<2,所以会满足下面的判断条件。

if (unlikely ((status & STS_FATAL) != 0)) {
ehci_err(ehci, "fatal error\n");
dbg_cmd(ehci, "fatal", cmd);
dbg_status(ehci, "fatal", status);
ehci_halt(ehci);


而从imx6 echi的寄存器介绍中可以看到USB Status Register (USB_nUSBSTS) 的第三个bit是PCI

pastedImage_3.png

大致理解是在出现Port Change Events事件时,才会把Port Change Detect bit(也就是上面提到的PCI
pin)设置成1。
在从imx6的文档上进一步看 port change events的触发条件

pastedImage_4.png

从逻辑上看 在设备正常保持插入状态时,上面4个状态是都不应该被触发的,软件上也没有在非报错
的情况下主动触发的逻辑,从目前拿到的log上看问题是突然接受到ehci_irq出现的,之前并没有usb
通信相关的err产生。目前判断应该是由某个硬件状态改变引起的。
这几个状态是由 “Port registers contain status and status change bits” 表示的,
对应的寄存器是 “65.6.31 Port Status & Control (USB_nPORTSC1)”

pastedImage_5.png

pastedImage_6.png

Labels (2)
0 Kudos
4 Replies

3,403 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hi,

    Would you please send your schematic to me?  (whole schematic)

Have a nice day!

Weidong sun

0 Kudos

3,403 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Any update?

if you are not convenient to submit your schematic here, please create a case on website for it , and attach your schematic!

Regards,

Weidong Sun

0 Kudos

3,403 Views
maqicheng
Contributor I

Dear Sun 

Thank you very much for your reply !

This is our mass production project, which is not suitable for uploading the schematic diagram.

Would you plz give us your emal ?  

3ks 

0 Kudos

865 Views
MasterLu
Contributor II

I have encountered a similar problem. Have you resolved this issue?

myd-jx8mp login: [   14.046169] xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command.
[   14.054270] xhci-hcd xhci-hcd.0.auto: USBSTS:
[   14.066693] xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
[   14.074620] xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
[   14.080276] usb usb1-port1: couldn't allocate usb_device
[   14.085762] usb usb3-port1: couldn't allocate usb_device

 

0 Kudos