summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubrata Banik <subratabanik@google.com>2023-01-16 13:52:40 +0530
committerFelix Held <felix-coreboot@felixheld.de>2023-01-17 19:25:35 +0000
commitd4cc902c57ca6e57ebf27e8fc63748f984a1d868 (patch)
tree1ad876d596a506c4215c9ecd90d89b9852322333
parent55812d6430b3bcab3961943621fe2784a3e2b79a (diff)
soc/intel/meteorlake: Avoid redundant chipset programming in romstage
This patch refactors the mainboard_romstage_entry() function to avoid redundant chipset programming caused by global reset due to CSE FW sync operation. Hence, keeping only the minimal and mandatory operations required to perform CSE FW sync successfully. This would help to optimize the boot flow by removing redundant programming like SA, SMBUS twice in every CSE FW update path. TEST=Able to build and boot Google/Rex successfully. Signed-off-by: Subrata Banik <subratabanik@google.com> Change-Id: I1a13fac1e99341991d8dd818d4ab8a20d209a94c Reviewed-on: https://review.coreboot.org/c/coreboot/+/71933 Reviewed-by: Sridhar Siricilla <sridhar.siricilla@intel.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/soc/intel/meteorlake/romstage/romstage.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/soc/intel/meteorlake/romstage/romstage.c b/src/soc/intel/meteorlake/romstage/romstage.c
index 35f9368b5a..340716fd23 100644
--- a/src/soc/intel/meteorlake/romstage/romstage.c
+++ b/src/soc/intel/meteorlake/romstage/romstage.c
@@ -119,23 +119,23 @@ static void save_dimm_info(void)
void mainboard_romstage_entry(void)
{
- bool s3wake;
struct chipset_power_state *ps = pmc_get_power_state();
+ bool s3wake = pmc_fill_power_state(ps) == ACPI_S3;
- /* Program MCHBAR, DMIBAR, GDXBAR and EDRAMBAR */
- systemagent_early_init();
- /* Program SMBus base address and enable it */
- smbus_common_init();
/* Initialize HECI interface */
cse_init(HECI1_BASE_ADDRESS);
- s3wake = pmc_fill_power_state(ps) == ACPI_S3;
if (!s3wake && CONFIG(SOC_INTEL_CSE_LITE_SKU)) {
timestamp_add_now(TS_CSE_FW_SYNC_START);
cse_fw_sync();
timestamp_add_now(TS_CSE_FW_SYNC_END);
}
+ /* Program MCHBAR, DMIBAR, GDXBAR and EDRAMBAR */
+ systemagent_early_init();
+ /* Program SMBus base address and enable it */
+ smbus_common_init();
+
/*
* Set low maximum temp threshold value used for dynamic thermal sensor
* shutdown consideration.