Skip to content

Commit 3e62086

Browse files
committed
lib_manager: modules: Unification of loadable module initialization functions
Move module allocation and system agent call from modules_init to lib_manager_module_create to unify the module loading process. Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
1 parent 06144e5 commit 3e62086

File tree

6 files changed

+159
-135
lines changed

6 files changed

+159
-135
lines changed

src/audio/module_adapter/iadk/system_agent.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ typedef int (*create_instance_f)(uint32_t module_id, uint32_t instance_id, uint3
126126

127127
int system_agent_start(uintptr_t entry_point, uint32_t module_id, uint32_t instance_id,
128128
uint32_t core_id, uint32_t log_handle, void* mod_cfg,
129-
void **adapter)
129+
const void **adapter)
130130
{
131131
uint32_t ret;
132132
SystemAgent system_agent(module_id, instance_id, core_id, log_handle);

src/audio/module_adapter/module/modules.c

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
#include <sof/audio/module_adapter/module/modules.h>
1010
#include <utilities/array.h>
1111
#include <iadk_module_adapter.h>
12-
#include <system_agent.h>
1312
#include <sof/lib_manager.h>
1413
#include <sof/audio/module_adapter/module/module_interface.h>
1514

@@ -56,46 +55,16 @@ static int modules_init(struct processing_module *mod)
5655
{
5756
struct module_data *md = &mod->priv;
5857
struct comp_dev *dev = mod->dev;
59-
const struct comp_driver *const drv = dev->drv;
6058
const struct ipc4_base_module_cfg *src_cfg = &md->cfg.base_cfg;
61-
const struct comp_ipc_config *config = &dev->ipc_config;
62-
void *adapter;
63-
int ret;
64-
65-
uintptr_t module_entry_point = lib_manager_allocate_module(config, src_cfg);
66-
67-
if (module_entry_point == 0) {
68-
comp_err(dev, "modules_init(), lib_manager_allocate_module() failed!");
69-
return -EINVAL;
70-
}
7159

7260
/* At this point module resources are allocated and it is moved to L2 memory. */
7361
comp_info(dev, "modules_init() start");
7462

75-
const uint32_t module_id = IPC4_MOD_ID(config->id);
76-
const uint32_t instance_id = IPC4_INST_ID(config->id);
77-
const uint32_t log_handle = (uint32_t)drv->tctx;
78-
79-
byte_array_t mod_cfg = {
80-
.data = (uint8_t *)md->cfg.init_data,
81-
/* Intel modules expects DW size here */
82-
.size = md->cfg.size >> 2,
83-
};
84-
85-
ret = system_agent_start(module_entry_point, module_id, instance_id, 0, log_handle,
86-
&mod_cfg, &adapter);
87-
if (ret) {
88-
comp_info(dev, "System agent failed");
89-
return ret;
90-
}
91-
92-
module_set_private_data(mod, adapter);
93-
9463
md->mpd.in_buff_size = src_cfg->ibs;
9564
md->mpd.out_buff_size = src_cfg->obs;
9665

9766
mod->proc_type = MODULE_PROCESS_TYPE_SOURCE_SINK;
98-
return iadk_wrapper_init(adapter);
67+
return iadk_wrapper_init(module_get_private_data(mod));
9968
}
10069

10170
/**

src/include/sof/audio/module_adapter/iadk/system_agent.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ extern "C" {
108108
* the agent system. The system_agent_start function returns it in the variable adapter.
109109
*/
110110
int system_agent_start(uintptr_t entry_point, uint32_t module_id, uint32_t instance_id,
111-
uint32_t core_id, uint32_t log_handle, void *mod_cfg, void **adapter);
111+
uint32_t core_id, uint32_t log_handle, void *mod_cfg, const void **adapter);
112112
#ifdef __cplusplus
113113
}
114114
#endif

src/include/sof/audio/module_adapter/library/native_system_agent.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
#include <sof/audio/module_adapter/module/module_interface.h>
1212
#include <native_system_service.h>
1313

14+
typedef int (*system_agent_start_fn)(uintptr_t entry_point, uint32_t module_id,
15+
uint32_t instance_id, uint32_t core_id, uint32_t log_handle,
16+
void *mod_cfg, const void **adapter);
17+
1418
struct native_system_agent {
1519
struct system_service system_service;
1620
uint32_t log_handle;

src/include/sof/lib_manager.h

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -186,21 +186,6 @@ int lib_manager_register_module(const uint32_t component_id);
186186
*/
187187
const struct sof_man_fw_desc *lib_manager_get_library_manifest(int module_id);
188188

189-
struct processing_module;
190-
struct comp_ipc_config;
191-
/*
192-
* \brief Allocate module
193-
*
194-
* param[in] drv - component driver
195-
* param[in] ipc_config - audio component base configuration from IPC at creation
196-
* param[in] ipc_specific_config - ipc4 base configuration
197-
*
198-
* Function is responsible to allocate module in available free memory and assigning proper address.
199-
* (WIP) These feature will contain module validation and proper memory management.
200-
*/
201-
uintptr_t lib_manager_allocate_module(const struct comp_ipc_config *ipc_config,
202-
const void *ipc_specific_config);
203-
204189
/*
205190
* \brief Free module
206191
*

0 commit comments

Comments
 (0)