Verdin IMX8MP device tree for lvds display Torizon V6/7

I have been working to get a custom carrier board we have designed up and running, and have already successfully got the display to work on an AM62 compute module, and on the IMX8MP using V5 of Torizon (dunfell/verdin-imx8mp/torizon/torizon-core-docker/release 5.7.2+build.20).

When using OS v6.8, anytime I disable the hdmi overlay, even using the setenv skip_fdt_overlays 1 in uboot, the board stalls and enters a reboot loop every 5 minutes, never entering the OS.

In v7.2, I can change the overlays successfully. Setting the overlay to any of the default 10inch lvds overlays has no output on the screen (expecting a garbled or offset image). I have also setup to build new device trees (following the process I used for V5.7 software, except using the newest linux kernal image). I have changed the panel timing from the to what I used when building a Device tree for v5.7, and for the AM62 board we have, but still no display at all. I assume there is an additional setting I am missing, but not exactly sure where to go from here.

Our carrier board is most closely following the Mallow Carrier board, just using a single channel LVDS output. SODIMM 16 is our PWM backlight enable, and SODIMM 46 is used for an enable, which seems to match the bindings used in the verdin-imx8mp_panel-cap-touch-10inch-lvds_overlay.dts file.

In version 5 I used verdin-imx8mp_mezzanine-lvds-single-channel_overlay.dts, and just entered our panel timings.

The panel timings that seem to work well on other versions…

panel-timing {
clock-frequency = <68152388>;
de-active = <1>;
hactive = <1280>;
hback-porch = <5>;
hfront-porch = <63>;
hsync-active = <0>;
hsync-len = <1>;
pixelclk-active = <0>; /* positive edge */
vactive = <800>;
vback-porch = <2>;
vfront-porch = <39>;
vsync-active = <0>;
vsync-len = <1>;
};

I have directly installed each OS using torizon.io. They are directly from the monthly releases, and otherwise unmodified to my knowledge.

I did just notice the weston container was failing to init, and here is the relevant log section for that.
[12:42:24.437] Loading module ‘/usr/lib/aarch64-linux-gnu/libweston-9/gl-renderer.so’
[12:42:24.499] EGL client extensions: EGL_EXT_client_extensions
EGL_EXT_platform_base EGL_KHR_platform_wayland
EGL_EXT_platform_wayland EGL_KHR_platform_gbm
[12:42:24.499] EGL client extensions: EGL_EXT_client_extensions
EGL_EXT_platform_base EGL_KHR_platform_wayland
EGL_EXT_platform_wayland EGL_KHR_platform_gbm
[12:42:24.500] failed to initialize display
[12:42:24.500] EGL error state: EGL_NOT_INITIALIZED (0x3001)
[12:42:24.500] failed to initialize egl
[12:42:24.500] fatal: failed to create compositor backend
[12:42:24.500] failed to initialize display
[12:42:24.500] EGL error state: EGL_NOT_INITIALIZED (0x3001)
[12:42:24.500] failed to initialize egl
[12:42:24.500] fatal: failed to create compositor backend
Internal warning: debug scope ‘drm-backend’ has not been destroyed.
Internal warning: debug scope ‘drm-backend’ has not been destroyed.

Software summary

Bootloader: U-Boot
Kernel version: 6.6.74-7.2.0-devel-g4c3f8e570a39 #1-Torizon SMP PREEMPT Wed Feb 26 11:01:24 UTC 2025
Kernel command line: root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ostree=/ostree/boot.0/torizon/cbad4b35beae0cde2e41ca00248a65988576929978d28130a2d3b08b3d9a19f2/0
Distro name: NAME=“Torizon OS”
Distro version: VERSION_ID=7.2.0-devel-202503-build.7
Distro variant: VARIANT=“Docker”
Hostname: verdin-imx8mp-15459942

Hardware info

HW model: Toradex Verdin iMX8M Plus on Verdin Development Board
Toradex version: 0063 V1.1B
Serial number: 15459942
Processor arch: aarch64

Device tree

Device tree enabled: imx8mp-verdin-nonwifi-dev.dtb
Compatible string: toradex,verdin-imx8mp-nonwifi-devtoradex,verdin-imx8mp-nonwifitoradex,verdin-imx8mpfsl,imx8mp
Device trees available:
imx8mp-verdin-nonwifi-dahlia.dtb
imx8mp-verdin-nonwifi-dev.dtb
imx8mp-verdin-nonwifi-ivy.dtb
imx8mp-verdin-nonwifi-mallow.dtb
imx8mp-verdin-nonwifi-yavia.dtb
imx8mp-verdin-wifi-dahlia.dtb
imx8mp-verdin-wifi-dev.dtb
imx8mp-verdin-wifi-ivy.dtb
imx8mp-verdin-wifi-mallow.dtb
imx8mp-verdin-wifi-yavia.dtb

