Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: imx6qdl-udoo: Disable USB host to work around boot issues

Attempting to boot my Udoo Dual and Quad with mainline hangs during boot
after printing:

[ 3.270471] imx_usb 2184000.usb: No over current polarity defined
[ 3.922502] mxs_phy 20c9000.usbphy: Data pin can't make good contact.
[ 3.940097] imx_usb 2184200.usb: No over current polarity defined

where imx_usb 2184200.usb is usbh1 in the DT. Adding debug prints to the
code seems to show that we lock up at the first read in usbmisc_imx6q_init()
which in combination with the above logging about the USB controllers
suggests that we lock up on the first read in usbmisc_imx6q_init(). Looking
at some of the other i.MX6 boards and the warning messages that are being
printed suggests that there is bitrot in the DTS for the device so disable
it for now, with it disabled the board boots successfully. Clearly this is
not a real fix, but it does allow some use of the board with mainline.

Similar behaviour is seen all the way back as far as v4.19, I tried going
back to when the board was added but had toolchain issues. Vendor provided
binaries seem fine on the boards so it seems likely that the hardware is
fine and the issue is with some combination of the DT and kernel. This
should obviously be resolved properly but for now this at least allows
the kernel to boot with reduced functionality on these systems.

Signed-off-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>

authored by

Mark Brown and committed by
Shawn Guo
8f2ca252 552de48b

+1 -1
+1 -1
arch/arm/boot/dts/imx6qdl-udoo.dtsi
··· 295 295 pinctrl-0 = <&pinctrl_usbh>; 296 296 vbus-supply = <&reg_usb_h1_vbus>; 297 297 clocks = <&clks IMX6QDL_CLK_CKO>; 298 - status = "okay"; 298 + status = "disabled"; 299 299 }; 300 300 301 301 &usbotg {