Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Joonyoung Shim <jy0922.shim@samsung.com>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: alsa-devel@alsa-project.org, kyungmin.park@samsung.com
Subject: Re: [PATCH] ASoC: Add power down of widget powered up for suspend
Date: Mon, 23 Nov 2009 21:48:36 +0900	[thread overview]
Message-ID: <4B0A84A4.7070300@samsung.com> (raw)
In-Reply-To: <20091123122232.GD24326@rakim.wolfsonmicro.main>

On 11/23/2009 9:22 PM, Mark Brown wrote:
> On Mon, Nov 23, 2009 at 02:45:16PM +0900, Joonyoung Shim wrote:
>> If the widget was powered up when the device enters to the suspend, it
>> remains on because the power of the widget doesn't change, but we need
>> to power down the widget on suspend.
> 
> Hrm, yes - good spot, this got missed in the refactoring to make the
> bais maintinence less dependant on stream state.  However...
> 
>>  			power = w->power_check(w);
>> -			if (power)
>> +			if (power) {
>>  				sys_power = 1;
>> +				if (event == SND_SOC_DAPM_STREAM_SUSPEND)
>> +					power = 0;
>> +			}
> 
> We don't want to set sys_power here (since we want to bring the bias
> down to standby in preparatio for suspend) and we can skip the power
> check so something like the patch below ought to do the trick.  Could
> you test and let me know, please?
> 

OK, i missed about sys_power. I tested and below patch solves this issue 
too. I think your patch is better.

Thanks.

> That said, we probably want some more flexibility here for systems which
> want to suspend with bypass paths active.  They'll want to pause streams
> being directly driven by the CPU but leave any other paths active.  That
> would be a new feature, though.
> 

Then, is it possible that the bypass path is alive on suspend?

> diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
> index eaadb4b..0d294ef 100644
> --- a/sound/soc/soc-dapm.c
> +++ b/sound/soc/soc-dapm.c
> @@ -977,9 +977,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;
> @@ -1003,8 +1013,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;
>  		}
> 

      reply	other threads:[~2009-11-23 12:48 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-23  5:45 [PATCH] ASoC: Add power down of widget powered up for suspend Joonyoung Shim
2009-11-23 12:22 ` Mark Brown
2009-11-23 12:48   ` Joonyoung Shim [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B0A84A4.7070300@samsung.com \
    --to=jy0922.shim@samsung.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=kyungmin.park@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox