ASoC: qcom: q6apm-lpass-dai: unprepare stream if its already prepared
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Thu, 9 Feb 2023 12:27:59 +0000 (12:27 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 9 Feb 2023 14:03:27 +0000 (14:03 +0000)
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")
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230209122806.18923-2-srinivas.kandagatla@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/qcom/qdsp6/q6apm-lpass-dais.c

index ce9e564..23d23bc 100644 (file)
@@ -127,6 +127,11 @@ static int q6apm_lpass_dai_prepare(struct snd_pcm_substream *substream, struct s
        int graph_id = dai->id;
        int rc;
 
+       if (dai_data->is_port_started[dai->id]) {
+               q6apm_graph_stop(dai_data->graph[dai->id]);
+               dai_data->is_port_started[dai->id] = false;
+       }
+
        /**
         * It is recommend to load DSP with source graph first and then sink
         * graph, so sequence for playback and capture will be different