On Sat, Oct 12, 2019 at 12:57 AM Sridharan, Ranjani <ranjani.sridharan@xxxxxxxxx> wrote: > > > > On Fri, Oct 11, 2019 at 2:05 PM Daniel Baluta <daniel.baluta@xxxxxxxxx> wrote: >> >> Hi Morimoto-san, >> >> I'm really confused on what exactly is Front End and Back End. >> >> Is FE a DAI or a DAI link or part of a DAI link? >> >> In simple-card.c there is simple_dai_link_of_dpcm function: >> >> struct snd_soc_dai_link_component *codecs = dai_link->codecs; >> >> » /* BE is dummy */ >> » » codecs->of_node»» = NULL; >> » » codecs->dai_name» = "snd-soc-dummy-dai"; >> » » codecs->name» » = "snd-soc-dummy"; >> >> » » /* FE settings */ >> » » dai_link->dynamic» » = 1; >> » » dai_link->dpcm_merged_format» = 1; >> >> So, from here it looks like BE/FE are components being part of the same link. >> >> Another thing is: >> >> asoc_simple_canonicalize_platform function where it does say: >> >> » * DPCM BE can be no platform. >> » * Alloced memory will be waste, but not leak. >> » */ >> » if (!dai_link->platforms->of_node) >> » » dai_link->num_platforms = 0; >> >> But I do want to create a BE with a platform. So, should I try to >> revert the following >> patch: >> >> commit 794fcee8da3c0c8a01b08ecad1c181cb0a622868 >> Author: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> >> Date: Wed Jul 10 17:01:12 2019 +0900 >> >> ASoC: simple-card-utils: care no Platform for DPCM >> >> commit 34614739988ad ("ASoC: soc-core: support dai_link with >> platforms_num != 1") supports multi Platform, and >> commit 9f3eb91753451 ("ASoC: simple-card-utils: consider CPU-Platform >> possibility") removed no Platform from simple-card. >> >> Multi Platform is now checking both Platform name/of_node are NULL case. >> But in normal case, DPCM be doesn't have Platform. >> >> >> >> Basically, what I want to do is: after the DAI link is created to call: >> snd_soc_fixup_dai_links_platform_name function to set a proper name >> for BE platform. >> >> The problem is that above mentioned patch sets dai_link->num_platforms = 0; >> so even the name is set the platform component is not probed. > > > Hi Daniel, > Have you looked into how SOF does it at the time the dai_link elem in topology is parsed? > https://github.com/thesofproject/linux/blob/5edcfdf3907354de7a260a451ba611f22c5e6a07/sound/soc/sof/topology.c#L2926 > > Is this what you are asking about? Hi Ranjani, Not really. Due to this patch: Author: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> Date: Wed Jul 10 17:01:12 2019 +0900 ASoC: simple-card-utils: care no Platform for DPCM I cannot probe platform component created by SOF. Even if I set the correct name for BE's platform name because the above patch sets dai_link->num_platforms = 0 the platform component won't be probed. So, the topology won't be loaded. I don't understand the full story here. There are these 3 patches: (3) 794fcee8da3c ASoC: simple-card-utils: care no Platform for DPCM (2) 9f3eb9175345 ASoC: simple-card-utils: consider CPU-Platform possibility (1) 6f0437445735 ASoC: simple-card-utils: don't select unnecessary Platform which I think they are doing as follows: (1) Allows a DAI link to have no platform component attached. (2) There is an usecase where Platform can't be NULL. So, if platform->of_node is NULL then is set to platforms->of_node = cpus->of_node. (3) Now, the problem with patch (2) is when also cpus->of_node is NULL. In this case platforms->of_node becomes NULL. And the platforms is left unspecified (because platforms->name is also NULL). So, I think (3) is just an workaround by setting link->num_platforms the function soc_bind_dai_link will actually skip iterating over platforms. My suggestion is that asoc_simple_canonicalize_platform should also check if platform has a name and in that case to skip zeroing dai_link->num_platforms. Will send an RFC. _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx https://mailman.alsa-project.org/mailman/listinfo/alsa-devel