diff options
author | Jarkko Nikula <jhnikula@gmail.com> | 2011-05-26 09:32:18 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-05-26 10:58:14 -0400 |
commit | ea77b94774b3cc67162d74894b49af7eb17071f0 (patch) | |
tree | adc131307d52a7b5410cf96dfe75b65c0333f9c1 /sound/soc | |
parent | 979f486944174760400f797d509c05a018132b98 (diff) |
ASoC: Fix power down for widgetless per-card DAPM context case
Commit 52ba67b ("ASoC: Force all DAPM contexts into the same bias state")
powers up all the DAPM contexts in a card if any DAPM context becomes
active. Unfortunately power down newer happens if per-card DAPM context
doesn't have any widgets.
Reason for this is that power state of per-card DAPM context without
widgets is never cleared and thus all the DAPM contexts remain permanently
active. Test for widgetless calling DAPM context in dapm_power_widgets()
doesn't work for per-card DAPM context since power change is never
originating from widgetless per-card DAPM context.
Fix this by pre-clearing power state flag of non-codec DAPM context at the
beginning of power sequence.
Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/soc-dapm.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 456617e63789..999bb08cdfb1 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c | |||
@@ -1110,7 +1110,7 @@ static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event) | |||
1110 | trace_snd_soc_dapm_start(card); | 1110 | trace_snd_soc_dapm_start(card); |
1111 | 1111 | ||
1112 | list_for_each_entry(d, &card->dapm_list, list) | 1112 | list_for_each_entry(d, &card->dapm_list, list) |
1113 | if (d->n_widgets) | 1113 | if (d->n_widgets || d->codec == NULL) |
1114 | d->dev_power = 0; | 1114 | d->dev_power = 0; |
1115 | 1115 | ||
1116 | /* Check which widgets we need to power and store them in | 1116 | /* Check which widgets we need to power and store them in |