Hi Pierre-Louis > > rtd->cpu_dais = [][][][][][][][][] > > rtd->codec_dais = [][][][][][][][][] (snip) > > rtd->dais = [][][][][][][][][][][][][][][][][][] > > ^cpu_dais ^codec_dais > > |--- num_cpus ---|--- num_codecs --| (snip) > Is the end-goal to remove the cpu_dais and codec_dais, and fold them > as non-descript 'dais'? This is what I understand by "it will be no > longer good much for modern device" Yes. We want to have non-descript DAIs in the future. I think this was indicated by Lars-Peter before at ELCE. But, I think we *can't* do it right now. Because many drivers are considering CPU and Codec separately. > Or is this 'merge' a simple data handling change to avoid using two > "for" loops instead of one, and we are going to keep the distinction > between dais? Yes. There are some functions which is doing something only for CPU or Codec. This patch-set do nothing to such functions. Maybe it can be updated in the future, maybe not (can't). I hope this patch-set can be 1st step for non-descript DAIs. But the main purpose of this patch so far is that keeping current CPU / Codec DAIs method, but, simply merge such code *if possible*. > more specifically I am concerned about the tons of code we have, > e.g. a random machine driver: > > struct snd_soc_dai *codec_dai = rtd->codec_dai; > struct snd_soc_jack *jack; > int ret; > > /* Configure sysclk for codec */ > ret = snd_soc_dai_set_sysclk(codec_dai, DA7219_CLKSRC_MCLK, > > If the rtd structure only has an array of dais, how would the codecs > be configured then? The image is like this. It still can use rtd->cpu_dais, rtd->codec_dais. Of course for_each_rtd_cpu/codec_dais() macro too. rtd->dais = [][][][][][][][][][][][][][][][][][] ^cpu_dais ^codec_dais |--- num_cpus ---|--- num_codecs --| rtd->cpu_dais = &rtd->dais[0]; rtd->codec_dais = &rtd->dais[dai_link->num_cpus]; So we can use/keep existing code/method same as before. Is this good answer for you ? Thank you for your help !! Best regards --- Kuninori Morimoto