Device tree overlays

Overlays enabled: fdt_overlays=verdin-imx8mp_panel-cap-touch-10inch-lvds_overlay.dtbo verdin-imx8mp_spidev_overlay.dtbo
Overlays available:
verdin-imx8mp_dsi-to-hdmi_overlay.dtbo
verdin-imx8mp_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo
verdin-imx8mp_dsi-to-lvds_panel-lvds-dual-channel-1080p_overlay.dtbo
verdin-imx8mp_hdmi_overlay.dtbo
verdin-imx8mp_hmp_overlay.dtbo
verdin-imx8mp_mezzanine_ov5640-alt-jumpers_overlay.dtbo
verdin-imx8mp_mezzanine_ov5640-default-jumpers_overlay.dtbo
verdin-imx8mp_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo
verdin-imx8mp_mezzanine_panel-lvds-dual-channel-1080p_overlay.dtbo
verdin-imx8mp_nau8822-btl_overlay.dtbo
verdin-imx8mp_ov5640_overlay.dtbo
verdin-imx8mp_panel-cap-touch-10inch-dsi_overlay.dtbo
verdin-imx8mp_panel-cap-touch-10inch-lvds_overlay.dtbo
verdin-imx8mp_panel-cap-touch-7inch-dsi_overlay.dtbo
verdin-imx8mp_spidev_overlay.dtbo

Hi, I’m the Toradex AI Assistant. The Toradex Support team will follow up with you shortly!

Did you like my answer?

:+1: :-1:


Hello,

It seems you’re encountering two main issues with your Verdin iMX8MP module on Torizon OS: a reboot loop when disabling HDMI overlays and a lack of display output when configuring the LVDS display.

Reboot Loop Issue

  1. Verify Overlay Application: Ensure that the device tree overlays are applied correctly. You can check this by examining /proc/device-tree/chosen/overlays to confirm successful application. Each overlay should have a corresponding file with a value of 0.

  2. Check for Conflicts: Disabling HDMI overlays might cause conflicts. Review the boot logs for any errors or warnings that could provide more insight. Ensure no other overlays or configurations are inadvertently affecting the system.

  3. Rollback Mechanism: Torizon OS has a rollback mechanism that reverts to a previous working state after several failed boot attempts. Ensure your changes are stable and correctly applied.

LVDS Display Configuration

  1. Panel Timings: Double-check the panel timings in your device tree overlay. The values you provided seem correct, but ensure they match your display panel’s specifications.

  2. Overlay Configuration: Make sure the correct overlay for single-channel LVDS is being used. You mentioned using verdin-imx8mp_mezzanine-lvds-single-channel_overlay.dts in version 5. Ensure a similar or updated overlay is applied in version 7.2.

  3. Weston Container Logs: The failure of the Weston container to initialize might be related to the display issue. Check the logs for any EGL or DRM errors that could indicate a problem with the graphics stack.

By following these steps, you should be able to diagnose and resolve the issues with your custom carrier board and LVDS display configuration. If problems persist, further investigation into the specific overlay and kernel configurations may be necessary.

Best regards, Toradex AI Assistant.

Please, also check if these links can help you solve your problem:

Weston error when running on iMX8MM (no HDMI video).

Hey Dustin,

From your output, with Torizon 7, it looks like you do not have the mezzanine overlay enabled.

Overlays enabled: fdt_overlays=verdin-imx8mp_panel-cap-touch-10inch-lvds_overlay.dtbo verdin-imx8mp_spidev_overlay.dtbo

Can you ensure this overlay is correctly added?

Eric Singer
Toradex

Hi Eric,

I had tried it before, but here are the outputs for that, still no display. Weston container still crashes.

torizon@verdin-imx8mp-15459942:~$ sudo tdx-info -dt

Device tree

Device tree enabled: imx8mp-verdin-nonwifi-dev.dtb
Compatible string: toradex,verdin-imx8mp-nonwifi-devtoradex,verdin-imx8mp-nonwifitoradex,verdin-imx8mpfsl,imx8mp
Device trees available:
imx8mp-verdin-nonwifi-dahlia.dtb
imx8mp-verdin-nonwifi-dev.dtb
imx8mp-verdin-nonwifi-ivy.dtb
imx8mp-verdin-nonwifi-mallow.dtb
imx8mp-verdin-nonwifi-yavia.dtb
imx8mp-verdin-wifi-dahlia.dtb
imx8mp-verdin-wifi-dev.dtb
imx8mp-verdin-wifi-ivy.dtb
imx8mp-verdin-wifi-mallow.dtb
imx8mp-verdin-wifi-yavia.dtb

