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:
Shelley Chen
2024-01-03 14:00:07 -08:00
committed by Subrata Banik
parent 4f24c354ea
commit fddf9162a3
7 changed files with 67 additions and 2 deletions

View File

@@ -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

View File

@@ -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;
}