diff options
Diffstat (limited to 'sound/soc/soc-pcm.c')
-rw-r--r-- | sound/soc/soc-pcm.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index 8eb0f0711f8..ee15337353f 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c | |||
@@ -319,10 +319,17 @@ static int soc_pcm_close(struct snd_pcm_substream *substream) | |||
319 | cpu_dai->runtime = NULL; | 319 | cpu_dai->runtime = NULL; |
320 | 320 | ||
321 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { | 321 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { |
322 | /* start delayed pop wq here for playback streams */ | 322 | if (unlikely(codec->ignore_pmdown_time)) { |
323 | codec_dai->pop_wait = 1; | 323 | /* powered down playback stream now */ |
324 | schedule_delayed_work(&rtd->delayed_work, | 324 | snd_soc_dapm_stream_event(rtd, |
325 | msecs_to_jiffies(rtd->pmdown_time)); | 325 | codec_dai->driver->playback.stream_name, |
326 | SND_SOC_DAPM_STREAM_STOP); | ||
327 | } else { | ||
328 | /* start delayed pop wq here for playback streams */ | ||
329 | codec_dai->pop_wait = 1; | ||
330 | schedule_delayed_work(&rtd->delayed_work, | ||
331 | msecs_to_jiffies(rtd->pmdown_time)); | ||
332 | } | ||
326 | } else { | 333 | } else { |
327 | /* capture streams can be powered down now */ | 334 | /* capture streams can be powered down now */ |
328 | snd_soc_dapm_stream_event(rtd, | 335 | snd_soc_dapm_stream_event(rtd, |