Uboot and linux boot logo

Hi,

For my project I need to display a boot logo during startup. For that I integrated my own logo into uboot and it works fine.

The problem resides when linux takes over the framebuffer, it flickers because the kernel does the framebuffer initialization again. In uboot doc (https://www.denx.de/wiki/DULG/LinuxSplashScreen) it is explained that there is some kind of support for CONFIG_FB_PRE_INIT_FB in the kernel. It allows the Linux kernel to skip certain parts of the framebuffer initialization and to reuse the framebuffer contents that was set up by uboot.

  • Is this supported or available in toradex kernel/uboot?
  • If not, are there any other way to achieve what I want to do?

Currently flicker free U-Boot to Linux handover is not readily available in Toradex Kernel/U-Boot.

At this point the flag CONFIG_FB_PRE_INIT_FB seems to be only implemented for a single framebuffer driver (mb862xx).

There are different levels of flicker free. Normally U-Boot tears down the display configuration before handing over to Linux to avoid any complication (e.g. the framebuffer memory typically gets reallocated in Linux). This leads to a noticeable pause between tear down and re-initialization in Linux. is done through the arch_preboot_os callback (in arch/arm/imx-common/cpu.c) by calling ipuv3_fb_shutdown. To make the pause minimal it is possible to allocate the framebuffer such that it is not accessible by Linux. Our Colibri VFxx use the DCU which does that in U-Boot: see fsl_dcu_fixedfb_setup in drivers/video/fsl_dcu_fb.c. However, currently Linux reallocates a new framebuffer and is not able to recover the framebuffer.

There are probably better ways to do it by using the simple-framebuffer mechanism and if Linux is using a DRM driver by using the drm_fb_helper_remove_confliciting_framebuffers) helper.

Another variant is to disable display initialization in U-Boot entirely and make sure Linux sets up display only. When optimizing boo time only slightly (e.g. use quiet in the kernel command line and disable the boot delay in U-Boot) one has Linux to initialize the framebuffer within 2 seconds or so…

Hi Stefan,

Can give more detail or some example on how to implement the boot logo based on DRM driver.

Regards,
Manoj

Hello Manoj

Can you ask please a new Question? Thanks