Device tree overlays

Overlays enabled: fdt_overlays=verdin-imx8mp_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo verdin-imx8mp_spidev_overlay.dtbo
Overlays available:
verdin-imx8mp_dsi-to-hdmi_overlay.dtbo
verdin-imx8mp_dsi-to-lvds_panel-cap-touch-10inch-lvds_overlay.dtbo
verdin-imx8mp_dsi-to-lvds_panel-lvds-dual-channel-1080p_overlay.dtbo
verdin-imx8mp_hdmi_overlay.dtbo
verdin-imx8mp_hmp_overlay.dtbo
verdin-imx8mp_mezzanine_ov5640-alt-jumpers_overlay.dtbo
verdin-imx8mp_mezzanine_ov5640-default-jumpers_overlay.dtbo
verdin-imx8mp_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo
verdin-imx8mp_mezzanine_panel-lvds-dual-channel-1080p_overlay.dtbo
verdin-imx8mp_nau8822-btl_overlay.dtbo
verdin-imx8mp_ov5640_overlay.dtbo
verdin-imx8mp_panel-cap-touch-10inch-dsi_overlay.dtbo
verdin-imx8mp_panel-cap-touch-10inch-lvds_overlay.dtbo
verdin-imx8mp_panel-cap-touch-7inch-dsi_overlay.dtbo
verdin-imx8mp_spidev_overlay.dtbo

torizon@verdin-imx8mp-15459942:~$ ls /proc/device-tree/chosen/overlays/
name verdin-imx8mp_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo verdin-imx8mp_spidev_overlay.dtbo

torizon@verdin-imx8mp-15459942:~$ cat /proc/device-tree/chosen/overlays/verdin-imx8mp_mezzanine_panel-cap-touch-10inch-lvds_overlay.dtbo
0

Hey @dTanks

Can you let me know what hardware you are using or based your build from?

Your logs suggest you are using a Verdin IMX8MP Plus and the carrier board base is on the verdin development board (not a mallow).

So maybe the source of error is that you need to have it based on the mallow carrier board not the development board.

-Eric

Eric,

Apologies, this is our first time using Toradex products, and there are honestly a lot of settings to go thru, and so I am not sure I am doing everything correctly.

I didn’t see anything that suggested this would change between boards, but if I change the fdtfile in uboot to the mallow board (fdtfile=imx8mp-verdin-nonwifi-mallow.dtb), I still don’t get an output on v7.2. This is the with mezzanine file you suggested, and with the non-mezzanine file I edited to have our panel timings.

I am evaluating 2 modules, this one is the:
Model: Toradex Verdin iMX8M Plus Quad 4GB IT V1.1B, Serial# 15459942

As I noted before, it works with version 5.7 software, but the versions of 6 and 7 I have tried has no output, and I don’t know what to change for it.

Probably not relevant, but for some reason its only initializing with 2gb of ram.

Output does work in 7.1.0 for the AM62 compute model we are also using, I have not updated it to the newest version, but assume it works as well.

I am not sure what other details are even necessary, we are using the LVDS interfaces on pins 88-112. The backlight is pwm is pin 16, and pin 46 is being used as an enable pin. As far as I could tell, this is exactly what is defined in the verdin-imx8mp_panel-cap-touch-10inch-lvds.dts file that I was using earlier… here is that section, with my panel’s timing added instead of the default.

&{/} {
backlight_lvds_native: backlight-lvds-native {
compatible = “pwm-backlight”;
pinctrl-names = “default”;
pinctrl-0 = <&pinctrl_i2s_2_d_out_dsi_1_bkl_en>;
brightness-levels = <0 45 63 88 119 158 203 255>;
default-brightness-level = <4>;
/* Verdin I2S_2_D_OUT as GPIO (SODIMM 46) /
enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
/
Verdin PWM_2 (SODIMM 16) */
pwms = <&pwm2 0 6666667 PWM_POLARITY_INVERTED>;
};

panel-lvds-native {
compatible = “panel-lvds”;
backlight = <&backlight_lvds_native>;
data-mapping = “vesa-24”;
height-mm = <136>;
width-mm = <217>;

  panel-timing {
  	clock-frequency = <68152388>;
  	de-active = <1>;
  	hactive = <1280>;
  	hback-porch = <5>;
  	hfront-porch = <63>;
  	hsync-active = <0>;
  	hsync-len = <1>;
  	pixelclk-active = <0>; /* positive edge */
  	vactive = <800>;
  	vback-porch = <2>;
  	vfront-porch = <39>;
  	vsync-active = <0>;
  	vsync-len = <1>;
  };

  port {
  	panel_lvds_native_in: endpoint {
  		remote-endpoint = <&lvds_out>;
  	};
  };

};
};

