Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d69c5c5 authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Mark Brown
Browse files

ASoC: core: Add flag to ignore pmdown_time at pcm_close



With this flag codec drivers can indicate that it is desired
to ignore the pmdown_time for DAPM shutdown sequence when
playback stream is stopped.
The DAPM sequence will be executed without delay in this case.

Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 7a0e67b6
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -578,6 +578,7 @@ struct snd_soc_codec {


	/* dapm */
	/* dapm */
	struct snd_soc_dapm_context dapm;
	struct snd_soc_dapm_context dapm;
	unsigned int ignore_pmdown_time:1; /* pmdown_time is ignored at stop */


#ifdef CONFIG_DEBUG_FS
#ifdef CONFIG_DEBUG_FS
	struct dentry *debugfs_codec_root;
	struct dentry *debugfs_codec_root;
+11 −4
Original line number Original line Diff line number Diff line
@@ -319,10 +319,17 @@ static int soc_pcm_close(struct snd_pcm_substream *substream)
	cpu_dai->runtime = NULL;
	cpu_dai->runtime = NULL;


	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
		if (unlikely(codec->ignore_pmdown_time)) {
			/* powered down playback stream now */
			snd_soc_dapm_stream_event(rtd,
				codec_dai->driver->playback.stream_name,
				SND_SOC_DAPM_STREAM_STOP);
		} else {
			/* start delayed pop wq here for playback streams */
			/* start delayed pop wq here for playback streams */
			codec_dai->pop_wait = 1;
			codec_dai->pop_wait = 1;
			schedule_delayed_work(&rtd->delayed_work,
			schedule_delayed_work(&rtd->delayed_work,
				msecs_to_jiffies(rtd->pmdown_time));
				msecs_to_jiffies(rtd->pmdown_time));
		}
	} else {
	} else {
		/* capture streams can be powered down now */
		/* capture streams can be powered down now */
		snd_soc_dapm_stream_event(rtd,
		snd_soc_dapm_stream_event(rtd,