Commit 5e8f0ee4 authored by Dharageswari R's avatar Dharageswari R Committed by Mark Brown

ASoC: Intel: Skylake: Update to use instance ids generated

Post bind parameters of KPB module contains the instance id's of
neighbouring modules in the sink path

Now that module instance ids are generated dynamically we need to update
these parameters as well, so use the table created and update the ids
Signed-off-by: default avatarDharageswari R <dharageswari.r@intel.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent ef2a352c
...@@ -680,6 +680,7 @@ static u16 skl_get_module_param_size(struct skl_sst *ctx, ...@@ -680,6 +680,7 @@ static u16 skl_get_module_param_size(struct skl_sst *ctx,
return param_size; return param_size;
case SKL_MODULE_TYPE_BASE_OUTFMT: case SKL_MODULE_TYPE_BASE_OUTFMT:
case SKL_MODULE_TYPE_KPB:
return sizeof(struct skl_base_outfmt_cfg); return sizeof(struct skl_base_outfmt_cfg);
default: default:
...@@ -733,6 +734,7 @@ static int skl_set_module_format(struct skl_sst *ctx, ...@@ -733,6 +734,7 @@ static int skl_set_module_format(struct skl_sst *ctx,
break; break;
case SKL_MODULE_TYPE_BASE_OUTFMT: case SKL_MODULE_TYPE_BASE_OUTFMT:
case SKL_MODULE_TYPE_KPB:
skl_set_base_outfmt_format(ctx, module_config, *param_data); skl_set_base_outfmt_format(ctx, module_config, *param_data);
break; break;
......
...@@ -607,6 +607,26 @@ static int skl_tplg_mixer_dapm_pre_pmu_event(struct snd_soc_dapm_widget *w, ...@@ -607,6 +607,26 @@ static int skl_tplg_mixer_dapm_pre_pmu_event(struct snd_soc_dapm_widget *w,
return 0; return 0;
} }
static int skl_fill_sink_instance_id(struct skl_sst *ctx,
struct skl_algo_data *alg_data)
{
struct skl_kpb_params *params = (struct skl_kpb_params *)alg_data->params;
struct skl_mod_inst_map *inst;
int i, pvt_id;
inst = params->map;
for (i = 0; i < params->num_modules; i++) {
pvt_id = skl_get_pvt_instance_id_map(ctx,
inst->mod_id, inst->inst_id);
if (pvt_id < 0)
return -EINVAL;
inst->inst_id = pvt_id;
inst++;
}
return 0;
}
/* /*
* Some modules require params to be set after the module is bound to * Some modules require params to be set after the module is bound to
* all pins connected. * all pins connected.
...@@ -655,6 +675,8 @@ static int skl_tplg_set_module_bind_params(struct snd_soc_dapm_widget *w, ...@@ -655,6 +675,8 @@ static int skl_tplg_set_module_bind_params(struct snd_soc_dapm_widget *w,
bc = (struct skl_algo_data *)sb->dobj.private; bc = (struct skl_algo_data *)sb->dobj.private;
if (bc->set_params == SKL_PARAM_BIND) { if (bc->set_params == SKL_PARAM_BIND) {
if (mconfig->m_type == SKL_MODULE_TYPE_KPB)
skl_fill_sink_instance_id(ctx, bc);
ret = skl_set_module_params(ctx, ret = skl_set_module_params(ctx,
(u32 *)bc->params, bc->max, (u32 *)bc->params, bc->max,
bc->param_id, mconfig); bc->param_id, mconfig);
......
...@@ -215,6 +215,16 @@ struct skl_module_fmt { ...@@ -215,6 +215,16 @@ struct skl_module_fmt {
struct skl_module_cfg; struct skl_module_cfg;
struct skl_mod_inst_map {
u16 mod_id;
u16 inst_id;
};
struct skl_kpb_params {
u32 num_modules;
struct skl_mod_inst_map map[0];
};
struct skl_module_inst_id { struct skl_module_inst_id {
int module_id; int module_id;
u32 instance_id; u32 instance_id;
......
...@@ -80,7 +80,8 @@ enum skl_module_type { ...@@ -80,7 +80,8 @@ enum skl_module_type {
SKL_MODULE_TYPE_UPDWMIX, SKL_MODULE_TYPE_UPDWMIX,
SKL_MODULE_TYPE_SRCINT, SKL_MODULE_TYPE_SRCINT,
SKL_MODULE_TYPE_ALGO, SKL_MODULE_TYPE_ALGO,
SKL_MODULE_TYPE_BASE_OUTFMT SKL_MODULE_TYPE_BASE_OUTFMT,
SKL_MODULE_TYPE_KPB,
}; };
enum skl_core_affinity { enum skl_core_affinity {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment