[alsa-devel] [RFC_ii/iv 3/3] ASoC: Extend DAPM to handle power changes on cross-device paths

Mark Brown broonie at opensource.wolfsonmicro.com
Fri Oct 29 23:03:10 CEST 2010


On Fri, Oct 29, 2010 at 03:02:22PM +0300, Jarkko Nikula wrote:

> Functions dapm_seq_run and dapm_seq_run_coalesced are modified so that a new
> write is issued when the sequence extends to an another device and DAPM
> context of a widget instead of originating DAPM context is used when doing
> pop waits and register writes.

I'm having a hard time parsing this bit of the changelog, I'm afraid.
What I'd expect is that the comparison operation used for coalescing
would be extended to compare based on the CODEC/DAPM context too and the
split per device should naturally fall out of that.  I didn't notice the
comparison being updated?

Otherwise this looks pretty good, these are stylistic things:

>  		/* power down pre event */
>  		if (!w->power && w->event &&
>  		    (w->event_flags & SND_SOC_DAPM_PRE_PMD)) {
> -			pop_dbg(dapm->pop_time, "pop test : %s PRE_PMD\n",
> +			pop_dbg(w->dapm->pop_time, "pop test : %s PRE_PMD\n",
>  				w->name);

We probably need to start putting the dev_names in these.

>  			if (power)
> -				sys_power = 1;
> +				w->dapm->sys_power = 1;

sys_power needs to be renamed - probably dev_power or something.

> -	/* If we're changing to all on or all off then prepare */
> -	if ((sys_power && dapm->bias_level == SND_SOC_BIAS_STANDBY) ||
> -	    (!sys_power && dapm->bias_level == SND_SOC_BIAS_ON)) {
> -		ret = snd_soc_dapm_set_bias_level(card, dapm, SND_SOC_BIAS_PREPARE);
> -		if (ret != 0)
> -			pr_err("Failed to prepare bias: %d\n", ret);
> +		/* If we're changing to all on or all off then prepare */
> +		if ((d->sys_power && d->bias_level == SND_SOC_BIAS_STANDBY) ||
> +		    (!d->sys_power && d->bias_level == SND_SOC_BIAS_ON)) {
> +			ret = snd_soc_dapm_set_bias_level(card, d, SND_SOC_BIAS_PREPARE);
> +			if (ret != 0)
> +				pr_err("Failed to prepare bias: %d\n", ret);
> +		}

We can switch these over to dev_ prints now, I think.


More information about the Alsa-devel mailing list