Skip to content

[scarthgap] imx8mm-lpddr4-evk machine gets stuck in a loop while booting when DSI-to-HDMI converter is connected #2498

@dv1

Description

@dv1

In scarthgap, I cannot boot the imx8mm-lpddr4-evk machine when the IMX-MIPI-HDMI MIPI-DSI to HDMI adaptor card is connected to the EVK's DSI port. I tried out whinlatter, and the problem is not present there.

The boot log is:

imx8mm-lpddr4-evk-dsi-log.txt

The logs show this circular dependency:

[    0.046854] /soc@0/bus@30800000/i2c@30a30000/adv7535@3d: Fixed dependency cycle(s) with /soc@0/bus@32c00000/mipi_dsi@32e10000
…
[    0.047254] /soc@0/bus@32c00000/mipi_dsi@32e10000: Fixed dependency cycle(s) with /soc@0/bus@30800000/i2c@30a30000/adv7535@3d

If I see this correctly, the issue is that the ADV7535 isn't ready by the time the imx_sec_dsim_drv DSI controller tries to attach it as a bridge. This attachment is deferred, the ADV7535 later probes again, and this in turn triggers another attachment attempt, which is again defered etc. But I am not knowledgeable enough in kernel matters to be certain.

I did observe a problem in the U-Boot config though:

imx8mm-lpddr4-evk-dsi-problem-u-boot-config.txt

The nodes list contains devicetree nodes that the sr_ir_v2_cmd removes before handing the DTB to the kernel. And this list includes mipi_dsi@32e10000, lcdif@32e00000, display-subsystem, and adv7535@3d - nodes involved in the infinite loop. Why this removal is done is not known to me. But, it does not work properly, because bootcmd runs run sr_ir_v2_cmd;run distro_bootcmd;run bsp_bootcmd, bsp_bootcmd calls run mmcboot, which ultimately calls loadfdt, thus wiping any changes made by the sr_ir_v2_cmd.

A quick hack made the board boot, although without a video output signal:

setenv strip_nodes 'fdt addr ${fdt_addr_r}; for i in ${nodes}; do fdt rm ${i}; done'
setenv mmcboot 'echo Booting from mmc ...; run mmcargs; if test ${boot_fit} = yes || test ${boot_fit} = try; then bootm ${loadaddr}; else if run loadfdt; then run strip_nodes; booti ${loadaddr} - ${fdt_addr_r}; else echo WARN: Cannot load the DT; fi; fi;`
boot

(fdtfile was explicitly set to imx8mm-evk-revb-qca-wifi.dtb in this config, but the problem also happens with the default imx8mm-evk.dtb file.)

Also: An unrelated typo in nodes is present: /audo-codec-bt-sco, which probably should be /audio-codec-bt-sco.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions