Hi NXP,
Our current development project is based on the i.MX8MQ platform using the i.MX-Android-12.1.0_1.0.0 codebase. This codebase utilizes the DRM/KMS display management framework instead of the traditional framebuffer. Previously, under the framebuffer architecture, the kernel boot process would display the penguin logo. However, with the DRM/KMS framework, the penguin logo is not displayed during boot. How can we display the boot logo under the DRM/KMS framework?
Thanks!
Solved! Go to Solution.
HI, @herman_lin
Synced with Android team, due to google GKI (Generic Kernel Image) requirement, the drm display driver is bullt as module, so kernel LOGO can't be used, the kernel logo code runs earlier than display driver, so it can't work.
After enabled logo in Uboot, to make it work with long time, you can remove the "video_link_shut_down();" from file "uboot\arch\arm\lib\bootm.c", function announce_and_cleanup().
you can also add "clk_ignore_unused" into kernel command line to avoid kernel turn off display related clocks during boot up. And you can also set Uboot framebuffer memory as resvereved in kernel device tree to avoid kernel clear the Uboot logo memory.
HI, @herman_lin
Synced with Android team, due to google GKI (Generic Kernel Image) requirement, the drm display driver is bullt as module, so kernel LOGO can't be used, the kernel logo code runs earlier than display driver, so it can't work.
After enabled logo in Uboot, to make it work with long time, you can remove the "video_link_shut_down();" from file "uboot\arch\arm\lib\bootm.c", function announce_and_cleanup().
you can also add "clk_ignore_unused" into kernel command line to avoid kernel turn off display related clocks during boot up. And you can also set Uboot framebuffer memory as resvereved in kernel device tree to avoid kernel clear the Uboot logo memory.
Dear pengyong_zhang
Our client applied NXP's suggestions, but there is still a problem where the u-boot splash screen disappears after moving to the kernel.
We proceeded as follows:
1. Remove video_link_shut_down()
--- a/uboot-imx/arch/arm/lib/bootm.c
+++ b/uboot-imx/arch/arm/lib/bootm.c
@@ -67,7 +67,10 @@ static void announce_and_cleanup(int fake)
#endif
#if defined(CONFIG_VIDEO_LINK)
- video_link_shut_down();
+// video_link_shut_down();
+ printf("SKIP the video_link shutdown!!>>>>>>>>>>>>>>>>>");
+ printf("SKIP the video_link shutdown!!>>>>>>>>>>>>>>>>>");
+ printf("SKIP the video_link shutdown!!>>>>>>>>>>>>>>>>>");
#endif
2. Add clk_ignore_unused to bootargs
+++ b/uboot-imx/arch/arm/dts/imx8mp-zh_l70.dts
@@ -13,7 +13,7 @@
compatible = "fsl,imx8mp-zh-l70", "fsl,imx8mp";
chosen {
- bootargs = "clk-imx8mp.mcore_booted console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200";
+ bootargs = "clk-imx8mp.mcore_booted clk_ignore_unused console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200";
stdout-path = &uart2;
};
3. Add uboot splash area reserved_memory in kernel dts
+++ b/kernel/dts/imx8mp-zh_l70.dts
@@ -129,6 +129,11 @@
reg = <0 0x80000000 0 0x1000000>;
};
+ boot_splash: boot_splash@50000000 {
+ reg = <0 0x50000000 0 0x1C00000>;
+ no-map;
+ };
Do you have any additional suggestions?
hi @herman_lin
You can reference to the Linux kernel config file "imx_v8_defconfig" to includes the kernel LOGO related config:
CONFIG_FB=y
CONFIG_FB_EFI=y
CONFIG_LOGO=y
If you still got the kernel crash, please attach the crash log.
Hi pengyong,
Thanks for your reply.
After set following configs, the device will repeatedly reboot in the kernel, the log as attachment. The logs only show that the device is being triggered to reboot, but the reason is unknown. If additional logs are needed, please let us know which ones to enable. Thanks!!
CONFIG_FB=y
CONFIG_FB_EFI=y
CONFIG_LOGO=y
Best Regards,
Herman