module_adapter: Fix iadk module component compilation.

The patch introduced in this commit:
SHA-1: 68345fb168
* module_adapter: Add support for IPC4 in module_adapter_new
broke previous implementation of iadk_modules.c, sice loadable
modueles needs congiguration size to be passed from IPC handler
to the module code. These changes resolves that issue.

Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
This commit is contained in:
Jaroslaw Stelter 2022-09-05 14:52:18 +02:00 committed by Liam Girdwood
parent 359326b8db
commit e76c236801
2 changed files with 21 additions and 16 deletions

View File

@ -55,12 +55,15 @@ static int iadk_modules_init(struct processing_module *mod)
uint32_t module_entry_point;
struct module_data *md = &mod->priv;
struct comp_dev *dev = mod->dev;
struct ipc4_base_module_cfg *src_cfg =
(struct ipc4_base_module_cfg *)md->cfg.data;
int ret = 0;
byte_array_t mod_cfg;
mod_cfg.data = md->cfg.data;
/* Intel modules expects DW size here */
mod_cfg.size = (md->cfg.size >> 2);
md->private = md->cfg.data;
struct comp_ipc_config *config = &(mod->dev->ipc_config);
@ -81,6 +84,23 @@ static int iadk_modules_init(struct processing_module *mod)
instance_id, 0, log_handle, (void *)&mod_cfg);
md->module_adapter = mod_adp;
/* Allocate module buffers */
md->mpd.in_buff = rballoc(0, SOF_MEM_CAPS_RAM, src_cfg->ibs);
if (!md->mpd.in_buff) {
comp_err(dev, "iadk_modules_init(): Failed to alloc in_buff");
return -ENOMEM;
}
md->mpd.in_buff_size = src_cfg->ibs;
md->mpd.out_buff = rballoc(0, SOF_MEM_CAPS_RAM, src_cfg->obs);
if (!md->mpd.out_buff) {
comp_err(dev, "iadk_modules_init(): Failed to alloc out_buff");
rfree(md->mpd.in_buff);
return -ENOMEM;
}
md->mpd.out_buff_size = src_cfg->obs;
/* Call module specific init function if exists. */
ret = iadk_wrapper_init(mod->priv.module_adapter);
return ret;
@ -101,26 +121,10 @@ static int iadk_modules_prepare(struct processing_module *mod)
{
struct comp_dev *dev = mod->dev;
struct module_data *codec = &mod->priv;
struct ipc4_base_module_cfg *src_cfg =
(struct ipc4_base_module_cfg *)lib_manager_get_config(dev);
int ret = 0;
comp_info(dev, "iadk_modules_prepare()");
codec->mpd.in_buff = rballoc(0, SOF_MEM_CAPS_RAM, src_cfg->ibs);
if (!codec->mpd.in_buff) {
comp_err(dev, "iadk_modules_prepare(): Failed to alloc in_buff");
return -ENOMEM;
}
codec->mpd.in_buff_size = src_cfg->ibs;
codec->mpd.out_buff = rballoc(0, SOF_MEM_CAPS_RAM, src_cfg->obs);
if (!codec->mpd.out_buff) {
comp_err(dev, "iadk_modules_prepare(): Failed to alloc out_buff");
rfree(codec->mpd.in_buff);
return -ENOMEM;
}
codec->mpd.out_buff_size = src_cfg->obs;
/* Call module specific prepare function if exists. */
ret = iadk_wrapper_prepare(mod->priv.module_adapter);
return 0;

View File

@ -10,6 +10,7 @@
#include <stdint.h>
#include <sys/util.h>
#include <user/trace.h>
#include <rtos/string.h>
#ifdef __XTENSA__
#define RESTRICT __restrict