From c131ebb312ea71e87467fb85a72690842344acb7 Mon Sep 17 00:00:00 2001 From: "barry.jan" Date: Mon, 10 Mar 2025 19:24:40 +0800 Subject: [PATCH] waves: avoid calling MaxxEffect_Message before MaxxEffect_Initialize Save the blob into the cache and ensure that MaxxEffect_Message is not called before MaxxEffect_Initialize to avoid returning an error code from MaxxEffect_Message. Signed-off-by: barry.jan --- src/audio/module_adapter/module/waves/waves.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/audio/module_adapter/module/waves/waves.c b/src/audio/module_adapter/module/waves/waves.c index ee45c7077405..8f83e4a15462 100644 --- a/src/audio/module_adapter/module/waves/waves.c +++ b/src/audio/module_adapter/module/waves/waves.c @@ -43,6 +43,7 @@ struct waves_codec_data { void *response; uint32_t config_blob_size; void *config_blob; + bool initialized; }; enum waves_codec_params { @@ -353,6 +354,7 @@ static int waves_effect_init(struct processing_module *mod) comp_err(dev, "waves_effect_init() MaxxEffect_Initialize returned %d", status); return -EINVAL; } + waves_codec->initialized = true; comp_dbg(dev, "waves_effect_init() done"); return 0; @@ -509,14 +511,17 @@ static int waves_effect_message(struct processing_module *mod, void *data, uint3 MaxxStatus_t status; uint32_t response_size = 0; - comp_info(dev, "waves_effect_message() start data %p size %d", data, size); + if (waves_codec->initialized) { + comp_info(dev, "waves_effect_message() start data %p size %d", data, size); - status = MaxxEffect_Message(waves_codec->effect, data, size, - waves_codec->response, &response_size); + status = MaxxEffect_Message(waves_codec->effect, data, size, + waves_codec->response, &response_size); - if (status) { - comp_err(dev, "waves_effect_message() MaxxEffect_Message returned %d", status); - return -EINVAL; + if (status) { + comp_err(dev, "waves_effect_message() MaxxEffect_Message returned %d", + status); + return -EINVAL; + } } #if CONFIG_TRACEV @@ -693,6 +698,7 @@ static int waves_codec_init(struct processing_module *mod) return -ENOMEM; } waves_codec->response = response; + waves_codec->initialized = false; comp_dbg(dev, "waves_codec_init() done"); return ret; @@ -844,6 +850,7 @@ static int waves_codec_reset(struct processing_module *mod) if (codec->mpd.out_buff) module_free_memory(mod, codec->mpd.out_buff); + waves_codec->initialized = false; comp_dbg(dev, "waves_codec_reset() done"); return ret; }