ASoC: Do not schedule playback DAPM turn off if pmdown_time is zero
CRs-fixed: 307501
Change-Id: I369178bd9d142f094ca7b7184b6ff1e0d06bed53
Signed-off-by: Kiran Kandi <kkandi@codeaurora.org>
diff --git a/sound/soc/msm/msm8960.c b/sound/soc/msm/msm8960.c
index 0f08682..f5f5893 100644
--- a/sound/soc/msm/msm8960.c
+++ b/sound/soc/msm/msm8960.c
@@ -577,6 +577,8 @@
pr_debug("%s()\n", __func__);
+ rtd->pmdown_time = 0;
+
err = snd_soc_add_controls(codec, tabla_msm8960_controls,
ARRAY_SIZE(tabla_msm8960_controls));
if (err < 0)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index fa709a7..ee66479 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -794,9 +794,15 @@
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
/* start delayed pop wq here for playback streams */
- codec_dai->pop_wait = 1;
- schedule_delayed_work(&rtd->delayed_work,
+ if (rtd->pmdown_time) {
+ codec_dai->pop_wait = 1;
+ schedule_delayed_work(&rtd->delayed_work,
msecs_to_jiffies(rtd->pmdown_time));
+ } else {
+ snd_soc_dapm_stream_event(rtd,
+ codec_dai->driver->playback.stream_name,
+ SND_SOC_DAPM_STREAM_STOP);
+ }
} else {
/* capture streams can be powered down now */
snd_soc_dapm_stream_event(rtd,