We're using an i.MX8M Mini EVK based board with UART4(ttymxc3) as the console. However, the boot process gets stuck on the call to clk_disable_unused where the kernel tries to disable clocks set up by U-Boot that it deems unnecessary. With some printk debugging we found that the call is hanging up while trying to disable a clock named arm_a53_div.
The board seems to boot fine when we use the kernel command line parameter clk_ignore_unused, further confirming the issue.
Is there a way to mark the arm_a53_div as a core clock in the device tree?
You can refer to this thread:
https://community.nxp.com/t5/Blogs/How-to-Change-i-MX8MM-evk-Linux-Debug-UART/ba-p/1243938#M40
Thanks for your response. Unfortunately the modifications suggested in the post don't seem to be working for us. Our objective is to do this for ARM System Ready IR, and therefore we're not able to make changes to the kernel (linux-imx).
The only way we have been able to get uart4 working as a console is by manually editing the following registers from the u-boot prompt:
u-boot=> mw.l 0x303844c0 0x3 1; mw.l 0x303304B4 0x140 1; mw.l 0x3033024C 0x0 1; mw.l 0x3033050C 0x2 1; mw.l 0x303304B8 0x140 1; mw.l 0x30330250 0x0 1; mw.l 0x303D0518 0xFF 1; mw.l 0x30A60080 0x0 1; mw.l 0x30A60084 0x0 1; mw.l 0x30A60088 0x784 1; mw.l 0x30A6008C 0x8000 1; mw.l 0x30A6009C 0x2B 1; mw.l 0x30A600A0 0x0 1; mw.l 0x30A600B4 0x0 1; mw.l 0x30A60090 0xA01 1; mw.l 0x30A600A4 0xF 1; mw.l 0x30A600A8 0x68 1; mw.l 0x30A60084 0x4027 1; mw.l 0x30A60080 0x1 1
You can refer to https://community.nxp.com/t5/i-MX-Processors/Can-t-enable-UART4-on-imx8mm-using-Device-Tree/m-p/1376....
Command to download imx-boot
# sudo uuu -b spl imx-boot