summaryrefslogtreecommitdiff
path: root/src/soc
diff options
context:
space:
mode:
authorJeremy Compostella <jeremy.compostella@intel.com>2023-01-19 11:32:25 -0700
committerNick Vaccaro <nvaccaro@google.com>2023-01-24 00:51:03 +0000
commit08b5200db7d182b10a32f67d4343e3f09617a09b (patch)
tree9ce63e47ec4eff731aca7ee221ba31b006db57af /src/soc
parente3884a1c8f2fceb0d4423c2fa5761bf3732ebe5f (diff)
soc/intel/common/cse_lite: Allow specific operation prior to update
Some boards may want to perform a specific operation before the CSE FW update final operation begins. For instance, on Brya this new callback can be used to inform the end-user that an update is in progress. BUG=b:264648959 BRANCH=firmware-brya-14505.B TEST=Compilation success Change-Id: Ia4d32a71f3ae61d2e24197fee6b458512f7778a9 Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/72097 Reviewed-by: Tarun Tuli <taruntuli@google.com> Reviewed-by: Nick Vaccaro <nvaccaro@google.com> Reviewed-by: Bora Guvendik <bora.guvendik@intel.com> Reviewed-by: Anil Kumar K <anil.kumar.k@intel.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/soc')
-rw-r--r--src/soc/intel/common/block/cse/cse_lite.c6
-rw-r--r--src/soc/intel/common/block/include/intelblocks/cse.h3
2 files changed, 9 insertions, 0 deletions
diff --git a/src/soc/intel/common/block/cse/cse_lite.c b/src/soc/intel/common/block/cse/cse_lite.c
index 8f4afae8ef..9866d55d78 100644
--- a/src/soc/intel/common/block/cse/cse_lite.c
+++ b/src/soc/intel/common/block/cse/cse_lite.c
@@ -378,6 +378,11 @@ __weak void cse_board_reset(void)
/* Default weak implementation, does nothing. */
}
+__weak void cse_fw_update_misc_oper(void)
+{
+ /* Default weak implementation, does nothing. */
+}
+
/* Set the CSE's next boot partition and issues system reset */
static enum cb_err cse_set_and_boot_from_next_bp(enum boot_partition_id bp)
{
@@ -784,6 +789,7 @@ static enum csme_failure_reason cse_trigger_fw_update(const struct cse_bp_info *
goto error_exit;
}
+ cse_fw_update_misc_oper();
rv = cse_update_rw(cse_bp_info, cse_cbfs_rw, size, target_rdev);
error_exit:
diff --git a/src/soc/intel/common/block/include/intelblocks/cse.h b/src/soc/intel/common/block/include/intelblocks/cse.h
index 422f69c1c6..b031aa3390 100644
--- a/src/soc/intel/common/block/include/intelblocks/cse.h
+++ b/src/soc/intel/common/block/include/intelblocks/cse.h
@@ -500,6 +500,9 @@ void cse_fw_sync(void);
/* Perform a board-specific reset sequence for CSE RO<->RW jump */
void cse_board_reset(void);
+/* Perform a misc operation before CSE firmware update. */
+void cse_fw_update_misc_oper(void);
+
/* Trigger vboot recovery mode on a CSE error */
void cse_trigger_vboot_recovery(enum csme_failure_reason reason);