[alsa-devel] asoc SND_SOC_DAPM_AIF_IN question

Mark Brown broonie at opensource.wolfsonmicro.com
Thu Dec 23 12:28:28 CET 2010

On Thu, Dec 23, 2010 at 08:36:07AM +0530, Koul, Vinod wrote:
> On Wed, Dec 22, 2010 at 11:25:29PM +0530, Mark Brown wrote:

> > These "Rail" widgets look quite unusual - what are they?

> Audio Supply rails, I have one global audio rail which controls most of audio 
> widgets and then separate rails for speakers and headset. For example I need to 
> turn on Audio supply rail and then headset rail for headsets to work properly. 
> So I described them as SND_SOC_DAPM_SUPPLY. Added events so that I power them on 
> and power off when stream becomes active or inactive.

"Audio Supply" sounds like the main analogue bias for the CODEC - that
would normally be managed by set_bias_level() rather than by having it
supply every single widget in the CODEC map.

> > What is a "PCM button" and what do you mean by starting a "stream"?
> > Normally a stream would be a path between the CPU and the CODEC.

> This is PCM interface enable between codec and cpu. So for PCM port to work 
> between codec and cpu, we need to enable the PCM port, this one does 
> that. This is going to be a global switch to be turned on for all streams (I 
> have 4 playback and 1 capture, and can be simultaneous).

If you have multiple links between the CPU and the CODEC with a single
power bit to control them all I'd suggest defining several AIF widgets,
each with no power management, then making the actual power controlled
by a supply widget.  That way the power will be enabled as required but
you won't have tied all the data streams together in the DAPM map.

> Here I was trying 
> 1) Putting the PCM_In Button as SND_SOC_DAPM_AIF_IN()

I'm still not sure what you mean by "Button"?  I'm guessing it's a
register control for power.

More information about the Alsa-devel mailing list