Commit 9939a9c3 authored by Jeeja KP's avatar Jeeja KP Committed by Mark Brown

ASoC: Intel: Skylake: Add helper routines to handle module params

Some DSP modules have user configurable parameters. These
parameters are required by modules in the following scenario
	-  during initialization
	-  after initialization using set parameter

This patch adds helper routine to set module parameters using
large config set IPC message and removes params to be passed as
init module routine.
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 8f35bf3f
...@@ -556,7 +556,7 @@ static void skl_clear_module_state(struct skl_module_pin *mpin, int max, ...@@ -556,7 +556,7 @@ static void skl_clear_module_state(struct skl_module_pin *mpin, int max,
* invoke the DSP by sending IPC INIT_INSTANCE using ipc helper * invoke the DSP by sending IPC INIT_INSTANCE using ipc helper
*/ */
int skl_init_module(struct skl_sst *ctx, int skl_init_module(struct skl_sst *ctx,
struct skl_module_cfg *mconfig, char *param) struct skl_module_cfg *mconfig)
{ {
u16 module_config_size = 0; u16 module_config_size = 0;
void *param_data = NULL; void *param_data = NULL;
...@@ -855,3 +855,17 @@ int skl_stop_pipe(struct skl_sst *ctx, struct skl_pipe *pipe) ...@@ -855,3 +855,17 @@ int skl_stop_pipe(struct skl_sst *ctx, struct skl_pipe *pipe)
return 0; return 0;
} }
/* Algo parameter set helper function */
int skl_set_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_set_large_config(&ctx->ipc, &msg, params);
}
...@@ -340,7 +340,7 @@ skl_tplg_init_pipe_modules(struct skl *skl, struct skl_pipe *pipe) ...@@ -340,7 +340,7 @@ skl_tplg_init_pipe_modules(struct skl *skl, struct skl_pipe *pipe)
* FE/BE params * FE/BE params
*/ */
skl_tplg_update_module_params(w, ctx); skl_tplg_update_module_params(w, ctx);
ret = skl_init_module(ctx, mconfig, NULL); ret = skl_init_module(ctx, mconfig);
if (ret < 0) if (ret < 0)
return ret; return ret;
} }
......
...@@ -312,8 +312,7 @@ int skl_delete_pipe(struct skl_sst *ctx, struct skl_pipe *pipe); ...@@ -312,8 +312,7 @@ int skl_delete_pipe(struct skl_sst *ctx, struct skl_pipe *pipe);
int skl_stop_pipe(struct skl_sst *ctx, struct skl_pipe *pipe); int skl_stop_pipe(struct skl_sst *ctx, struct skl_pipe *pipe);
int skl_init_module(struct skl_sst *ctx, struct skl_module_cfg *module_config, int skl_init_module(struct skl_sst *ctx, struct skl_module_cfg *module_config);
char *param);
int skl_bind_modules(struct skl_sst *ctx, struct skl_module_cfg int skl_bind_modules(struct skl_sst *ctx, struct skl_module_cfg
*src_module, struct skl_module_cfg *dst_module); *src_module, struct skl_module_cfg *dst_module);
...@@ -321,5 +320,8 @@ int skl_bind_modules(struct skl_sst *ctx, struct skl_module_cfg ...@@ -321,5 +320,8 @@ int skl_bind_modules(struct skl_sst *ctx, struct skl_module_cfg
int skl_unbind_modules(struct skl_sst *ctx, struct skl_module_cfg int skl_unbind_modules(struct skl_sst *ctx, struct skl_module_cfg
*src_module, struct skl_module_cfg *dst_module); *src_module, struct skl_module_cfg *dst_module);
int skl_set_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
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