summaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorJeeja KP <jeeja.kp@intel.com>2015-12-03 23:29:53 +0530
committerMark Brown <broonie@kernel.org>2015-12-08 17:57:51 +0000
commit4ced182763286a7c26cf671b27d1ddd58cf6cec8 (patch)
tree3e917f25db0d7282d31d97faa1a6486250a09b15 /sound/soc
parentfd18110f1480d51f416cea6d5f63b83f85b14043 (diff)
downloadlinux-4ced182763286a7c26cf671b27d1ddd58cf6cec8.tar.bz2
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: Jeeja KP <jeeja.kp@intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/intel/skylake/skl-topology.c6
-rw-r--r--sound/soc/intel/skylake/skl-topology.h4
-rw-r--r--sound/soc/intel/skylake/skl-tplg-interface.h16
3 files changed, 16 insertions, 10 deletions
diff --git a/sound/soc/intel/skylake/skl-topology.c b/sound/soc/intel/skylake/skl-topology.c
index be02214e80db..eb31235f7040 100644
--- a/sound/soc/intel/skylake/skl-topology.c
+++ b/sound/soc/intel/skylake/skl-topology.c
@@ -331,7 +331,7 @@ static int skl_tplg_set_module_params(struct snd_soc_dapm_widget *w,
struct skl_specific_cfg *sp_cfg;
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;
ret = skl_set_module_params(ctx, sp_cfg->caps,
sp_cfg->caps_size,
@@ -346,7 +346,7 @@ static int skl_tplg_set_module_params(struct snd_soc_dapm_widget *w,
sb = (void *) k->private_value;
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,
(u32 *)bc->params, bc->max,
bc->param_id, mconfig);
@@ -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;
bc = (struct skl_algo_data *)sb->dobj.private;
- if (bc->set_params)
+ if (bc->set_params != SKL_PARAM_INIT)
continue;
mconfig->formats_config.caps = (u32 *)&bc->params;
diff --git a/sound/soc/intel/skylake/skl-topology.h b/sound/soc/intel/skylake/skl-topology.h
index 349f2a3b6613..6ba0bdc7753c 100644
--- a/sound/soc/intel/skylake/skl-topology.h
+++ b/sound/soc/intel/skylake/skl-topology.h
@@ -211,7 +211,7 @@ struct skl_module_pin {
};
struct skl_specific_cfg {
- bool set_params;
+ u32 set_params;
u32 param_id;
u32 caps_size;
u32 *caps;
@@ -294,7 +294,7 @@ struct skl_module_cfg {
struct skl_algo_data {
u32 param_id;
- bool set_params;
+ u32 set_params;
u32 max;
char *params;
};
diff --git a/sound/soc/intel/skylake/skl-tplg-interface.h b/sound/soc/intel/skylake/skl-tplg-interface.h
index 626b148317fe..c9ae010b3cc8 100644
--- a/sound/soc/intel/skylake/skl-tplg-interface.h
+++ b/sound/soc/intel/skylake/skl-tplg-interface.h
@@ -141,6 +141,12 @@ enum module_pin_type {
SKL_PIN_TYPE_HETEROGENEOUS,
};
+enum skl_module_param_type {
+ SKL_PARAM_DEFAULT = 0,
+ SKL_PARAM_INIT,
+ SKL_PARAM_SET
+};
+
struct skl_dfw_module_pin {
u16 module_id;
u16 instance_id;
@@ -158,8 +164,8 @@ struct skl_dfw_module_fmt {
} __packed;
struct skl_dfw_module_caps {
- u32 set_params:1;
- u32 rsvd:31;
+ u32 set_params:2;
+ u32 rsvd:30;
u32 param_id;
u32 caps_size;
u32 caps[HDA_SST_CFG_MAX];
@@ -214,10 +220,10 @@ struct skl_dfw_module {
} __packed;
struct skl_dfw_algo_data {
- u32 set_params:1;
- u32 rsvd:31;
- u32 max;
+ u32 set_params:2;
+ u32 rsvd:30;
u32 param_id;
+ u32 max;
char params[0];
} __packed;