[alsa-devel] ASoC: SND_SOC_DAPM_LINE behavior

Peter Ujfalusi peter.ujfalusi at nokia.com
Tue Sep 29 14:59:46 CEST 2009


On Tuesday 29 September 2009 15:44:40 ext Mark Brown wrote:
> On Tue, Sep 29, 2009 at 03:36:39PM +0300, Peter Ujfalusi wrote:
> > The DAPM routing is something like this in the codec driver:
> > |DAC|------------->|              |
> > |
> >                    |Playback Mixer|->|OUTPUT|
> > |
> > |INPUT|->|Bypass|->|              |
> > |
> >          |SWITCH|
> >
> > Now if in the machine driver I create the following DAPM widget:
> > SND_SOC_DAPM_LINE("Line In", NULL),
> >
> > and than connect this DAPM_LINE to the codec's INPUT (LINE-IN):
> > {"LINE-IN", NULL, "Line In"},
> >
> > Than the codec bias level would be always in ON state, regardless of the
> > state of the Bypass Switch (it is off by default).
> 
> That shouldn't happen, turning off the bypass switch should break the
> path and let the bias sit at standby.  I'd need to check the code but I
> expect that the fact that LINE can be either an input or an output is
> confusing things and we need to split it into two widgets, one for input
> and one for output.

It seams that the LINE itself confusing DAPM, since if I connect a LINE to the 
OUTPUT that will also keep the codec bias ON all the time.

Most probably separating the LINE to LINEIN and LINEOUT in dapm would solve the 
problem. This needs however change in the existing machine drivers as well, but 
it should not be too big of a problem.

> The easiest thing for an actual system would just be to not bother with
> the external widget if you're not doing anything with it.  It'll only
> make things work better, there's no need for the external widgets unless
> you're switching them.

Yes, that is true.

Thanks,
Péter


More information about the Alsa-devel mailing list