ASoC: qcom: audioreach: fix ADSP ready check
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Thu, 9 Feb 2023 12:28:02 +0000 (12:28 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 9 Feb 2023 14:03:30 +0000 (14:03 +0000)
currently q6apm_is_adsp_ready() will only return the cached value of
previous result. If we are unlucky and previous result is not-ready
then the caller will always get not-ready flag.

This is not correct, we should query the dsp of its current state in
irrespective of previous reported state.

Fixes: 47bc8cf60e92 ("ASoC: qdsp6: audioreach: Add ADSP ready check")
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20230209122806.18923-5-srinivas.kandagatla@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/qcom/qdsp6/q6apm.c

index 8a7dfd2..994c9e8 100644 (file)
@@ -145,14 +145,6 @@ static void q6apm_put_audioreach_graph(struct kref *ref)
        kfree(graph);
 }
 
-bool q6apm_is_adsp_ready(void)
-{
-       if (g_apm && g_apm->state)
-               return true;
-
-       return false;
-}
-EXPORT_SYMBOL_GPL(q6apm_is_adsp_ready);
 
 static int q6apm_get_apm_state(struct q6apm *apm)
 {
@@ -169,6 +161,15 @@ static int q6apm_get_apm_state(struct q6apm *apm)
        return apm->state;
 }
 
+bool q6apm_is_adsp_ready(void)
+{
+       if (g_apm)
+               return q6apm_get_apm_state(g_apm);
+
+       return false;
+}
+EXPORT_SYMBOL_GPL(q6apm_is_adsp_ready);
+
 static struct audioreach_module *__q6apm_find_module_by_mid(struct q6apm *apm,
                                                    struct audioreach_graph_info *info,
                                                    uint32_t mid)