[alsa-devel] asoc SND_SOC_DAPM_AIF_IN question

Mark Brown broonie at opensource.wolfsonmicro.com
Wed Dec 22 18:55:03 CET 2010

On Wed, Dec 22, 2010 at 10:39:55PM +0530, Koul, Vinod wrote:

> So my codec map looks like:
>         /*headset map*/
>         { "HSDAC Left", NULL, "PCM_In"},
>         { "HSDAC Right", NULL, "PCM_In"},
>         { "PCM_In", NULL, "Headset Rail"},
>         { "Headset Rail", NULL, "Audio Rail"},

>         /*speaker map*/
>         { "IHFDAC Left", NULL, "PCM_In"},
>         { "IHFDAC Right", NULL, "PCM_In"},
>         { "PCM_In", NULL, "Speaker Rail"},
>         { "Speaker Rail", NULL, "Audio Rail"},

> But when the stream is started now all the widgets get powered on. The debugfs 
> entry says

You have unconditionally connected both speaker and headphone widgets to
the same input so when that input becomes active paths are completed to
both outputs and both outpus are enabled.

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

> What could I be doing wrong here? I want to add this PCM button for all streams 
> (4 eventually) and this be enabled whenever anyone of them is started.

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.

The way this works is that as described in reply to your previous mail
DAPM powers anything on which has a completed path from input to output.
As mentioned then if you have no routing control in the device the
machine driver will arrange to enable and disable input and output
widgets on the edge of the CODEC, either automatically using jack
detection or by offering SOC_DAPM_PIN_SWITCH() or similar controls to

More information about the Alsa-devel mailing list