[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
Mon Nov 1 18:43:05 CET 2010


On Sun, Oct 31, 2010 at 08:11:53PM +0200, Jarkko Nikula wrote:
> Mark Brown <broonie at opensource.wolfsonmicro.com> wrote:
> > 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?

> It was these diffs for dapm_seq_run:

> 		/* Do we need to apply any queued changes? */
> -		if (sort[w->id] != cur_sort || w->reg != cur_reg) {
> +		if (sort[w->id] != cur_sort || w->reg != cur_reg ||
> +		    w->dapm != cur_dapm) {
>  			if (!list_empty(&pending))
>  				dapm_seq_run_coalesced(dapm, &pending);

> So if DAPM is different the dapm_seq_run_coalesced is run now and next
> iterations are done for another DAPM context.

Pretty much - that was the code I was looking for but you were talking
about only the execution code, not the comparison operation.


More information about the Alsa-devel mailing list