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 applications.