summaryrefslogtreecommitdiff
path: root/src/vendorcode
diff options
context:
space:
mode:
authorShelley Chen <shchen@google.com>2024-01-03 14:00:07 -0800
committerSubrata Banik <subratabanik@google.com>2024-01-11 03:54:42 +0000
commitfddf9162a3f82ab6da5b29d3bf88b1d46b04f56d (patch)
treee97aed9aaf84b0a974b2bd201c0bb85f86bc9371 /src/vendorcode
parent4f24c354eafa4ec6654df40c896ce2a5f32b5587 (diff)
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>
Diffstat (limited to 'src/vendorcode')
-rw-r--r--src/vendorcode/google/chromeos/Kconfig23
-rw-r--r--src/vendorcode/google/chromeos/Makefile.inc12
-rw-r--r--src/vendorcode/google/chromeos/splash.c12
3 files changed, 47 insertions, 0 deletions
diff --git a/src/vendorcode/google/chromeos/Kconfig b/src/vendorcode/google/chromeos/Kconfig
index 09796527a1..74f23d60ac 100644
--- a/src/vendorcode/google/chromeos/Kconfig
+++ b/src/vendorcode/google/chromeos/Kconfig
@@ -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
diff --git a/src/vendorcode/google/chromeos/Makefile.inc b/src/vendorcode/google/chromeos/Makefile.inc
index dce4d9ccf1..af37a0981e 100644
--- a/src/vendorcode/google/chromeos/Makefile.inc
+++ b/src/vendorcode/google/chromeos/Makefile.inc
@@ -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)
diff --git a/src/vendorcode/google/chromeos/splash.c b/src/vendorcode/google/chromeos/splash.c
new file mode 100644
index 0000000000..3532fb8f5a
--- /dev/null
+++ b/src/vendorcode/google/chromeos/splash.c
@@ -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";
+}