Skip to content

Commit d263649

Browse files
ranj063lgirdwood
authored andcommitted
module: Add support for module-specific init data
Add a global ID for module specific init data in the extended init data section and update the decode function to save the data in the module's ext_data struct along with the size. Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
1 parent 8acc9ca commit d263649

3 files changed

Lines changed: 21 additions & 3 deletions

File tree

src/audio/module_adapter/module_adapter_ipc4.c

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,18 @@ int module_ext_init_decode(const struct comp_driver *drv, struct module_ext_init
8080
dp_data->shared_bytes);
8181
break;
8282
}
83+
case IPC4_MOD_INIT_DATA_ID_MODULE_DATA:
84+
{
85+
/*
86+
* set the module init_data. Modules must copy/save this in their init
87+
* callbacks if they need this to be persistent
88+
*/
89+
ext_data->module_data = (const void *)(obj + 1);
90+
ext_data->module_data_size = obj->object_words * sizeof(uint32_t);
91+
comp_cl_info(drv, "module init data size %u bytes",
92+
ext_data->module_data_size);
93+
break;
94+
}
8395
default:
8496
comp_cl_info(drv, "Unknown ext init object id %u of %u words",
8597
obj->object_id, obj->object_words);
@@ -147,8 +159,11 @@ int module_adapter_init_data(struct comp_dev *dev,
147159
}
148160
}
149161

150-
dst->init_data = cfg; /* legacy API */
151-
dst->avail = true;
162+
if (!config->ipc_extended_init) {
163+
dst->init_data = cfg; /* legacy API */
164+
dst->avail = true;
165+
}
166+
152167
return 0;
153168
}
154169

src/include/ipc4/module.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ struct ipc4_vendor_error {
7777
enum ipc4_mod_init_data_glb_id {
7878
IPC4_MOD_INIT_DATA_ID_INVALID = 0,
7979
IPC4_MOD_INIT_DATA_ID_DP_DATA = 1,
80-
IPC4_MOD_INIT_DATA_ID_MAX = IPC4_MOD_INIT_DATA_ID_DP_DATA,
80+
IPC4_MOD_INIT_DATA_ID_MODULE_DATA = 2,
81+
IPC4_MOD_INIT_DATA_ID_MAX = IPC4_MOD_INIT_DATA_ID_MODULE_DATA,
8182
};
8283

8384
/* data object for vendor bespoke data with ABI growth and backwards compat */

src/include/module/module/base.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
struct ipc4_module_init_ext_obj_dp_data;
3434
struct module_ext_init_data {
3535
const struct ipc4_module_init_ext_obj_dp_data *dp_data;
36+
const void *module_data;
37+
size_t module_data_size;
3638
};
3739

3840
/**

0 commit comments

Comments
 (0)