mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-22 02:20:40 +00:00
ASoC: Intel: Skylake: Fix for unloading module only when it is loaded
Module needs to be unloaded only when it is loaded successfully. To fix this, first correct the module state sequence and set module state to LOADED if module is loaded successfully. When unloading the module check if module state is not in UNINIT, then unload it. Signed-off-by: Jeeja KP <jeeja.kp@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
c3efb42b20
commit
d643678b9a
2 changed files with 8 additions and 5 deletions
|
@ -490,6 +490,8 @@ skl_tplg_init_pipe_modules(struct skl *skl, struct skl_pipe *pipe)
|
|||
mconfig->id.module_id, mconfig->guid);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
mconfig->m_state = SKL_MODULE_LOADED;
|
||||
}
|
||||
|
||||
/* update blob if blob is null for be with default value */
|
||||
|
@ -524,7 +526,8 @@ static int skl_tplg_unload_pipe_modules(struct skl_sst *ctx,
|
|||
list_for_each_entry(w_module, &pipe->w_list, node) {
|
||||
mconfig = w_module->w->priv;
|
||||
|
||||
if (mconfig->is_loadable && ctx->dsp->fw_ops.unload_mod)
|
||||
if (mconfig->is_loadable && ctx->dsp->fw_ops.unload_mod &&
|
||||
mconfig->m_state > SKL_MODULE_UNINIT)
|
||||
return ctx->dsp->fw_ops.unload_mod(ctx->dsp,
|
||||
mconfig->id.module_id);
|
||||
}
|
||||
|
|
|
@ -274,10 +274,10 @@ struct skl_pipe {
|
|||
|
||||
enum skl_module_state {
|
||||
SKL_MODULE_UNINIT = 0,
|
||||
SKL_MODULE_INIT_DONE = 1,
|
||||
SKL_MODULE_LOADED = 2,
|
||||
SKL_MODULE_UNLOADED = 3,
|
||||
SKL_MODULE_BIND_DONE = 4
|
||||
SKL_MODULE_LOADED = 1,
|
||||
SKL_MODULE_INIT_DONE = 2,
|
||||
SKL_MODULE_BIND_DONE = 3,
|
||||
SKL_MODULE_UNLOADED = 4,
|
||||
};
|
||||
|
||||
struct skl_module_cfg {
|
||||
|
|
Loading…
Reference in a new issue