I can provide schematics or pcb layouts of the board we are using if desired, but I feel like if the v5 software works, and the v7 software for the AM62 works, its not a design or schematic problem, but rather a configuration problem.

Hey Dustin,

This is a little hard to follow. Just a lot of information for different setups. You have an Verdin IMX8MP with a board that is based on mallow? The Mezzanine board is an add-on board for the Verdin Development Board. Can you tell me what development board you primary developed on?

Just for verification, you are referring to this mezzanine board correct?

https://developer.toradex.com/hardware/verdin-som-family/add-ons/verdin-imx8m-plus-mezzanine/

And can you try the verdin module, the development board (which I assume is Verdin Development Board, the mezzanine, Torizon 7, and the two overlays? And can share the dmesg output/ boot logs?

The ram issue was addressed and is correct for 5.7.4, so you are seeing this on 5.7? https://developer-archives.toradex.com/software/linux/release-details?subsystem=RAM&key=ELB-5464

Eric Singer
Toradex

Eric,

I do not have a mezzanine board, I have a custom carrier board (image attached)

We do not own any toradex dev boards, but I double checked my design against the Mallow board schematics. The uboot was setup for the verdin dev board out of the box, which is why that was defined that way.

As far as I can tell, verdin-imx8mp_panel-cap-touch-10inch-lvds.dts has all the specifications that our board matches, which is why I was using it.

As for the memory issue, I have having that issue on any OS version I install.

If I had to guess, it is a problem with how u-boot is initializing things, but I am not an expert in this, and I don’t know if because the first OS I installed was a v5 that had demo containers if that has created some of these problems. I am not sure if installing an OS from torizon.io updates the uboot as well. I was unable to reinstall tezi thru an sd card when I tried a couple weeks ago, and could only update using the online interface.

Is there any chance something related to uboot or something else is causing the LVDS not to init?

I have attached the dmesg output as well.

dmesg_IMX8MP.txt (34.1 KB)

Hey @dTanks,

Can you boot into the u-boot terminal and type “version” this will print out some information regarding which u-boot you are working with. In order to get into the u-boot cli you can hit any key while the device is first booting up. You can use the debug port to gain access.

Yes U-boot needs to be upgraded along with the Torizon OS versions.

5 → 6

and 6 → 7

-Eric

Verdin iMX8MP # version
U-Boot 2020.04-5.7.2+git.33bb8e968332 (Jan 01 1970 - 00:00:00 +0000)

aarch64-tdx-linux-gcc (GCC) 9.5.0
GNU ld (GNU Binutils) 2.34.0.20200910

Unfortunately I am stuck trying to follow the uboot upgrade instructions. Torizon IO has no selection for me to select from the bootloaders. The previous board (another vendor) we used would automatically update uboot from an sd card, or I could run upgradeu, but couldn’t find a uboot image from toradex.

Note I just switched to v7.1 for this since it was a stable release, and though maybe it would have options.

Apologies, I didn’t read the instructions fully, and didn’t see adding the package data. I also had to go to the classic app to get thru all the steps.

Updating now, and will get back to this tomorrow if this fixes my issues.

Hey @dTanks,

All good. I assume you found this guide. Let me know if you still get stuck/something isn’t working and we can work through it.

-Eric

Quickly tried a couple lvds overlays. I see one error popping up during bootup that might have something happening. I see a lot more of the backlight flashing during boot which seems promising, but will investigate more tomorrow.

Here are the messages I am seeing.

[ 6.269972] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with phy-lvds
[ 6.288809] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with panel-lvds-mez
[ 6.350649] imx8mp-ldb ldb-display-controller: Failed to create device link (0x180) with 32e90000.lcd-controller

Here is the entire dmesg output.

dmesg_IMX8MP_NEWUBOOT.txt (34.1 KB)

I noticed some display during reboot, and found the docker container for weston I was previously using was still crashing. Using a different docker command successfully launched weston, and then chromium. Things seem to be working now, I will just move the rest of the touchscreen configuration over.

Thanks for the help.

Hey @dTanks,

Glad its working as intended!

-Eric