diff options
author | Srinivas Kandagatla <srinivas.kandagatla@linaro.org> | 2022-01-26 11:35:49 +0000 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2022-01-26 13:31:40 +0000 |
commit | 8f2e5c65ec7534cce6d315fccf2c3aef023f68f0 (patch) | |
tree | dd679d8ba4ea74ab567ccafa77d1d1729d4494d3 /sound | |
parent | bd2347fd67d8da0fa76296507cc556da0a233bcb (diff) | |
download | lwn-8f2e5c65ec7534cce6d315fccf2c3aef023f68f0.tar.gz lwn-8f2e5c65ec7534cce6d315fccf2c3aef023f68f0.zip |
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: 9b4fe0f1cd79 ("ASoC: qdsp6: audioreach: add q6apm-dai support")
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20220126113549.8853-5-srinivas.kandagatla@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/qcom/qdsp6/q6apm-dai.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sound/soc/qcom/qdsp6/q6apm-dai.c b/sound/soc/qcom/qdsp6/q6apm-dai.c index eb1c3aec479b..19c4a90ec1ea 100644 --- a/sound/soc/qcom/qdsp6/q6apm-dai.c +++ b/sound/soc/qcom/qdsp6/q6apm-dai.c @@ -308,8 +308,11 @@ static int q6apm_dai_close(struct snd_soc_component *component, struct snd_pcm_runtime *runtime = substream->runtime; struct q6apm_dai_rtd *prtd = runtime->private_data; - q6apm_graph_stop(prtd->graph); - q6apm_unmap_memory_regions(prtd->graph, substream->stream); + if (prtd->state) { /* only stop graph that is started */ + q6apm_graph_stop(prtd->graph); + q6apm_unmap_memory_regions(prtd->graph, substream->stream); + } + q6apm_graph_close(prtd->graph); prtd->graph = NULL; kfree(prtd); |