Commit 50b6bce5 authored by Mark Brown's avatar Mark Brown

ASoC: Fix suspend with active audio streams

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.

Cc: stable@kernel.org
Reported-by: default avatarJoonyoung Shim <jy0922.shim@samsung.com>
Tested-by: default avatarJoonyoung Shim <jy0922.shim@samsung.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent bab02124
......@@ -973,9 +973,19 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
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;
......@@ -999,8 +1009,12 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
case SND_SOC_DAPM_STREAM_RESUME:
sys_power = 1;
break;
case SND_SOC_DAPM_STREAM_SUSPEND:
sys_power = 0;
break;
case SND_SOC_DAPM_STREAM_NOP:
sys_power = codec->bias_level != SND_SOC_BIAS_STANDBY;
break;
default:
break;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment