Boot logo not shown with linux-imx 5.4.3

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

Boot logo not shown with linux-imx 5.4.3

Jump to solution
3,769 Views
michaeldoswald
Contributor III

Hi,

I am using the Yocto framework with the meta-freescale layer (meta-freescale - Layer containing NXP hardware support metadata) to generate images for our custom i.MX6DL board. I have configured a custom boot logo in the linux kernel. This worked well until Yocto version 3.0 (zeus) which uses the linux-imx kernel version 4.14.98. Now I am trying to update to Yocto version 3.1 (dunfell) which uses linux-imx version 5.4.3 (git://source.codeaurora.org/external/imx/linux-imx branch lf-5.4.y).

Using the same kernel configuration options for the framebuffer and boot logo, the logo is no longer displayed. Instead of the logo, the screen is black and the framebuffer console starts showing text output as soon as the init process starts running. I am using the following kernel command line, which should redirect all console output to the debug uart and not display it in fbcon (which worked with kernel 4.14):

console=ttymxc0,115200 root=${emmcroot} quiet vt.global_cursor_default=0

Are there any new parameters or changes in the new kernel that need a different configuration for this to work?

The defconfig used is attached.

The display is connected via lvds and configured in the device tree:

&ldb {
    ipu_id = <0>;
    disp_id = <0>;
    ext_ref = <0>;
    mode = "sin0";
    sec_ipu_id = <0>;
    sec_disp_id = <1>;
    status = "okay";

    lvds-channel@0 {
        fsl,data-mapping = "spwg";
        fsl,data-width = <24>;
        crtc = "ipu1-di0";
        primary;
        status = "okay";

        display-timings {
            native-mode = <&timing0>;
            timing0: hsd100pxn1 {
                clock-frequency = <65000000>;
                hactive = <1024>;
                vactive = <768>;
                hback-porch = <150>;
                hfront-porch = <150>;
                vback-porch = <21>;
                vfront-porch = <14>;
                hsync-len = <32>;
                vsync-len = <3>;
            };
        };
    };
};

Tags (2)
0 Kudos
1 Solution
3,506 Views
igorpadykov
NXP Employee
NXP Employee

Hi Michael

 

nxp supports only yocto 3.0 Zeus as described below from

official linux documentation from i.MX Software and Development Tools | NXP 

pastedImage_2.jpg

Issues with dunfell release can be posted on meta-fsl-arm mailing list

meta-freescale@lists.yoctoproject.org | Home 

Best regards
igor

View solution in original post

0 Kudos
4 Replies
3,506 Views
igorpadykov
NXP Employee
NXP Employee

Hi Michael

what bsp used in the case, one can try to reproduce issue on i.MX6 Sabre SD board

with Demo Images

Linux Binary Demo Files - i.MX 6QuadPlus, i.MX 6Quad, i.MX 6DualLite, i.MX 6SoloX

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
3,506 Views
michaeldoswald
Contributor III

Hello Igor,

Thank you for your response.

> what bsp used in the case

As mentioned above, I am using the Yocto dunfell release and the meta-freescale layer from git.yoctoproject.org. The kernel recipe used (linux-imx) uses the Linux kernel version 5.4.3 from git://source.codeaurora.org/external/imx/linux-imx. This is presumably the same kernel version as the demo image files in your link.

> one can try to reproduce issue on i.MX6 Sabre SD board with Demo Images

Unfortunately, I do not have a i.MX6 Sabre SD board at hand to test with.

What I found out in the meantime:  Displaying the Linux boot logo seems to be dependent on the kernel parameter 'quiet'. I use 'quiet' to silence the boot output because it slows down the boot process. But if I use 'quiet', the boot logo is not shown. If I remove 'quiet' from the kernel command line, the boot logo shows up. This was not the case with older kernels. Was this an intentional change? Is it possible to use 'quiet' and still display the boot logo?

Update: The logo is shown correctly if I apply the following patch to the kernel.

diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
index c9235a2f42f8..357681821335 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
@@ -1091,8 +1091,10 @@ static void fbcon_init(struct vc_data *vc, int init)
     info = registered_fb[con2fb_map[vc->vc_num]];
     cap = info->flags;

+    /*
     if (logo_shown < 0 && console_loglevel <= CONSOLE_LOGLEVEL_QUIET)
         logo_shown = FBCON_LOGO_DONTSHOW;
+    */

     if (vc != svc || logo_shown == FBCON_LOGO_DONTSHOW ||
         (info->fix.type == FB_TYPE_TEXT))

0 Kudos
3,507 Views
igorpadykov
NXP Employee
NXP Employee

Hi Michael

 

nxp supports only yocto 3.0 Zeus as described below from

official linux documentation from i.MX Software and Development Tools | NXP 

pastedImage_2.jpg

Issues with dunfell release can be posted on meta-fsl-arm mailing list

meta-freescale@lists.yoctoproject.org | Home 

Best regards
igor

0 Kudos
3,506 Views
michaeldoswald
Contributor III

Hello Igor,

Thank you again for your answer. I didn't realize that NXP does not yet support 3.1 (I guess they will in the future, as 3.1 is declared an LTS release).

Boot logo not shown

My problem with the boot logo does not seem to be specific to the linux-imx kernel, it seems to happen with the linux-fslc kernel also. The patch I posted above does fix the problem for me and displays the logo. I am not yet sure if this is the correct way to go, but it works and it seems to be a solution with a small impact.

Boot messages on framebuffer

The second problem with boot messages being shown on screen even though the console was set to ttymxc0 is now also fixed. Yocto 3.1 uses sysvinit recipe version 2.96. This version has changes in the bootlogd daemon which seems to send a ioctl(TIOCCONS) on the framebuffer console. That causes the system messages to be printed on the framebuffer console. Reverting it back to the bootlogd version in sysvinit version 2.88 fixes this problem.

Thanks for your help

Michael

0 Kudos