ASoC: Intel: avs: Send initial config to module if present
If there are initial configs to send to module on init do send them. Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com> Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com> Link: https://lore.kernel.org/r/20240208102400.2497791-4-amadeuszx.slawinski@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
1b4217ebbb
commit
8a49ef789b
@ -547,6 +547,33 @@ static int avs_path_module_type_create(struct avs_dev *adev, struct avs_path_mod
|
||||
return avs_modext_create(adev, mod);
|
||||
}
|
||||
|
||||
static int avs_path_module_send_init_configs(struct avs_dev *adev, struct avs_path_module *mod)
|
||||
{
|
||||
struct avs_soc_component *acomp;
|
||||
|
||||
acomp = to_avs_soc_component(mod->template->owner->owner->owner->owner->comp);
|
||||
|
||||
u32 num_ids = mod->template->num_config_ids;
|
||||
u32 *ids = mod->template->config_ids;
|
||||
|
||||
for (int i = 0; i < num_ids; i++) {
|
||||
struct avs_tplg_init_config *config = &acomp->tplg->init_configs[ids[i]];
|
||||
size_t len = config->length;
|
||||
void *data = config->data;
|
||||
u32 param = config->param;
|
||||
int ret;
|
||||
|
||||
ret = avs_ipc_set_large_config(adev, mod->module_id, mod->instance_id,
|
||||
param, data, len);
|
||||
if (ret) {
|
||||
dev_err(adev->dev, "send initial module config failed: %d\n", ret);
|
||||
return AVS_IPC_RET(ret);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void avs_path_module_free(struct avs_dev *adev, struct avs_path_module *mod)
|
||||
{
|
||||
kfree(mod);
|
||||
@ -580,6 +607,12 @@ avs_path_module_create(struct avs_dev *adev,
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
ret = avs_path_module_send_init_configs(adev, mod);
|
||||
if (ret) {
|
||||
kfree(mod);
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
return mod;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user