From 9d0fea8c2d114dbd73a8dd885136ba649aa864e2 Mon Sep 17 00:00:00 2001
From: Rander Wang <rander.wang@intel.com>
Date: Wed, 1 Nov 2023 11:08:32 +0800
Subject: [PATCH] basefw: add support for fw config query for context save

If CONFIG_ADSP_IMR_CONTEXT_SAVE is enabled, base fw will report
fw_context_save is supported to host. Driver will assume fw doesn't
support this feature if it is not reported.

Signed-off-by: Rander Wang <rander.wang@intel.com>
---
 src/audio/base_fw.c        | 4 ++++
 src/include/ipc4/base_fw.h | 2 ++
 2 files changed, 6 insertions(+)

diff --git a/src/audio/base_fw.c b/src/audio/base_fw.c
index ce7b5ca7778e..dc2d282be4c7 100644
--- a/src/audio/base_fw.c
+++ b/src/audio/base_fw.c
@@ -111,6 +111,10 @@ static int basefw_config(uint32_t *data_offset, char *data)
 	sche_cfg.sys_tick_source = SOF_SCHEDULE_LL_TIMER;
 	tlv_value_set(tuple, IPC4_SCHEDULER_CONFIGURATION, sizeof(sche_cfg), &sche_cfg);
 
+	tuple = tlv_next(tuple);
+	tlv_value_uint32_set(tuple, IPC4_FW_CONTEXT_SAVE,
+			     IS_ENABLED(CONFIG_ADSP_IMR_CONTEXT_SAVE));
+
 	tuple = tlv_next(tuple);
 	*data_offset = (int)((char *)tuple - data);
 
diff --git a/src/include/ipc4/base_fw.h b/src/include/ipc4/base_fw.h
index 4b6458ceecf1..9f3bc4328c82 100644
--- a/src/include/ipc4/base_fw.h
+++ b/src/include/ipc4/base_fw.h
@@ -365,6 +365,8 @@ enum ipc4_fw_config_params {
 	IPC4_KPB_RT_SINK_COUNT = 27,
 	/* Manual control of DMI L1 state */
 	IPC4_DMI_FORCE_L1_EXIT = 28,
+	/* FW context save on D3 entry */
+	IPC4_FW_CONTEXT_SAVE = 29,
 	/* Total number of FW config parameters  */
 	IPC4_FW_CFG_PARAMS_COUNT,
 	/* Max config parameter id */