OSDN Git Service

ASoC: pcm: call snd_soc_dapm_stream_stop() in soc_pcm_hw_clean
authorRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Tue, 17 Nov 2020 21:50:01 +0000 (13:50 -0800)
committerMark Brown <broonie@kernel.org>
Thu, 19 Nov 2020 13:00:05 +0000 (13:00 +0000)
commita27b421f1d04b201c474a15ee1591919c81fb413
tree4e74e012a64f1ed382132cff7351fbb08564d517
parentcaebea04b9125c677e6e747793fbc7fab077727b
ASoC: pcm: call snd_soc_dapm_stream_stop() in soc_pcm_hw_clean

Currently, the SND_SOC_DAPM_STREAM_START event is sent during
pcm_prepare() but the SND_SOC_DAPM_STREAM_STOP event is
sent only in dpcm_fe_dai_shutdown() after soc_pcm_close().
This results in an imbalance between when the DAPM widgets
receive the PRE/POST_PMU/PMD events. So call
snd_soc_dapm_stream_stop() in soc_pcm_hw_clean() before the
snd_soc_pcm_component_hw_free() to keep the stream_stop DAPM
event balanced with the stream_start event in soc_pm_prepare().

Also, in order to prevent duplicate DAPM stream events,
remove the call for DAPM STREAM_START event in dpcm_fe_dai_prepare()
and the call for DAPM STREAM_STOP event in dpcm_fe_dai_shutdown().

Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Link: https://lore.kernel.org/r/20201117215001.163107-1-ranjani.sridharan@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-pcm.c