AnsweredAssumed Answered

USB fatal error

Question asked by Clement Østergaard on Dec 17, 2013
Latest reply on Jan 10, 2014 by Clement Østergaard


We have experienced a fatal usb error that occurs both on our own custom board, using a modified mainline Linux 3.10, and on the imx28-evk, using the BSP L2.6.35_1.1.0_130130_source.tar.gz.

On our custom board, we have seen it sometimes during loading of the usb driver, and consistently when changing the speed while the usb is in use. On the imx28-evk, in happens consistently when changing speed, and we can not rule out if it happens during load as well.

To recreate it, attach an USB-to-serial adapter and run the following two commands:

cat /dev/ttyUSB0 &

echo 360000 >  /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed



fsl-ehci fsl-ehci.0: fatal error

fsl-ehci fsl-ehci.0: force halt; handshake c88fe144 00004000 00004000 -> -110

fsl-ehci fsl-ehci.0: HC died; cleaning up

usb 2-1: USB disconnect, address 3

pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0

pl2303 2-1:1.0: device disconnected


On mainline 3.10:

ci_hdrc ci_hdrc.1: fatal error

ci_hdrc ci_hdrc.1: fatal command 0010024 (park)=0 ithresh=1 Async period=512 HALT

ci_hdrc ci_hdrc.1: fatal status 8090 Async FATAL

ci_hdrc ci_hdrc.1: HC died; cleaning up



From what I can tell, the error is caused by bit 4 in HW_USBCTRL_USBSTS, SEI being set to 1 ( Linux/drivers/usb/host/ehci-hcd.c - Linux Cross Reference - Free Electrons ). Printing out the register (0x80090144) from the function, shows that the bit is set.

According to the Reference Manual, "This bit is not used in this implementation and will always be set to 0."

Has anyone else experienced this, and is the Reference Manual correct, or does a situation exist that will cause the bit to be set?