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 #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? Re: Displaying an image on a MIPI DSI panel from U-Boot (i.MX8M Mini + TL070WSH30) Hello,
The error message "required display property isn't provided" indicates a missing connection in the display chain. By default, U-Boot on i.MX8M Mini supports the display path "LCDIF - MIPI-DSI - av7535 - HDMI", but you need to use "LCDIF - MIPI-DSI - MIPI panel" configuration instead. To resolve this issue, you need to: 1. Modify either your device tree or the video link ID in U-Boot to support your custom TL070WSH30 panel directly. 2. For the device tree structure, the correct pipeline for LCDIF → MIPI DSI → panel should include: - Proper panel driver nodes - Connection between the LCDIF and MIPI DSI - Connection between MIPI DSI and your panel 3. The panel node should be properly referenced with the "display" property in the LCDIF node. For i.MX8MM, you can reference the RM67191 panel implementation as a starting point. You'll need to create a custom panel driver for your TL070WSH30 and ensure it's properly connected in the device tree. If you're looking for an immediate test, you could try using one of the existing panel configurations by setting the environment variable in U-Boot: ``` setenv panel RM67191_OLED saveenv boot ``` This would allow you to verify if the basic display path works before implementing your custom panel driver.
Regards
View full article