Verdin iMX8M Plus - Splashscreen


I am working with a Verdin iMX8M Plus SoM with a Dahlia carrier board and video over HDMI. I am working to implement a splash screen during boot up. I have a custom Yocto build based off of the Toradex Minimal Reference Image. I have implemented a splash screen using the psplash meta layer. The splash screen loads just fine. However, it takes approximately 11 seconds from power on to reach the splash screen. Prior to the splash screen, the display is solid black with no text.

To see if I could get an image to display earlier in the boot process, I rebuilt U-boot with the following set in the configuration:


U-boot compiled successfully, but I still did not get any video output. I also tried loading a bmp at runtime within U-boot and still did not get an output on the display.

I’m not quite sure what the issue could be. Maybe the Verdin HDMI device tree overlay is not getting applied early on? Maybe I need to set vidargs?

I’ve also attached a copy of the boot log in case that might help with debugging.

Thanks for your help!

BootLog.txt (50.3 KB)

You don’t have the correct device tree loaded.

By default the build loads the Verdin full sized carrier board device tree. It’s hard coded in the U-BOOT code. The chart found here was somewhat of a myth when I hit this. That was quite a few months ago though.

Start with this thread. It is the most recent I know about.

This conversation is for sound, but also might help.

Ah! Here it is! Jeremias shouldn’t have to walk that plank twice.

Please note the part of the discussion talking about
Been a while since I thought about it, but I was horrified to hear that as it leaves the device open to Chameleon attack, or at least I feel it does.

Please note the dates of these message threads if things don’t work for you. I’m sure some things have changed with later releases of the software.

Hi @Kyle.W,

Thanks for your comment @seasoned_geek!

@Kyle.W, are you still facing this issue? Do you need any extra help with that?

Please, feel free to ask any questions.

Best Regards,

Hi guys,

Thanks for your assistance with this. Sorry for the delay. I’ve been trying a few different things on my end, but still no luck.

I believe the correct device tree is being loaded. When the kernel boots, there is HDMI output, but not in U-boot. I know there is a device tree overlay that is applied that enables HDMI. I’m assuming that this is loaded during U-boot as well. Would U-boot be applying the overlay? Do you think I need to combine the HDMI overlay into the device tree that is included in U-boot? Could this be the issue?


Hi @Kyle.W,

Sorry for the long delay.

U-boot won’t be able to apply this overlay, since it handles the device tree and overlays when it starts to boot the Linux kernel.

Checking a bit into the code, you would need to change the u-boot source code to enable the HDMI feature and then recompile it. Unfortunately I couldn’t find any documentation about it.

I could also find the config that you mentioned,

#include <asm/arch/mxc_hdmi.h>
#include <asm/io.h>

int detect_hdmi(struct display_info_t const *dev)
	struct hdmi_regs *hdmi	= (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
	return readb(&hdmi->phy_stat0) & HDMI_DVI_STAT;

but as you mentioned, I couldn’t find the reason this isn’t enough. Probably the “.detect” setting should also be enabled, as an example from another board:

struct display_info_t const displays[] = {
		/* HDMI Output */
		.bus	= -1,
		.addr	= 0,
		.pixfmt	= IPU_PIX_FMT_RGB24,
		.detect	= detect_hdmi,
		.enable	= enable_hdmi,
		.mode	= {
			.name		= "HDMI",
			.refresh	= 60,
			.xres		= 1024,
			.yres		= 768,
			.pixclock	= 15384,
			.left_margin	= 220,
			.right_margin	= 40,
			.upper_margin	= 21,
			.lower_margin	= 7,
			.hsync_len	= 60,
			.vsync_len	= 10,
			.sync		= FB_SYNC_EXT,
	}, {

Please check also these threads from NXP:

Best Regards,

Hi Hiago,

No problem. I appreciate the follow up. I will test it out this week and report back.