forked from Minki/linux
ASoC: SOF: pcm: move the check for prepared flag
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>
This commit is contained in:
parent
d9a7246534
commit
85d7acd0ef
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user