How to show the boot logo using DRM/KMS on Android12?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to show the boot logo using DRM/KMS on Android12?

Jump to solution
1,047 Views
herman_lin
Contributor II

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!

0 Kudos
Reply
1 Solution
960 Views
pengyong_zhang
NXP Employee
NXP Employee

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.

View solution in original post

0 Kudos
Reply
5 Replies
807 Views
pengyong_zhang
NXP Employee
NXP Employee

hi  @herman_lin 

Please create another ticket talk about your new issue.

B.R

0 Kudos
Reply
961 Views
pengyong_zhang
NXP Employee
NXP Employee

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.

0 Kudos
Reply
835 Views
simon_ko
Contributor III

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?

 

0 Kudos
Reply
1,001 Views
pengyong_zhang
NXP Employee
NXP Employee

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.

0 Kudos
Reply
973 Views
herman_lin
Contributor II

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

0 Kudos
Reply