diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2021-01-09 20:38:43 +0200 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2021-02-09 07:52:31 +0000 |
commit | 4949a3dd626560aa504cee18d936d0d7602becfa (patch) | |
tree | aa804caed95d613a0c9a1def5c44debfa22ef1ab /src/drivers/intel | |
parent | 1aaa72836d1a51b583b7a4352bceff72ab6ff091 (diff) |
drivers/intel/fsp1_1,fsp2_0: Refactor logo display
Hide the detail of allocation from cbmem from the FSP.
Loading of a BMP logo file from CBFS is not tied to FSP
version and we do not need two copies of the code, move
it under lib/.
Change-Id: I909f2771af534993cf8ba99ff0acd0bbd2c78f04
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/50359
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'src/drivers/intel')
-rw-r--r-- | src/drivers/intel/fsp1_1/Kconfig | 4 | ||||
-rw-r--r-- | src/drivers/intel/fsp1_1/Makefile.inc | 3 | ||||
-rw-r--r-- | src/drivers/intel/fsp1_1/include/fsp/ramstage.h | 2 | ||||
-rw-r--r-- | src/drivers/intel/fsp1_1/logo.c | 23 | ||||
-rw-r--r-- | src/drivers/intel/fsp1_1/ramstage.c | 11 | ||||
-rw-r--r-- | src/drivers/intel/fsp2_0/Kconfig | 4 | ||||
-rw-r--r-- | src/drivers/intel/fsp2_0/Makefile.inc | 3 | ||||
-rw-r--r-- | src/drivers/intel/fsp2_0/include/fsp/api.h | 5 | ||||
-rw-r--r-- | src/drivers/intel/fsp2_0/logo.c | 23 | ||||
-rw-r--r-- | src/drivers/intel/fsp2_0/silicon_init.c | 16 |
10 files changed, 19 insertions, 75 deletions
diff --git a/src/drivers/intel/fsp1_1/Kconfig b/src/drivers/intel/fsp1_1/Kconfig index d2cfa536c7..3ab90963fe 100644 --- a/src/drivers/intel/fsp1_1/Kconfig +++ b/src/drivers/intel/fsp1_1/Kconfig @@ -78,7 +78,7 @@ config SKIP_FSP_CAR help Selected by platforms that implement their own CAR setup. -config FSP1_1_DISPLAY_LOGO +config BMP_LOGO bool "Enable logo" default n help @@ -87,7 +87,7 @@ config FSP1_1_DISPLAY_LOGO config FSP1_1_LOGO_FILE_NAME string "Logo file" - depends on FSP1_1_DISPLAY_LOGO + depends on BMP_LOGO default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/logo.bmp" endif #PLATFORM_USES_FSP1_1 diff --git a/src/drivers/intel/fsp1_1/Makefile.inc b/src/drivers/intel/fsp1_1/Makefile.inc index b5dd3c3810..425923725c 100644 --- a/src/drivers/intel/fsp1_1/Makefile.inc +++ b/src/drivers/intel/fsp1_1/Makefile.inc @@ -21,7 +21,6 @@ romstage-$(CONFIG_MMA) += mma_core.c ramstage-y += fsp_relocate.c ramstage-y += fsp_util.c ramstage-y += hob.c -ramstage-$(CONFIG_FSP1_1_DISPLAY_LOGO) += logo.c ramstage-y += ramstage.c ramstage-$(CONFIG_INTEL_GMA_ADD_VBT) += vbt.c ramstage-$(CONFIG_MMA) += mma_core.c @@ -44,7 +43,7 @@ fsp.bin-COREBOOT-position := $(CONFIG_FSP_LOC) endif # Add logo to the cbfs image -cbfs-files-$(CONFIG_FSP1_1_DISPLAY_LOGO) += logo.bmp +cbfs-files-$(CONFIG_BMP_LOGO) += logo.bmp logo.bmp-file := $(call strip_quotes,$(CONFIG_FSP1_1_LOGO_FILE_NAME)) logo.bmp-type := raw logo.bmp-compression := LZMA diff --git a/src/drivers/intel/fsp1_1/include/fsp/ramstage.h b/src/drivers/intel/fsp1_1/include/fsp/ramstage.h index 50e3bd6fad..dec23938d1 100644 --- a/src/drivers/intel/fsp1_1/include/fsp/ramstage.h +++ b/src/drivers/intel/fsp1_1/include/fsp/ramstage.h @@ -9,7 +9,6 @@ /* Perform Intel silicon init. */ void intel_silicon_init(void); void fsp_run_silicon_init(FSP_INFO_HEADER *fsp_info_header, int is_s3_wakeup); -const struct cbmem_entry *fsp_load_logo(UINT32 *logo_ptr, UINT32 *logo_size); /* Called after the silicon init code has run. */ void soc_after_silicon_init(void); /* Initialize UPD data before SiliconInit call. */ @@ -17,7 +16,6 @@ void soc_silicon_init_params(SILICON_INIT_UPD *params); void mainboard_silicon_init_params(SILICON_INIT_UPD *params); void soc_display_silicon_init_params(const SILICON_INIT_UPD *old, SILICON_INIT_UPD *new); -const struct cbmem_entry *soc_load_logo(SILICON_INIT_UPD *params); void load_vbt(SILICON_INIT_UPD *params); #endif /* _INTEL_COMMON_RAMSTAGE_H_ */ diff --git a/src/drivers/intel/fsp1_1/logo.c b/src/drivers/intel/fsp1_1/logo.c deleted file mode 100644 index bcaf15715f..0000000000 --- a/src/drivers/intel/fsp1_1/logo.c +++ /dev/null @@ -1,23 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include <cbfs.h> -#include <cbmem.h> -#include <soc/ramstage.h> - -const struct cbmem_entry *fsp_load_logo(UINT32 *logo_ptr, UINT32 *logo_size) -{ - const struct cbmem_entry *logo_entry = NULL; - void *logo_buffer; - - logo_entry = cbmem_entry_add(CBMEM_ID_FSP_LOGO, 1 * MiB); - if (logo_entry) { - logo_buffer = cbmem_entry_start(logo_entry); - if (logo_buffer) { - *logo_size = cbfs_load("logo.bmp", (void *)logo_buffer, - 1 * MiB); - if (*logo_size) - *logo_ptr = (UINT32)logo_buffer; - } - } - return (logo_entry); -} diff --git a/src/drivers/intel/fsp1_1/ramstage.c b/src/drivers/intel/fsp1_1/ramstage.c index ddfc3c7e54..34eec6e433 100644 --- a/src/drivers/intel/fsp1_1/ramstage.c +++ b/src/drivers/intel/fsp1_1/ramstage.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include <bootmode.h> +#include <bootsplash.h> #include <acpi/acpi.h> #include <console/console.h> #include <fsp/ramstage.h> @@ -58,7 +59,6 @@ void fsp_run_silicon_init(FSP_INFO_HEADER *fsp_info_header, int is_s3_wakeup) EFI_STATUS status; UPD_DATA_REGION *upd_ptr; VPD_DATA_REGION *vpd_ptr; - const struct cbmem_entry *logo_entry = NULL; /* Display the FSP header */ if (fsp_info_header == NULL) { @@ -85,8 +85,9 @@ void fsp_run_silicon_init(FSP_INFO_HEADER *fsp_info_header, int is_s3_wakeup) load_vbt(&silicon_init_params); mainboard_silicon_init_params(&silicon_init_params); - if (CONFIG(FSP1_1_DISPLAY_LOGO) && !is_s3_wakeup) - logo_entry = soc_load_logo(&silicon_init_params); + if (CONFIG(BMP_LOGO)) + bmp_load_logo(&silicon_init_params.PcdLogoPtr, + &silicon_init_params.PcdLogoSize); /* Display the UPD data */ if (CONFIG(DISPLAY_UPD_DATA)) @@ -106,8 +107,8 @@ void fsp_run_silicon_init(FSP_INFO_HEADER *fsp_info_header, int is_s3_wakeup) printk(BIOS_DEBUG, "FspSiliconInit returned 0x%08x\n", status); /* The logo_entry can be freed up now as it is not required any longer */ - if (logo_entry && !is_s3_wakeup) - cbmem_entry_remove(logo_entry); + if (CONFIG(BMP_LOGO)) + bmp_release_logo(); /* Mark graphics init done after SiliconInit if VBT was provided */ #if CONFIG(RUN_FSP_GOP) diff --git a/src/drivers/intel/fsp2_0/Kconfig b/src/drivers/intel/fsp2_0/Kconfig index 285bedf8b7..63394dd4e5 100644 --- a/src/drivers/intel/fsp2_0/Kconfig +++ b/src/drivers/intel/fsp2_0/Kconfig @@ -184,7 +184,7 @@ config HAVE_FSP_LOGO_SUPPORT bool default n -config FSP2_0_DISPLAY_LOGO +config BMP_LOGO bool "Enable logo" default n depends on HAVE_FSP_LOGO_SUPPORT @@ -195,7 +195,7 @@ config FSP2_0_DISPLAY_LOGO config FSP2_0_LOGO_FILE_NAME string "Logo file" - depends on FSP2_0_DISPLAY_LOGO + depends on BMP_LOGO default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/logo.bmp" config FSP_COMPRESS_FSP_S_LZMA diff --git a/src/drivers/intel/fsp2_0/Makefile.inc b/src/drivers/intel/fsp2_0/Makefile.inc index 094308022a..92f67114f1 100644 --- a/src/drivers/intel/fsp2_0/Makefile.inc +++ b/src/drivers/intel/fsp2_0/Makefile.inc @@ -22,7 +22,6 @@ ramstage-y += hand_off_block.c ramstage-$(CONFIG_DISPLAY_FSP_HEADER) += header_display.c ramstage-$(CONFIG_DISPLAY_HOBS) += hob_display.c ramstage-$(CONFIG_VERIFY_HOBS) += hob_verify.c -ramstage-$(CONFIG_FSP2_0_DISPLAY_LOGO) += logo.c ramstage-y += notify.c ramstage-y += silicon_init.c ramstage-$(CONFIG_DISPLAY_UPD_DATA) += upd_display.c @@ -86,7 +85,7 @@ $(obj)/Fsp_T.fd: $(call strip_quotes,$(CONFIG_FSP_FD_PATH)) $(obj)/Fsp_M.fd endif # Add logo to the cbfs image -cbfs-files-$(CONFIG_FSP2_0_DISPLAY_LOGO) += logo.bmp +cbfs-files-$(CONFIG_BMP_LOGO) += logo.bmp logo.bmp-file := $(call strip_quotes,$(CONFIG_FSP2_0_LOGO_FILE_NAME)) logo.bmp-type := raw logo.bmp-compression := LZMA diff --git a/src/drivers/intel/fsp2_0/include/fsp/api.h b/src/drivers/intel/fsp2_0/include/fsp/api.h index 97e2fea34d..63018c58db 100644 --- a/src/drivers/intel/fsp2_0/include/fsp/api.h +++ b/src/drivers/intel/fsp2_0/include/fsp/api.h @@ -59,16 +59,13 @@ int soc_fsp_multi_phase_init_is_enable(void); uint8_t fsp_memory_mainboard_version(void); uint8_t fsp_memory_soc_version(void); -/* Load logo to be displayed by FSP */ -const struct cbmem_entry *fsp_load_logo(UINT32 *logo_ptr, UINT32 *logo_size); - /* Callback after processing FSP notify */ void platform_fsp_notify_status(enum fsp_notify_phase phase); /* Initialize memory margin analysis settings. */ void setup_mma(FSP_M_CONFIG *memory_cfg); /* Update the SOC specific logo param and load the logo. */ -const struct cbmem_entry *soc_load_logo(FSPS_UPD *supd); +void soc_load_logo(FSPS_UPD *supd); /* Update the SOC specific memory config param for mma. */ void soc_update_memory_params_for_mma(FSP_M_CONFIG *memory_cfg, struct mma_config_param *mma_cfg); diff --git a/src/drivers/intel/fsp2_0/logo.c b/src/drivers/intel/fsp2_0/logo.c deleted file mode 100644 index 314616b296..0000000000 --- a/src/drivers/intel/fsp2_0/logo.c +++ /dev/null @@ -1,23 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include <cbfs.h> -#include <cbmem.h> -#include <fsp/api.h> - -const struct cbmem_entry *fsp_load_logo(UINT32 *logo_ptr, UINT32 *logo_size) -{ - const struct cbmem_entry *logo_entry = NULL; - void *logo_buffer; - - logo_entry = cbmem_entry_add(CBMEM_ID_FSP_LOGO, 1 * MiB); - if (logo_entry) { - logo_buffer = cbmem_entry_start(logo_entry); - if (logo_buffer) { - *logo_size = cbfs_load("logo.bmp", (void *)logo_buffer, - 1 * MiB); - if (*logo_size) - *logo_ptr = (UINT32)logo_buffer; - } - } - return (logo_entry); -} diff --git a/src/drivers/intel/fsp2_0/silicon_init.c b/src/drivers/intel/fsp2_0/silicon_init.c index 8572b24901..270a872965 100644 --- a/src/drivers/intel/fsp2_0/silicon_init.c +++ b/src/drivers/intel/fsp2_0/silicon_init.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-or-later */ +#include <bootsplash.h> #include <cbfs.h> #include <cbmem.h> #include <commonlib/fsp.h> @@ -81,7 +82,6 @@ static void do_silicon_init(struct fsp_header *hdr) FSPS_UPD *upd, *supd; fsp_silicon_init_fn silicon_init; uint32_t status; - const struct cbmem_entry *logo_entry = NULL; fsp_multi_phase_si_init_fn multi_phase_si_init; struct fsp_multi_phase_params multi_phase_params; struct fsp_multi_phase_get_number_of_phases_params multi_phase_get_number; @@ -106,8 +106,8 @@ static void do_silicon_init(struct fsp_header *hdr) platform_fsp_silicon_init_params_cb(upd); /* Populate logo related entries */ - if (CONFIG(FSP2_0_DISPLAY_LOGO)) - logo_entry = soc_load_logo(upd); + if (CONFIG(BMP_LOGO)) + soc_load_logo(upd); /* Call SiliconInit */ silicon_init = (void *) (uintptr_t)(hdr->image_base + @@ -127,8 +127,8 @@ static void do_silicon_init(struct fsp_header *hdr) timestamp_add_now(TS_FSP_SILICON_INIT_END); post_code(POST_FSP_SILICON_EXIT); - if (logo_entry) - cbmem_entry_remove(logo_entry); + if (CONFIG(BMP_LOGO)) + bmp_release_logo(); fsp_debug_after_silicon_init(status); fsps_return_value_handler(FSP_SILICON_INIT_API, status); @@ -226,8 +226,4 @@ void fsp_silicon_init(bool s3wake) do_silicon_init(&fsps_hdr); } -/* Load bmp and set FSP parameters, fsp_load_logo can be used */ -__weak const struct cbmem_entry *soc_load_logo(FSPS_UPD *supd) -{ - return NULL; -} +__weak void soc_load_logo(FSPS_UPD *supd) { } |