[alsa-devel] ASOC: stream widget created two times
Hello, I 'm newbie on asoc dev. I'm trying to develop a driver based on dynamic PCM implementation with backend and frontend. I'm working on 3.10
I have declared a FE : { .name = "MMDL0", .stream_name = "MM DL0 Frontend", .cpu_dai_name = "mm_dl0",
.codec_name = "snd-soc-dummy", .codec_dai_name = "snd-soc-dummy-dai",
.dynamic=1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .ignore_pmdown_time = 1, /* Power down without delay */ .init = sti_dummy_init, },
CPU DAI associated: static struct snd_soc_dai_driver sti_frontend_cpu_dais[] = { { .name = "mm_dl0", .playback = { .stream_name = "MM_DL0", .channels_min = 1, .channels_max = 8, .rates = SNDRV_PCM_RATE_48000, .formats = SNDRV_PCM_FMTBIT_S16_LE }, .probe = sti_frontend_dai_probe, .probe_order = SND_SOC_COMP_ORDER_FIRST, }, } Platform is declared using platform_of_node using DTS. I have also declared a BE and the route that links the FE cpu dai widget with the BE codec dai widget.
My concern is that MM_DL0 widget is created 2 times. One time in soc_probe_link_dais and one time in soc_probe_platform. After analysis it seems that this occurs because my cpu dai is registered in platform device. In this case the condition if (dai->dev != platform->dev) in soc_probe_platform is false, so dai widget is created a second time.
So I would like to know if this is a normal behavior and I have to create a specific device to register my cpu_dai?
Thanks in advance for your answers
BR
Arnaud
On Fri, 2013-11-22 at 15:19 +0100, Arnaud POULIQUEN wrote:
Hello, I 'm newbie on asoc dev. I'm trying to develop a driver based on dynamic PCM implementation with backend and frontend. I'm working on 3.10
I have declared a FE : { .name = "MMDL0", .stream_name = "MM DL0 Frontend", .cpu_dai_name = "mm_dl0",
.codec_name = "snd-soc-dummy", .codec_dai_name = "snd-soc-dummy-dai", .dynamic=1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .ignore_pmdown_time = 1, /* Power down without delay */ .init = sti_dummy_init,
},
CPU DAI associated: static struct snd_soc_dai_driver sti_frontend_cpu_dais[] = { { .name = "mm_dl0", .playback = { .stream_name = "MM_DL0", .channels_min = 1, .channels_max = 8, .rates = SNDRV_PCM_RATE_48000, .formats = SNDRV_PCM_FMTBIT_S16_LE }, .probe = sti_frontend_dai_probe, .probe_order = SND_SOC_COMP_ORDER_FIRST, }, } Platform is declared using platform_of_node using DTS. I have also declared a BE and the route that links the FE cpu dai widget with the BE codec dai widget.
My concern is that MM_DL0 widget is created 2 times. One time in soc_probe_link_dais and one time in soc_probe_platform.
This bug has been fixed in later kernel. Can you cherry pick commit ae10e7e8f1c9d021c8daca750d743cc3baa12e6d from 3.12.
Thanks
Liam
participants (2)
-
Arnaud POULIQUEN
-
Liam Girdwood