ASoC: SOF: pcm: move the check for prepared flag
authorRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Thu, 25 Nov 2021 10:15:17 +0000 (12:15 +0200)
committerMark Brown <broonie@kernel.org>
Fri, 26 Nov 2021 13:24:22 +0000 (13:24 +0000)
Move the check for the prepared flag inside snd_pcm_dsp_pcm_free() to
avoid having to check it before every invocation of the function.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20211125101520.291581-8-kai.vehmanen@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/pcm.c

index 3aa708b1ac26f5c0778088dde3149c9715698360..c61cd3cc4f02466d24658691120d64d0c1261427 100644 (file)
@@ -107,6 +107,9 @@ int sof_pcm_dsp_pcm_free(struct snd_pcm_substream *substream, struct snd_sof_dev
        struct sof_ipc_reply reply;
        int ret;
 
+       if (!spcm->prepared[substream->stream])
+               return 0;
+
        stream.hdr.size = sizeof(stream);
        stream.hdr.cmd = SOF_IPC_GLB_STREAM_MSG | SOF_IPC_STREAM_PCM_FREE;
        stream.comp_id = spcm->stream[substream->stream].comp_id;
@@ -178,11 +181,9 @@ static int sof_pcm_hw_params(struct snd_soc_component *component,
         * Handle repeated calls to hw_params() without free_pcm() in
         * between. At least ALSA OSS emulation depends on this.
         */
-       if (spcm->prepared[substream->stream]) {
-               ret = sof_pcm_dsp_pcm_free(substream, sdev, spcm);
-               if (ret < 0)
-                       return ret;
-       }
+       ret = sof_pcm_dsp_pcm_free(substream, sdev, spcm);
+       if (ret < 0)
+               return ret;
 
        dev_dbg(component->dev, "pcm: hw params stream %d dir %d\n",
                spcm->pcm.pcm_id, substream->stream);
@@ -298,11 +299,9 @@ static int sof_pcm_hw_free(struct snd_soc_component *component,
        dev_dbg(component->dev, "pcm: free stream %d dir %d\n",
                spcm->pcm.pcm_id, substream->stream);
 
-       if (spcm->prepared[substream->stream]) {
-               ret = sof_pcm_dsp_pcm_free(substream, sdev, spcm);
-               if (ret < 0)
-                       err = ret;
-       }
+       ret = sof_pcm_dsp_pcm_free(substream, sdev, spcm);
+       if (ret < 0)
+               err = ret;
 
        ret = sof_widget_list_free(sdev, spcm, substream->stream);
        if (ret < 0)