On 5/22/2023 6:35 AM, Kuninori Morimoto wrote:
Hi Amadeusz
Thank you for testing
I put the patchset to test and it fails to enumerate devices on our platforms.
Bisect leads me to this patch, here is dmesg fragment:
(snip)
[ 34.617601] avs_hdaudio avs_hdaudio.2: ASoC: Parent card not yet available, widget card binding deferred
(snip)
[ 34.619973] probing-LINK: substream (null) has no playback, no capture
Hmm.. I tested it on my many type of connections, but couldn't reproduce the error...
It seems you got [01/20] patch error = no playback, no capture. This means has_playback/capture both flags are 0.
It seems you are using soc-topology. Is it topology specific something ?
But hmm.. ?
static int soc_get_playback_capture(...) { ... (A) if (dai_link->dynamic || dai_link->no_pcm) { ... if (dai_link->dpcm_playback) { ... (B) for_each_rtd_cpu_dais(rtd, i, cpu_dai) { ... } ... } if (dai_link->dpcm_capture) { ... (B) for_each_rtd_cpu_dais(rtd, i, cpu_dai) { ... } } ... } }
It checks CPU (B) when no_pcm (A) on original. But I think "no_pcm - CPU" is dummy DAI -> above check is no meaning. After the patch, it checks both CPU/Codec.
no_pcm means that we are describing Back End, if you check any file in sound/soc/intel/avs/boards, they set link->no_pcm to 1 - those files describe card and BE (codec) configuration. Topology in case of our driver describe Front Ends (what is visible when you do "aplay -l"), as well as DSP path. Topology sets link->dynamic to 1 in soc_tplg_fe_link_create(). Do note that card and topology are loaded separately hence the "card binding deferred" message in dmesg above.
I wonder is your Codec which is connected to no_pcm DAI valid ?
I'm not sure what do you mean, if it is valid? It works fine before this patch ;)