diff --git a/src/audio/base_fw.c b/src/audio/base_fw.c index ce7b5ca7778e..afd584777b32 100644 --- a/src/audio/base_fw.c +++ b/src/audio/base_fw.c @@ -111,6 +111,11 @@ 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); + if (IS_ENABLED(CONFIG_ADSP_IMR_CONTEXT_SAVE)) { + tuple = tlv_next(tuple); + tlv_value_uint32_set(tuple, IPC4_FW_CONTEXT_SAVE, 1); + } + 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 3c4a953405e2..1d33cadceadd 100644 --- a/src/include/ipc4/base_fw.h +++ b/src/include/ipc4/base_fw.h @@ -361,8 +361,10 @@ enum ipc4_fw_config_params { IPC4_BUS_HARDWARE_ID = 25, /* Total number of FW config parameters */ IPC4_FW_CFG_PARAMS_COUNT, + /* FW context save on D3 entry */ + IPC4_FW_CONTEXT_SAVE, /* Max config parameter id */ - IPC4_MAX_FW_CFG_PARAM = IPC4_FW_CFG_PARAMS_COUNT - 1, + IPC4_MAX_FW_CFG_PARAM = IPC4_FW_CONTEXT_SAVE - 1, }; enum ipc4_hw_config_params {