imx8mm/imx8mn hang on usb stop / ehci_shutdown

Tim Harvey tharvey at
Wed Mar 15 23:01:44 CET 2023


I'm seeing a hang on imx8mm-venice and imx8mn-venice boards which have
a USB host controller in host mode when ehci_shutdown() is called
(which is called for 'usb stop' as well as when booting a kernel once
'usb start' has been issued).

This appears to be caused by the ehci_shutdown() function,
specifically the write to the or_portsc register to set EHCI_PS_SUSP:
                for (i = 0; i < max_ports; i++) {
                        reg = ehci_readl(&ctrl->hcor->or_portsc[i]);
                        reg |= EHCI_PS_SUSP;
                        ehci_writel(&ctrl->hcor->or_portsc[i], reg);

Does anyone else out there with an imx8mm/imx8mn board with usbotg1 or
usbotg2 configured with dr_mode="host" see this as well?

I'm not clear where the equivalent code would be in the Linux kernel
to compare with. I do know that commenting out the ehcI_write above
keeps ehci_shutdown from hanging but does cause the handshake to fail
on the next cmd that disables CMD_RUN and thus prints "EHCI failed to
shut down host controller.".

Any ideas?

Best Regards,


More information about the U-Boot mailing list