From 1a2b70284895a9daef667aada307405039dc8cce Mon Sep 17 00:00:00 2001 From: Sridhar Siricilla Date: Fri, 4 Dec 2020 02:22:28 +0530 Subject: soc/intel/common: Move CSE Lite driver functionality into romstage The patch sets up the CSE Lite driver in the romstage instead of ramstage. With this change, CSE Lite driver sets CSE's boot partition and triggers CSE FW update in the romstage. The cse_fw_sync() must be called after DRAM initialization as HMRFPO_ENABLE HECI command (which is used by cse_fw_sync()) is expected to be executed after DRAM initialization. With this change, it improves the cold boot time by ~154ms. Test=Verified on JSL and TGL platforms BUG=b:174694480 Signed-off-by: Sridhar Siricilla Change-Id: I2fd562a5c6c8501226abbcb68021d9356bcf0b73 Reviewed-on: https://review.coreboot.org/c/coreboot/+/48279 Reviewed-by: Furquan Shaikh Tested-by: build bot (Jenkins) --- src/soc/intel/common/block/cse/Makefile.inc | 2 +- src/soc/intel/common/block/cse/cse_lite.c | 4 +--- src/soc/intel/common/block/include/intelblocks/cse.h | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/soc/intel/common/block/cse/Makefile.inc b/src/soc/intel/common/block/cse/Makefile.inc index d2f94a41a9..30eb78e091 100644 --- a/src/soc/intel/common/block/cse/Makefile.inc +++ b/src/soc/intel/common/block/cse/Makefile.inc @@ -1,7 +1,7 @@ bootblock-$(CONFIG_SOC_INTEL_COMMON_BLOCK_CSE) += cse.c romstage-$(CONFIG_SOC_INTEL_COMMON_BLOCK_CSE) += cse.c ramstage-$(CONFIG_SOC_INTEL_COMMON_BLOCK_CSE) += cse.c -ramstage-$(CONFIG_SOC_INTEL_CSE_LITE_SKU) += cse_lite.c +romstage-$(CONFIG_SOC_INTEL_CSE_LITE_SKU) += cse_lite.c smm-$(CONFIG_SOC_INTEL_COMMON_BLOCK_HECI_DISABLE_IN_SMM) += disable_heci.c ifeq ($(CONFIG_SOC_INTEL_CSE_RW_UPDATE),y) diff --git a/src/soc/intel/common/block/cse/cse_lite.c b/src/soc/intel/common/block/cse/cse_lite.c index 1d261eaf36..036a50a4bf 100644 --- a/src/soc/intel/common/block/cse/cse_lite.c +++ b/src/soc/intel/common/block/cse/cse_lite.c @@ -775,7 +775,7 @@ static uint8_t cse_fw_update(const struct cse_bp_info *cse_bp_info) return 0; } -void cse_fw_sync(void *unused) +void cse_fw_sync(void) { static struct get_bp_info_rsp cse_bp_info; @@ -814,5 +814,3 @@ void cse_fw_sync(void *unused) cse_trigger_recovery(CSE_LITE_SKU_RW_SWITCH_ERROR); } } - -BOOT_STATE_INIT_ENTRY(BS_PRE_DEVICE, BS_ON_ENTRY, cse_fw_sync, NULL); diff --git a/src/soc/intel/common/block/include/intelblocks/cse.h b/src/soc/intel/common/block/include/intelblocks/cse.h index 64ee0ddd06..1a95e2efcb 100644 --- a/src/soc/intel/common/block/include/intelblocks/cse.h +++ b/src/soc/intel/common/block/include/intelblocks/cse.h @@ -236,7 +236,7 @@ uint8_t cse_wait_com_soft_temp_disable(void); * In software triggered recovery mode, the function allows CSE to boot from whatever is * currently selected partition. */ -void cse_fw_sync(void *unused); +void cse_fw_sync(void); /* Perform a board-specific reset sequence for CSE RO<->RW jump */ void cse_board_reset(void); -- cgit v1.2.3