ASoC: Allow machines to ignore pmdown_time per-link
authorramesh.babu@linux.intel.com <ramesh.babu@linux.intel.com>
Thu, 27 Oct 2011 06:42:33 +0000 (12:12 +0530)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 27 Oct 2011 10:05:50 +0000 (12:05 +0200)
With this flag, each dai_link in machine driver can choose
to ignore pmdown_time during DAPM shut down sequence.

If the ignore_pmdown_time is set, the DAPM for corresponding DAI
will be executed immediately.

Signed-off-by: Ramesh Babu K V <ramesh.babu@linux.intel.com>
Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
include/sound/soc.h
sound/soc/soc-pcm.c

index 11cfb5953e06eb82c22f52319aa2c4ea31d7f99a..877fcc1e016794c5966af829fe7dc6f952e05934 100644 (file)
@@ -718,6 +718,9 @@ struct snd_soc_dai_link {
        /* Symmetry requirements */
        unsigned int symmetric_rates:1;
 
+       /* pmdown_time is ignored at stop */
+       unsigned int ignore_pmdown_time:1;
+
        /* codec/machine specific init - e.g. add machine controls */
        int (*init)(struct snd_soc_pcm_runtime *rtd);
 
index ee15337353fae5f2cf16f5ab86f94d13440dc6bd..52a7259f61842d173a45ae57ff7fb9806cd73c94 100644 (file)
@@ -319,7 +319,8 @@ static int soc_pcm_close(struct snd_pcm_substream *substream)
        cpu_dai->runtime = NULL;
 
        if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-               if (unlikely(codec->ignore_pmdown_time)) {
+               if (unlikely(codec->ignore_pmdown_time ||
+                       rtd->dai_link->ignore_pmdown_time)) {
                        /* powered down playback stream now */
                        snd_soc_dapm_stream_event(rtd,
                                codec_dai->driver->playback.stream_name,