mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 03:58:46 +07:00
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>
This commit is contained in:
parent
fd18110f14
commit
4ced182763
@ -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;
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user