Re: [PATCH 0/7] ASoC: Merge CPU/Codec DAIs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 3/10/20 9:27 PM, Kuninori Morimoto wrote:

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 ?

Thanks for the precisions.

I have no objections to the addition of the rtd->dais, it can indeed simplify the code by just processing all dais in the same loop.

I would still like to make sure we have an broadbrush idea of what the 2nd step might be. It seems to me it's not possible to avoid having a notion of source/sink inside of a dailink (the wording is probably not right e.g. for full duplex, maybe domain1/domain2 component1/component2 are more accurate). The dais are exposed by different components and are really the hook by which the components can be configured with compatible settings.

Thanks
-Pierre





[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux