Has anyone been able to display a boot logo while using gki configurations for the Android kernel?

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

Has anyone been able to display a boot logo while using gki configurations for the Android kernel?

3,209 Views
dennis3
Contributor V

In recent Android releases (we're using 11_2.2.0 currently), the boot logo no longer displays during boot.  The problem seems to be that the display system has been moved to load via kernel modules instead of compiled into the kernel and the boot logo code executes before the modules have been loaded.

Has anyone worked around this?  Is there a way to get the boot logo to show up without disabling GKI and going back to all compiled in modules?

0 Kudos
11 Replies

3,203 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello dennis3,

Yes the boot logo is part of uboot now, it simply no longer display, but you can add your own module if you want to show up.

 

Regards

 

0 Kudos

3,185 Views
dennis3
Contributor V

Thank you for the reply.  This isn't a solution to the problem though.  We already use the uboot logo to display a quick boot logo or switch to a battery low power warning.  That only lasts a few seconds during first boot though.  The Linux boot logo, if not present, is replaced by about 12 seconds of blank screen before the Android bootimage finally appears.  During this time, it is very confusing for the customer.  They have the impression the device is not working.  Especially because our previous revisions show the boot logo during that time.

0 Kudos

3,056 Views
street2409
Contributor III

Hello, were you able to resolve this issue? Could you please provide some information on how to enable Linux boot logo on Android 11 2.2.0?

0 Kudos

3,043 Views
dennis3
Contributor V

I'm afraid I was not able to get it to work with GKI.  Supposedly, if you change the display, mipi, clock modules (stuff boot logo needs) to built in and leave everything else as modules, it should work, but I made those changes and the boot logo still failed to show.  It was unclear why in the logs as the logs clearly said switching to framebuffer console and displaying boot logo after the display drivers loaded.

Luckily the source tree stills supports non-gki config so I had to switch back to that.  The boot logo turned on fine this way still.  (However for whatever reasons I don't know the Android boot animation isn't showing in this configuration and the user has to wait on the boot logo all the way until the Android session starts... I can't win )

I'm still hoping NXP addresses this in a later version but for immediate future we're stuck on 2.2 until our carrier board updates their release.

 

0 Kudos

2,873 Views
street2409
Contributor III

Hello,

could you please provide some patches or some info on how to enable uboot boot logo? I am using imx8mp on Android 11 2.2.0 and I can't get it to work.

 

 

0 Kudos

2,854 Views
dennis3
Contributor V

For us, the 2.2.0 version needed a couple patches to get the u-boot logo working.  The mipi dsi clocks were not being set correctly.  I pulled those patches in manually from the git repo.  However, the 2.6.0 version of u-boot had those patches applied and I didn't need any changes to make it work.  Thus far, I haven't noticed any incompatibility between interchanging those two versions.

So the process is:

 * port your display driver.  Ours was very similar to the Linux kernel driver for our display and only minor API changes were needed (mostly self explanatory as some of the dsi functions just had different naming convention.)
 * Add your display to the dts file and enable the lcdif properly (pretty much the same as in Linux).
 * Enable the proper configuration option in the kernel to ensure display support is available.
 * Write some code to display something in your board_init function.

0 Kudos

2,832 Views
street2409
Contributor III

I am using a LVDS screen, not MIPI so my process is the following:

* Got the display driver and other changes except DT changes from this patch (line 302 cannot be applied though so I skipped it): https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/Add-i-MX8MP-LVDS-driver-in-uboot/ta-p/14...

* Copied DT definitions for the screen from my kernel

* Config options in uboot were included in the patch above

I'm assuming this should be enough to at least light up the backlight when my device powers on but nothing happens so I haven't tried editing the board_init function yet.

Do you have any tips maybe of what I might be doing wrong?

0 Kudos

2,824 Views
dennis3
Contributor V

Once you have enabled a display, you should see something like this in the uboot console at boot:

[*]-Video Link 0
 (720 x 1280)
[0] lcd-controller@32e80000, video
[1] mipi_dsi@32e60000, video_bridge
[2] <our panel name>
 
If you're not getting that far, you probably haven't enabled all the CONFIG options or set the proper controllers to enabled in the dts file.  Here are a few options I needed for our mipi panel.  LVDS probably has different options.
CONFIG_DM_VIDEO=y
CONFIG_VIDEO_IMX_SEC_DSI=y
CONFIG_VIDEO_IMX_LCDIFV3=y
<also one for our panel>
 
for our board:
#include <splash.h>
#include <lcd.h>
and in board init:
bmp_display( (ulong)logo_data, BMP_ALIGN_CENTER, BMP_ALIGN_CENTER);
 
You can search for example usages of that in the uboot code to see how they get logo data. Basically you just need to convert some binary image data to a c array.
Also, you'll find that there is a command that can display something on the screen from the console.  You can load a bmp onto a disk and then mount that disk and read the data at boot and run the command to display/test it.  That way you can test the display before starting to modify your board_init.
 
 

 

0 Kudos

2,812 Views
street2409
Contributor III

I have managed to get some output after fixing the devicetree and enabling configs. Uboot starts printing as you mentioned but locks up after printing the first line of the output you mention so I only get:

 

[*]-Video Link 0

 

After a few seconds the device powers off. I've traced the problem to device_probe function called by video_link.c. Any ideas why this might be happening?

0 Kudos

2,807 Views
dennis3
Contributor V

Probably something in the lvds or panel driver isn't quite right.  In my experience, it was usually clocks because the latest Linux driver hadn't been ported to uboot (Although for me that was fixed in later version as I had mentioned before).  But I haven't tried with an LVDS display.  All I can suggest is to try to verify the same registers are set in uboot as are set in Linux when it is working.

0 Kudos

3,033 Views
street2409
Contributor III

Thank you for your reply, I think I'm going to try implementing non-gki since my boot logo is the same as boot animation. Very unfortunate such a trivial thing gets broken for no reason on a newer version.

0 Kudos