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

Jarkko Nikula jhnikula at gmail.com
Sun Oct 31 19:11:53 CET 2010

On Fri, 29 Oct 2010 14:03:10 -0700
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.

Looking at this now I think I can leave out dapm_seq_run_coalesced
changes by changing the line above to
dapm_seq_run_coalesced(cur_dapm, &pending). I'll check it for the
next version.

> Otherwise this looks pretty good, these are stylistic things:
Good notes. I'll change them.


More information about the Alsa-devel mailing list