[alsa-devel] [PATCH] ASoC: core: Better support for idle_bias_off suspend ignores

Liam Girdwood lrg at ti.com
Tue Jan 31 17:01:39 CET 2012


On Tue, 2012-01-31 at 15:49 +0000, Mark Brown wrote:
> If an idle_bias_off device is in any state other than off then it is still
> active for some reason (typically a low power function such as accessory
> detection). This wasn't an issue when the feature was implemented as we
> always went to _ON for any active function, subsequent power improvements
> have changed things.
> 
> With the modern way of doing things we should overhaul the infrastructure
> to allow devices to explicitly take references for these functions but
> that's a much more invasive change and will require driver updates to
> deploy, this will bring the framework into line with the existing driver
> set before we do that work.
> 
> Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
> ---
>  sound/soc/soc-core.c |   11 +++++++++++
>  1 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index 53fd9d2..09fa8a6 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -567,6 +567,17 @@ int snd_soc_suspend(struct device *dev)
>  		if (!codec->suspended && codec->driver->suspend) {
>  			switch (codec->dapm.bias_level) {
>  			case SND_SOC_BIAS_STANDBY:
> +				/*
> +				 * If the CODEC is capable of idle
> +				 * bias off then being in STANDBY
> +				 * means it's doing something,
> +				 * otherwise fall through.
> +				 */
> +				if (codec->dapm.idle_bias_off) {
> +					dev_dbg(codec->dev,
> +						"idle_bias_off CODEC on over suspend\n");
> +					break;
> +				}
>  			case SND_SOC_BIAS_OFF:
>  				codec->driver->suspend(codec);
>  				codec->suspended = 1;

Acked-by: Liam Girdwood <lrg at ti.com>



More information about the Alsa-devel mailing list