[alsa-devel] asoc SND_SOC_DAPM_AIF_IN question

Koul, Vinod vinod.koul at intel.com
Wed Dec 22 18:09:55 CET 2010


Hi,

In the codec driver I am writing I added 2 paths in map, one for Headset and 
second for Speaker. Both of these paths have common PCM port enable button so I 
added that using SND_SOC_DAPM_AIF_IN

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"},

The debugfs tell me this seems right
[root at localhost dapm]# cat PCM_In
PCM_In: Off  in 0 out 5 - R636(0x27c) bit 0
 stream HeadSet Speaker inactive
 in  static Speaker Rail
 in  static Headset Rail
 out static IHFDAC Right
 out static IHFDAC Left
 out static HSDAC Right
 out static HSDAC Left

But when the stream is started now all the widgets get powered on. The debugfs 
entry says
[root at localhost dapm]# cat PCM_In
PCM_In: On  in 1 out 5 - R636(0x27c) bit 0
 stream HeadSet Speaker active
 in  static Speaker Rail
 in  static Headset Rail
 out static IHFDAC Right
 out static IHFDAC Left
 out static HSDAC Right
 out static HSDAC Left

How is this detecting input as 1 (is this due to AIF_IN and thus turning on all 
the widgets in map? (turns on IHFDAC for HeadSet stream as well :(

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.

~Vinod


More information about the Alsa-devel mailing list