Commit 8f2e5c65 authored by Srinivas Kandagatla's avatar Srinivas Kandagatla Committed by Mark Brown

ASoC: qdsp6: q6apm-dai: only stop graphs that are started

Its possible that the sound card is just opened and closed without actually
playing stream, ex: if the audio file itself is missing.

Even in such cases we do call stop on graphs that are not yet started.
DSP can throw errors in such cases, so add a check to see if the graph
was started before stopping it.

Fixes: 9b4fe0f1 ("ASoC: qdsp6: audioreach: add q6apm-dai support")
Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20220126113549.8853-5-srinivas.kandagatla@linaro.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent bd2347fd
...@@ -308,8 +308,11 @@ static int q6apm_dai_close(struct snd_soc_component *component, ...@@ -308,8 +308,11 @@ static int q6apm_dai_close(struct snd_soc_component *component,
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
struct q6apm_dai_rtd *prtd = runtime->private_data; struct q6apm_dai_rtd *prtd = runtime->private_data;
q6apm_graph_stop(prtd->graph); if (prtd->state) { /* only stop graph that is started */
q6apm_unmap_memory_regions(prtd->graph, substream->stream); q6apm_graph_stop(prtd->graph);
q6apm_unmap_memory_regions(prtd->graph, substream->stream);
}
q6apm_graph_close(prtd->graph); q6apm_graph_close(prtd->graph);
prtd->graph = NULL; prtd->graph = NULL;
kfree(prtd); kfree(prtd);
......
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