ASoC: dapm: Notify stream event to all card components.
authorLiam Girdwood <lrg@ti.com>
Wed, 15 Feb 2012 15:15:35 +0000 (15:15 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 15 Feb 2012 15:56:49 +0000 (07:56 -0800)
Currently when DAPM widgets are power sequenced the stream_event()
completion callback is only called for the stream_event originator
DAPM context. Other components in the card may also be interested so
make sure they are also notified of any widget power events.

Signed-off-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/soc-dapm.c

index 227887e05b708d998b21264fe523ff49f366396c..63a5614d33cb063d2cf869cec1372485c933994c 100644 (file)
@@ -1516,6 +1516,12 @@ static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event)
                                        &async_domain);
        async_synchronize_full_domain(&async_domain);
 
+       /* do we need to notify any clients that DAPM event is complete */
+       list_for_each_entry(d, &card->dapm_list, list) {
+               if (d->stream_event)
+                       d->stream_event(d, event);
+       }
+
        pop_dbg(dapm->dev, card->pop_time,
                "DAPM sequencing finished, waiting %dms\n", card->pop_time);
        pop_wait(card->pop_time);
@@ -2854,10 +2860,6 @@ static void soc_dapm_stream_event(struct snd_soc_dapm_context *dapm,
        }
 
        dapm_power_widgets(dapm, event);
-
-       /* do we need to notify any clients that DAPM stream is complete */
-       if (dapm->stream_event)
-               dapm->stream_event(dapm, event);
 }
 
 /**