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

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

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

跳至解决方案
1,043 次查看
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 项奖励
回复
1 解答
956 次查看
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 项奖励
回复
5 回复数
803 次查看
pengyong_zhang
NXP Employee
NXP Employee

hi  @herman_lin 

Please create another ticket talk about your new issue.

B.R

0 项奖励
回复
957 次查看
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 项奖励
回复
831 次查看
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 项奖励
回复
997 次查看
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 项奖励
回复
969 次查看
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 项奖励
回复