{lib, drivers/intel}: Add splash screen footer

This commit introduces the `SPLASH_SCREEN_FOOTER` Kconfig option,
enabling a custom footer image or logo on the firmware splash screen.
This provides an additional branding opportunity for device
manufacturers.

`soc_load_logo_by_coreboot()` now conditionally loads and renders
`footer_logo.bmp` when this option is enabled. The footer logo is
positioned at the bottom of the screen.

A new `SPLASH_SCREEN_FOOTER_LOGO_PATH` Kconfig option is added to
define the footer logo's file path. It defaults to a mainboard-specific
location. `Makefile.mk` is updated to ensure this logo is included in
the CBFS.

This additional branding is made possible by rendering bitmaps using
coreboot's native implementation (`USE_COREBOOT_FOR_BMP_RENDERING`).
FSP currently lacks the necessary callbacks to support this feature.

Currently, the OEM footer branding will appear even when the
system is booting in low-battery mode. A planned update will fix this
by exiting early from the boot process, preventing the footer from
showing and conserving power.

BUG=b:423591644
TEST=Able to display custom footer logo on boot.

Change-Id: I57f8af910e8b8f56e8a4a88f8cca6d60fad380b6
Signed-off-by: Subrata Banik <subratabanik@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/88029
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
This commit is contained in:
Subrata Banik 2025-06-10 19:29:56 +05:30
commit 4373eea5d8
5 changed files with 42 additions and 1 deletions

View file

@ -179,6 +179,27 @@ void soc_load_logo_by_coreboot(void)
copy_logo_to_framebuffer(framebuffer_bar, bytes_per_scanline, blt_buffer_addr, logo_width,
logo_height, logo_coords.x, logo_coords.y);
if (CONFIG(SPLASH_SCREEN_FOOTER)) {
bmp_release_logo();
logo_ptr = (uintptr_t)bmp_load_logo_by_type(BOOTSPLASH_FOOTER, &logo_ptr_size);
if (!logo_ptr || logo_ptr_size < sizeof(efi_bmp_image_header)) {
printk(BIOS_ERR, "%s: BMP image (%zu) is less than expected minimum size (%zu).\n",
__func__, logo_ptr_size, sizeof(efi_bmp_image_header));
return;
}
/* Convert BMP logo to GOP BLT format */
fsp_convert_bmp_to_gop_blt(logo_ptr, logo_ptr_size, &blt_buffer_addr, &blt_size,
&logo_height, &logo_width, config->panel_orientation);
logo_coords = calculate_logo_coordinates(horizontal_resolution,
vertical_resolution, logo_width, logo_height, FW_SPLASH_VALIGNMENT_BOTTOM);
/* Copy the logo to the framebuffer */
copy_logo_to_framebuffer(framebuffer_bar, bytes_per_scanline, blt_buffer_addr,
logo_width, logo_height, logo_coords.x, logo_coords.y);
}
/* Clear temporary Write Combine (WC) MTRR */
clear_var_mtrr(temp_mtrr_index);
}

View file

@ -10,6 +10,8 @@ enum bootsplash_type {
BOOTSPLASH_LOW_BATTERY,
/* Indicates a Main OEM defined bootsplash logo for center of the splash screen. */
BOOTSPLASH_CENTER,
/* Indicates an optional OEM defined bootsplash logo for footer of the splash screen. */
BOOTSPLASH_FOOTER,
/* It's used to determine the total number of bootsplash types. */
BOOTSPLASH_MAX_NUM,

View file

@ -254,6 +254,21 @@ config PLATFORM_LOW_BATTERY_INDICATOR_LOGO_PATH
default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/low_battery.bmp"
endif
config SPLASH_SCREEN_FOOTER
bool "Enable custom footer on firmware splash screen"
depends on BMP_LOGO
help
Enable this option to display a custom footer image or logo on the
firmware splash screen during the boot process. This provides an
additional branding opportunity for device manufacturers, allowing
them to display a logo or other graphic at the bottom of the
splash screen, complementing the main OEM splash image.
config SPLASH_SCREEN_FOOTER_LOGO_PATH
string "Path to splash screen footer logo file"
depends on SPLASH_SCREEN_FOOTER
default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/logo.bmp"
endmenu
config HAVE_EARLY_POWEROFF_SUPPORT

View file

@ -447,3 +447,5 @@ endif
$(eval $(call add_bmp_logo_file_to_cbfs,CONFIG_PLATFORM_HAS_LOW_BATTERY_INDICATOR, \
low_battery.bmp,CONFIG_PLATFORM_LOW_BATTERY_INDICATOR_LOGO_PATH))
$(eval $(call add_bmp_logo_file_to_cbfs,CONFIG_SPLASH_SCREEN_FOOTER, \
footer_logo.bmp,CONFIG_SPLASH_SCREEN_FOOTER_LOGO_PATH))

View file

@ -12,7 +12,8 @@ static const struct cbmem_entry *logo_entry;
/* Mapping of different bootsplash logo name based on bootsplash type */
static const char *bootsplash_list[BOOTSPLASH_MAX_NUM] = {
[BOOTSPLASH_LOW_BATTERY] = "low_battery.bmp",
[BOOTSPLASH_CENTER] = "logo.bmp"
[BOOTSPLASH_CENTER] = "logo.bmp",
[BOOTSPLASH_FOOTER] = "footer_logo.bmp"
};
/*