mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-04 16:22:09 +00:00
ASoC: Intel: Skylake: read params from DSP if module is on
If a module is ON then we should read the module parameters from DSP rather than driver cached values Signed-off-by: Omair M Abdullah <omair.m.abdullah@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
cce1c7f383
commit
7d9f29119d
@ -927,3 +927,16 @@ int skl_set_module_params(struct skl_sst *ctx, u32 *params, int size,
|
|||||||
|
|
||||||
return skl_ipc_set_large_config(&ctx->ipc, &msg, params);
|
return skl_ipc_set_large_config(&ctx->ipc, &msg, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int skl_get_module_params(struct skl_sst *ctx, u32 *params, int size,
|
||||||
|
u32 param_id, struct skl_module_cfg *mcfg)
|
||||||
|
{
|
||||||
|
struct skl_ipc_large_config_msg msg;
|
||||||
|
|
||||||
|
msg.module_id = mcfg->id.module_id;
|
||||||
|
msg.instance_id = mcfg->id.instance_id;
|
||||||
|
msg.param_data_size = size;
|
||||||
|
msg.large_param_id = param_id;
|
||||||
|
|
||||||
|
return skl_ipc_get_large_config(&ctx->ipc, &msg, params);
|
||||||
|
}
|
||||||
|
@ -908,6 +908,13 @@ static int skl_tplg_tlv_control_get(struct snd_kcontrol *kcontrol,
|
|||||||
struct soc_bytes_ext *sb =
|
struct soc_bytes_ext *sb =
|
||||||
(struct soc_bytes_ext *)kcontrol->private_value;
|
(struct soc_bytes_ext *)kcontrol->private_value;
|
||||||
struct skl_algo_data *bc = (struct skl_algo_data *)sb->dobj.private;
|
struct skl_algo_data *bc = (struct skl_algo_data *)sb->dobj.private;
|
||||||
|
struct snd_soc_dapm_widget *w = snd_soc_dapm_kcontrol_widget(kcontrol);
|
||||||
|
struct skl_module_cfg *mconfig = w->priv;
|
||||||
|
struct skl *skl = get_skl_ctx(w->dapm->dev);
|
||||||
|
|
||||||
|
if (w->power)
|
||||||
|
skl_get_module_params(skl->skl_sst, (u32 *)bc->params,
|
||||||
|
bc->max, bc->param_id, mconfig);
|
||||||
|
|
||||||
if (bc->params) {
|
if (bc->params) {
|
||||||
if (copy_to_user(data, &bc->param_id, sizeof(u32)))
|
if (copy_to_user(data, &bc->param_id, sizeof(u32)))
|
||||||
|
@ -342,6 +342,8 @@ int skl_unbind_modules(struct skl_sst *ctx, struct skl_module_cfg
|
|||||||
|
|
||||||
int skl_set_module_params(struct skl_sst *ctx, u32 *params, int size,
|
int skl_set_module_params(struct skl_sst *ctx, u32 *params, int size,
|
||||||
u32 param_id, struct skl_module_cfg *mcfg);
|
u32 param_id, struct skl_module_cfg *mcfg);
|
||||||
|
int skl_get_module_params(struct skl_sst *ctx, u32 *params, int size,
|
||||||
|
u32 param_id, struct skl_module_cfg *mcfg);
|
||||||
|
|
||||||
enum skl_bitdepth skl_get_bit_depth(int params);
|
enum skl_bitdepth skl_get_bit_depth(int params);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user