Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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;
+2 −2
Original line number Diff line number Diff line
@@ -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;
};
+11 −5
Original line number Diff line number Diff line
@@ -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;