Displaying an image on a MIPI DSI panel from U-Boot (i.MX8M Mini + TL070WSH30)

Hello,

I’m currently working on enabling MIPI DSI display output directly from U-Boot on a board based on i.MX8M Mini, using Yocto Kirkstone and U-Boot (April 2022 / NXP 2022.04).

My goal is to display an image or logo at U-Boot startup (before the kernel).

The hardware setup is:

  • SoC: i.MX8M Mini

  • Display interface: MIPI DSI

  • Panel: TDO TL070WSH30 (custom panel driver working under Linux)

  • U-Boot version: 2022.04 (NXP fork)

  • Yocto version: Kirkstone

Here is my DT nodes:

#include <dt-bindings/usb/pd.h>

#include “imx8mm.dtsi”

/ {

backlight: backlight {

status = “okay”;

compatible = “pwm-backlight”;

pwms = <&pwm3 0 2000000 0>;

brightness-levels = <0 4 8 16 32 64 128 255>;

default-brightness-level = <6>;

default-brightness-level = <80>;

default-on;

};

panel_gpio_regulator: panel_gpio_regulator {

compatible = “regulator-gpio”;

regulator-name = “mmci-gpio-supply”;

regulator-min-microvolt = <5000000>;

regulator-max-microvolt = <5000000>;

regulator-boot-on;

gpios = <&gpio4 19 GPIO_ACTIVE_HIGH>;

states = <5000000 0x1>;

enable-active-high;

status = “okay”;

};

dsi_host: dsi-host {

compatible = “samsung,sec-mipi-dsi”;

status = “okay”;

};

};

&lcdif {

status = "okay";

display = <&display0>;

display0: display@0 {

    bits-per-pixel = <24>;

    bus-width = <24>;

};

port@0 {

    lcdif_to_dsim: endpoint {

        remote-endpoint = <&dsim_from_lcdif>;

    };

};

};

&mipi_dsi {

status = "okay";

port@0 {

    dsim_from_lcdif: endpoint {

        remote-endpoint = <&lcdif_to_dsim>;

    };

};

port@1 {

    dsim_to_panel: endpoint {

        remote-endpoint = <&panel_from_dsim>;

    };

};

panel@0 {

    compatible = "tdo,tl070wsh30";

    reg = <0>;



    pinctrl-0 = <&pinctrl_mipi_dsi>;

    pinctrl-names = "default";

    reset-gpios = <&gpio4 4 GPIO_ACTIVE_LOW>;

    enable-gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>;



    backlight = <&backlight>;

    power-supply = <&panel_gpio_regulator>;



    dsi-lanes = <4>;

    video-mode = <0>;



    status = "okay";

    port {

        panel_from_dsim: endpoint {

            remote-endpoint = <&dsim_to_panel>;

        };

    };

display-timings {

        native-mode = <&timing0>;

        timing0: timing0 {

            clock-frequency = <51200000>;

            hactive = <1024>;

            vactive = <600>;

            hfront-porch = <46>;

            hback-porch = <100>;

            hsync-len = <80>;

            vfront-porch = <5>;

            vback-porch = <20>;

            vsync-len = <5>;

        };

    };

};

};

When U-Boot initializes, I get this message:

[*]-Video Link 0
mxs_video lcdif@32e00000: required display property isn’t provided
probe video device failed, ret -22

[0] lcdif@32e00000, video
[1] mipi_dsi@32e10000, video_bridge

And from dm tree:

video 0 mxs_video |-- lcdif@32e00000
video_brid 0 imx_sec_dsim |-- mipi_dsi@32e10000
syscon 4 syscon |-- display-gpr@32e28000
dsi_host 0 sec_mipi_dsim |-- dsi-host
regulator 0 gpio regulator |-- panel_gpio_regulator

As you can see, the panel is not probed at all in U-Boot, and the error indicates display property isn’t provided, although I have set display = <&display0> in the LCDIF node.

My questions

  • Is there any required bridge binding or DSI host node missing for the i.MX8MM in U-Boot?

  • What is the correct DT structure for LCDIF → MIPI DSI → panel pipeline in U-Boot ?

  • Finally, is there a working example for MIPI DSI panel output in U-Boot on i.MX8M Mini?

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


I understand you’re working on enabling MIPI DSI display output from U-Boot on an i.MX8M Mini-based board. However, I need to clarify that this question falls outside my scope of support.

Scope Limitation

Based on the information you’ve provided, you’re working with:

  • An i.MX8M Mini-based board (not specifically a Toradex module)
  • U-Boot configuration (rather than Torizon OS/TorizonCore)
  • Yocto Kirkstone BSP customization

My support is focused on Toradex embedded Linux software including TorizonCore, Torizon OS, and Toradex Yocto-based BSPs running on Toradex System-on-Modules.

Toradex Alternative Solutions

If you’re interested in MIPI DSI display support with proven Toradex solutions, I’d recommend considering:

Verdin iMX8M Mini

The Verdin iMX8M Mini supports MIPI DSI output and can be configured using Device Tree Overlays(1). For display configuration, the MIPI DSI output can be converted using available Verdin display adapters(2).

Display Configuration Approach

For Toradex modules, display configuration is typically handled through:

  • Device Tree Overlays for hardware customization(1)
  • Pre-configured overlays available in /boot/overlays(2)
  • Modification of overlays.txt file to enable specific display configurations(2)

Community Resources

For your specific U-Boot + i.MX8M Mini setup, you might find relevant discussions in the community forums, such as the MIPI DSI configuration examples(3) that show device tree structures for MIPI DSI panels.

If you’d like to explore Toradex solutions for your display requirements, I’d be happy to help you understand how to configure MIPI DSI displays on Toradex modules using TorizonCore or our Yocto BSPs.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Hi @Nidha!

Before we proceed with the support, could you please confirm if using a Verdin iMX8M Mini?
If so, please share the output of tdx-info command.

Best regards.