[alsa-devel] ASoC: SND_SOC_DAPM_LINE behavior

Peter Ujfalusi peter.ujfalusi at nokia.com
Tue Sep 29 14:36:39 CEST 2009


Hello,

as I'm writing a new codec driver I have noticed the following (using 2.6.31 
kernel).

The codec itself is really simple, it is only capable of playback and it can 
bypass audio from line-in to the output.
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).
I can use the snd_soc_dapm_disable_pin(codec, "Line In") in the machine driver 
to disable the pin, which moves the codec to STANDBY state.

Now, if I change the SND_SOC_DAPM_LINE to
SND_SOC_DAPM_MIC("Line In", NULL),
in the machine driver, than the codec bias would be STANDBY as long as the 
Bypass switches are off, if they changed to on, than the codec bias goes to ON, 
as expected.

Is this expected behavior?

-- 
Péter


More information about the Alsa-devel mailing list