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?