vc/google: Show different logos for different ChromeOS devices
This commit adds support for showing different logos on the ChromeOS firmware splash screen based on the device model (between Chromebook-Plus and regular ChromeOS devices like Chromebook and Chromebox). This allows OEMs to customize the branding on their devices. This patch also introduces three new Kconfigs: - CHROMEOS_FW_SPLASH_SCREEN - CHROMEOS_LOGO_PATH - CHROMEBOOK_PLUS_LOGO_PATH which allow users to enable the fw splash screen feature in the vendorcode. Previously, we were using the BMP_LOGO Kconfig in drivers/intel/fsp2_0, but we didn't want the top level Kconfigs to be located inside the architecture specific files. BUG=b:317880956 BRANCH=None TEST=emerge-rex coreboot chromeos-bootimage verify that FW splash screen appears Change-Id: I56613d1e7e81e25b31ad034edae0f716c94c4960 Signed-off-by: Shelley Chen <shchen@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/79775 Reviewed-by: Kapil Porwal <kapilporwal@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
This commit is contained in:
parent
4f24c354ea
commit
fddf9162a3
|
@ -127,6 +127,7 @@ $(obj)/Fsp_2_S.fd: $(call strip_quotes,$(CONFIG_FSP_FD_PATH_2)) $(obj)/Fsp_M.fd
|
|||
endif
|
||||
|
||||
# Add logo to the cbfs image
|
||||
ifneq ($(CONFIG_HAVE_CUSTOM_BMP_LOGO),y)
|
||||
cbfs-files-$(CONFIG_BMP_LOGO) += logo.bmp
|
||||
logo.bmp-file := $(call strip_quotes,$(CONFIG_FSP2_0_LOGO_FILE_NAME))
|
||||
logo.bmp-type := raw
|
||||
|
@ -135,6 +136,7 @@ logo.bmp-compression := LZMA
|
|||
else ifeq ($(CONFIG_BMP_LOGO_COMPRESS_LZ4),y)
|
||||
logo.bmp-compression := LZ4
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(call strip_quotes,$(CONFIG_FSP_HEADER_PATH)),)
|
||||
CPPFLAGS_common+=-I$(CONFIG_FSP_HEADER_PATH)
|
||||
|
|
|
@ -15,7 +15,11 @@ void set_bootsplash(unsigned char *framebuffer, unsigned int x_resolution,
|
|||
unsigned int y_resolution, unsigned int bytes_per_line,
|
||||
unsigned int fb_resolution);
|
||||
|
||||
|
||||
/*
|
||||
* Allow platform-specific BMP logo overrides via HAVE_CUSTOM_BMP_LOGO config.
|
||||
* For example: Introduce configurable BMP logo for customization on platforms like ChromeOS
|
||||
*/
|
||||
const char *bmp_logo_filename(void);
|
||||
void bmp_load_logo(uint32_t *logo_ptr, uint32_t *logo_size);
|
||||
void bmp_release_logo(void);
|
||||
|
||||
|
|
|
@ -149,3 +149,7 @@ config PROBE_RAM
|
|||
help
|
||||
When enabled it will be possible to detect usable RAM using probe_ram
|
||||
function.
|
||||
|
||||
config HAVE_CUSTOM_BMP_LOGO
|
||||
def_bool n
|
||||
depends on BMP_LOGO
|
||||
|
|
|
@ -5,9 +5,17 @@
|
|||
#include <cbfs.h>
|
||||
#include <cbmem.h>
|
||||
#include <stdint.h>
|
||||
#include <vendorcode/google/chromeos/chromeos.h>
|
||||
|
||||
static const struct cbmem_entry *logo_entry;
|
||||
|
||||
#if !CONFIG(HAVE_CUSTOM_BMP_LOGO)
|
||||
const char *bmp_logo_filename(void)
|
||||
{
|
||||
return "logo.bmp";
|
||||
}
|
||||
#endif
|
||||
|
||||
void bmp_load_logo(uint32_t *logo_ptr, uint32_t *logo_size)
|
||||
{
|
||||
void *logo_buffer;
|
||||
|
@ -24,7 +32,7 @@ void bmp_load_logo(uint32_t *logo_ptr, uint32_t *logo_size)
|
|||
if (!logo_buffer)
|
||||
return;
|
||||
|
||||
*logo_size = cbfs_load("logo.bmp", logo_buffer, 1 * MiB);
|
||||
*logo_size = cbfs_load(bmp_logo_filename(), logo_buffer, 1 * MiB);
|
||||
if (*logo_size)
|
||||
*logo_ptr = (uintptr_t)logo_buffer;
|
||||
}
|
||||
|
|
|
@ -79,5 +79,28 @@ config CHROMEOS_NVS
|
|||
bool
|
||||
depends on ACPI_SOC_NVS
|
||||
|
||||
config CHROMEOS_FW_SPLASH_SCREEN
|
||||
bool "Display Splash Screen in firmware"
|
||||
default n
|
||||
select BMP_LOGO
|
||||
select HAVE_CUSTOM_BMP_LOGO
|
||||
help
|
||||
Select this option to display the manufacturer's logo or
|
||||
custom image (OEM splash screen) early in the boot process.
|
||||
This can enhance the user experience by providing visual
|
||||
feedback while the system starts up. For example, ChromeOS
|
||||
devices use this option to show their logo before the operating
|
||||
system loads.
|
||||
|
||||
config CHROMEOS_LOGO_PATH
|
||||
string "Path to ChromeOS logo file"
|
||||
depends on CHROMEOS_FW_SPLASH_SCREEN
|
||||
default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/logo.bmp"
|
||||
|
||||
config CHROMEBOOK_PLUS_LOGO_PATH
|
||||
string "Path to Chromebook Plus logo file"
|
||||
depends on CHROMEOS_FW_SPLASH_SCREEN
|
||||
default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/logo.bmp"
|
||||
|
||||
endif # CHROMEOS
|
||||
endmenu
|
||||
|
|
|
@ -20,3 +20,15 @@ romstage-y += watchdog.c
|
|||
ramstage-y += watchdog.c
|
||||
|
||||
romstage-$(CONFIG_CHROMEOS_DRAM_PART_NUMBER_IN_CBI) += dram_part_num_override.c
|
||||
ramstage-$(CONFIG_CHROMEOS_FW_SPLASH_SCREEN) += splash.c
|
||||
|
||||
# Add logo to the cbfs image
|
||||
cbfs-files-$(CONFIG_CHROMEOS_FW_SPLASH_SCREEN) += cb_logo.bmp
|
||||
cb_logo.bmp-file := $(call strip_quotes,$(CONFIG_CHROMEOS_LOGO_PATH))
|
||||
cb_logo.bmp-type := raw
|
||||
cb_logo.bmp-compression := $(CBFS_COMPRESS_FLAG)
|
||||
|
||||
cbfs-files-$(CONFIG_CHROMEOS_FW_SPLASH_SCREEN) += cb_plus_logo.bmp
|
||||
cb_plus_logo.bmp-file := $(call strip_quotes,$(CONFIG_CHROMEBOOK_PLUS_LOGO_PATH))
|
||||
cb_plus_logo.bmp-type := raw
|
||||
cb_plus_logo.bmp-compression := $(CBFS_COMPRESS_FLAG)
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <bootsplash.h>
|
||||
#include <vendorcode/google/chromeos/chromeos.h>
|
||||
|
||||
const char *bmp_logo_filename(void)
|
||||
{
|
||||
if (chromeos_device_branded_plus())
|
||||
return "cb_plus_logo.bmp";
|
||||
else
|
||||
return "cb_logo.bmp";
|
||||
}
|
Loading…
Reference in New Issue