Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | Date | Sun, 06 Dec 2009 16:00:29 -0800 | From | Greg KH <> | Subject | [053/119] ASoC: Fix suspend with active audio streams |
| |
2.6.31-stable review patch. If anyone has any objections, please let us know.
------------------ From: Mark Brown <broonie@opensource.wolfsonmicro.com>
commit 50b6bce59d154b5db137907a5c0ed45a4e7a3829 upstream.
When we get a stream suspend event force the power down since otherwise the stream would remain marked as active. In future we'll probably want to make this stream-specific and add an interface to make the power down of other widgets optional in order to support leaving bypass paths active while suspending the processor.
Reported-by: Joonyoung Shim <jy0922.shim@samsung.com> Tested-by: Joonyoung Shim <jy0922.shim@samsung.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- sound/soc/soc-dapm.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
--- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -774,9 +774,19 @@ static int dapm_power_widgets(struct snd if (!w->power_check) continue; - power = w->power_check(w); - if (power) - sys_power = 1; + /* If we're suspending then pull down all the + * power. */ + switch (event) { + case SND_SOC_DAPM_STREAM_SUSPEND: + power = 0; + break; + + default: + power = w->power_check(w); + if (power) + sys_power = 1; + break; + } if (w->power == power) continue;
| ![\](/images/icornerr.gif) |