summaryrefslogtreecommitdiff
path: root/sound/soc
diff options
context:
space:
mode:
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>2022-06-10 15:48:18 +0100
committerMark Brown <broonie@kernel.org>2022-06-24 16:21:42 +0100
commit58136d93d4e2c1207a5e4f3044815cd40b1d95fd (patch)
tree0c33b5643ba5f01d8958e7be46a220faf26354ab /sound/soc
parent12abc4d10d5502e4f3d8f1c6f9e8245747a44708 (diff)
downloadlinux-starfive-58136d93d4e2c1207a5e4f3044815cd40b1d95fd.tar.gz
linux-starfive-58136d93d4e2c1207a5e4f3044815cd40b1d95fd.tar.bz2
linux-starfive-58136d93d4e2c1207a5e4f3044815cd40b1d95fd.zip
ASoC: qdsp6: q6apm-dai: unprepare stream if its already prepared
prepare callback can be called multiple times, so unprepare the stream if its already prepared. Without this DSP is not happy to setting the params on a already prepared graph. Fixes: 9b4fe0f1cd79 ("ASoC: qdsp6: audioreach: add q6apm-dai support") Reported-by: Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20220610144818.511797-1-srinivas.kandagatla@linaro.org Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/qcom/qdsp6/q6apm-dai.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sound/soc/qcom/qdsp6/q6apm-dai.c b/sound/soc/qcom/qdsp6/q6apm-dai.c
index 19c4a90ec1ea..ee59ef36b85a 100644
--- a/sound/soc/qcom/qdsp6/q6apm-dai.c
+++ b/sound/soc/qcom/qdsp6/q6apm-dai.c
@@ -147,6 +147,12 @@ static int q6apm_dai_prepare(struct snd_soc_component *component,
cfg.num_channels = runtime->channels;
cfg.bit_width = prtd->bits_per_sample;
+ if (prtd->state) {
+ /* clear the previous setup if any */
+ q6apm_graph_stop(prtd->graph);
+ q6apm_unmap_memory_regions(prtd->graph, substream->stream);
+ }
+
prtd->pcm_count = snd_pcm_lib_period_bytes(substream);
prtd->pos = 0;
/* rate and channels are sent to audio driver */