Commit 4ced1827 authored by Jeeja KP's avatar Jeeja KP Committed by Mark Brown

ASoC: Intel: Skylake: Fix module init data correctly

Module initialization parameter data can be set by
     - INIT_INSTANCE IPC by using the default value
     - SET_PARAMS immediately after INIT_INSTANCE
     - SET_PARAMS data from kcontrol values set
this patch add param type to identify the parameters
has to be sent to DSP.
Signed-off-by: default avatarJeeja KP <jeeja.kp@intel.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent fd18110f
...@@ -331,7 +331,7 @@ static int skl_tplg_set_module_params(struct snd_soc_dapm_widget *w, ...@@ -331,7 +331,7 @@ static int skl_tplg_set_module_params(struct snd_soc_dapm_widget *w,
struct skl_specific_cfg *sp_cfg; struct skl_specific_cfg *sp_cfg;
if (mconfig->formats_config.caps_size > 0 && if (mconfig->formats_config.caps_size > 0 &&
mconfig->formats_config.set_params) { mconfig->formats_config.set_params == SKL_PARAM_SET) {
sp_cfg = &mconfig->formats_config; sp_cfg = &mconfig->formats_config;
ret = skl_set_module_params(ctx, sp_cfg->caps, ret = skl_set_module_params(ctx, sp_cfg->caps,
sp_cfg->caps_size, sp_cfg->caps_size,
...@@ -346,7 +346,7 @@ static int skl_tplg_set_module_params(struct snd_soc_dapm_widget *w, ...@@ -346,7 +346,7 @@ static int skl_tplg_set_module_params(struct snd_soc_dapm_widget *w,
sb = (void *) k->private_value; sb = (void *) k->private_value;
bc = (struct skl_algo_data *)sb->dobj.private; bc = (struct skl_algo_data *)sb->dobj.private;
if (bc->set_params) { if (bc->set_params == SKL_PARAM_SET) {
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);
...@@ -379,7 +379,7 @@ static int skl_tplg_set_module_init_data(struct snd_soc_dapm_widget *w) ...@@ -379,7 +379,7 @@ static int skl_tplg_set_module_init_data(struct snd_soc_dapm_widget *w)
sb = (struct soc_bytes_ext *)k->private_value; sb = (struct soc_bytes_ext *)k->private_value;
bc = (struct skl_algo_data *)sb->dobj.private; bc = (struct skl_algo_data *)sb->dobj.private;
if (bc->set_params) if (bc->set_params != SKL_PARAM_INIT)
continue; continue;
mconfig->formats_config.caps = (u32 *)&bc->params; mconfig->formats_config.caps = (u32 *)&bc->params;
......
...@@ -211,7 +211,7 @@ struct skl_module_pin { ...@@ -211,7 +211,7 @@ struct skl_module_pin {
}; };
struct skl_specific_cfg { struct skl_specific_cfg {
bool set_params; u32 set_params;
u32 param_id; u32 param_id;
u32 caps_size; u32 caps_size;
u32 *caps; u32 *caps;
...@@ -294,7 +294,7 @@ struct skl_module_cfg { ...@@ -294,7 +294,7 @@ struct skl_module_cfg {
struct skl_algo_data { struct skl_algo_data {
u32 param_id; u32 param_id;
bool set_params; u32 set_params;
u32 max; u32 max;
char *params; char *params;
}; };
......
...@@ -141,6 +141,12 @@ enum module_pin_type { ...@@ -141,6 +141,12 @@ enum module_pin_type {
SKL_PIN_TYPE_HETEROGENEOUS, SKL_PIN_TYPE_HETEROGENEOUS,
}; };
enum skl_module_param_type {
SKL_PARAM_DEFAULT = 0,
SKL_PARAM_INIT,
SKL_PARAM_SET
};
struct skl_dfw_module_pin { struct skl_dfw_module_pin {
u16 module_id; u16 module_id;
u16 instance_id; u16 instance_id;
...@@ -158,8 +164,8 @@ struct skl_dfw_module_fmt { ...@@ -158,8 +164,8 @@ struct skl_dfw_module_fmt {
} __packed; } __packed;
struct skl_dfw_module_caps { struct skl_dfw_module_caps {
u32 set_params:1; u32 set_params:2;
u32 rsvd:31; u32 rsvd:30;
u32 param_id; u32 param_id;
u32 caps_size; u32 caps_size;
u32 caps[HDA_SST_CFG_MAX]; u32 caps[HDA_SST_CFG_MAX];
...@@ -214,10 +220,10 @@ struct skl_dfw_module { ...@@ -214,10 +220,10 @@ struct skl_dfw_module {
} __packed; } __packed;
struct skl_dfw_algo_data { struct skl_dfw_algo_data {
u32 set_params:1; u32 set_params:2;
u32 rsvd:31; u32 rsvd:30;
u32 max;
u32 param_id; u32 param_id;
u32 max;
char params[0]; char params[0];
} __packed; } __packed;
......
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