ASoC: Intel: Skylake: Configure DMA in PRE_PMD handler of Mixer
If system is suspended when PCM was paused/stopped, restart doesn't configure DMA as it is we are in Pause state and results in IO error eventually. Configure host/link DMA before initializing DSP Gateway copier module instead of DAI prepare(). So moved DMA configuration to mixer PRE_PMD widget handler instead of DAI prepare. This uses previously added new API to do the configuration and removes old DAI prepare code. Signed-off-by: Jeeja KP <jeeja.kp@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
@@ -496,6 +496,20 @@ static int skl_tplg_set_module_init_data(struct snd_soc_dapm_widget *w)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int skl_tplg_module_prepare(struct skl_sst *ctx, struct skl_pipe *pipe,
|
||||
struct snd_soc_dapm_widget *w, struct skl_module_cfg *mcfg)
|
||||
{
|
||||
switch (mcfg->dev_type) {
|
||||
case SKL_DEVICE_HDAHOST:
|
||||
return skl_pcm_host_dma_prepare(ctx->dev, pipe->p_params);
|
||||
|
||||
case SKL_DEVICE_HDALINK:
|
||||
return skl_pcm_link_dma_prepare(ctx->dev, pipe->p_params);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Inside a pipe instance, we can have various modules. These modules need
|
||||
* to instantiated in DSP by invoking INIT_MODULE IPC, which is achieved by
|
||||
@@ -535,6 +549,11 @@ skl_tplg_init_pipe_modules(struct skl *skl, struct skl_pipe *pipe)
|
||||
mconfig->m_state = SKL_MODULE_LOADED;
|
||||
}
|
||||
|
||||
/* prepare the DMA if the module is gateway cpr */
|
||||
ret = skl_tplg_module_prepare(ctx, pipe, w, mconfig);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* update blob if blob is null for be with default value */
|
||||
skl_tplg_update_be_blob(w, ctx);
|
||||
|
||||
|
Reference in New Issue
Block a user