[alsa-devel] Bug in 3.10 alsa routing?
Hello folks,
I am working on enabling a new alsa codec driver and I am stuck with this below routing problem.
SND_SOC_DAPM_AIF_OUT("AIF1TX1",)
{ "AIF3RX1", NULL, "AIF3 Playback" }, { "AIF1TX1 Input 1", NULL, "AIF3RX1" }, { "AIF1TX1", AIF1TX1, "AIF1TX1 Input 1" }, { "AIF1TX1", AIF1TX2, "AIF1TX1 Input 1" }, { "AIF1 Capture", NULL, "AIF1TX1" },
AIF3 Playback and AIF1 Capture is stream name of AIF3 and AIF1 dai respectively.
After setting the paths using mixer command and triggering AIF3 playback dai, I see that it is not powering AIF3 Playback widget.
After debugging I found the problem to be that ALSA core searches for physically connected or active widget path before it can power on the widget. So I think the codec developer wanted me start the AIF1 capturing to turn on the whole path. However in our system we just want to connect AIF3RX1 to AIF1TX1.
So i changed to below and now it is powering on the AIF3 Playback widget. SND_SOC_DAPM_OUTPUT("DUMMY_NODE"), // { "AIF1 Capture", NULL, "AIF1TX1" }, { "DUMMY_NODE", NULL, "AIF1TX1" },
Is ALSA core working as designed as I am using 3.11?
Thanks, Variksla
On 08/13/2016 08:39 PM, noman pouigt wrote:
Hello folks,
I am working on enabling a new alsa codec driver and I am stuck with this below routing problem.
SND_SOC_DAPM_AIF_OUT("AIF1TX1",)
{ "AIF3RX1", NULL, "AIF3 Playback" }, { "AIF1TX1 Input 1", NULL, "AIF3RX1" }, { "AIF1TX1", AIF1TX1, "AIF1TX1 Input 1" }, { "AIF1TX1", AIF1TX2, "AIF1TX1 Input 1" }, { "AIF1 Capture", NULL, "AIF1TX1" },
AIF3 Playback and AIF1 Capture is stream name of AIF3 and AIF1 dai respectively.
After setting the paths using mixer command and triggering AIF3 playback dai, I see that it is not powering AIF3 Playback widget.
After debugging I found the problem to be that ALSA core searches for physically connected or active widget path before it can power on the widget. So I think the codec developer wanted me start the AIF1 capturing to turn on the whole path. However in our system we just want to connect AIF3RX1 to AIF1TX1.
Hi,
DAPM will power up a path if there is a connection between an active sink and a active source. The playback widget is a source, the capture widget is a sink. So if both of them are active you should see them power up. If only one of them is active the system will stay powered down.
Maybe this presentation is also helpful: http://events.linuxfoundation.org/sites/events/files/slides/dapm.pdf
- Lars
participants (2)
-
Lars-Peter Clausen
-
noman pouigt