forked from luck/tmp_suning_uos_patched
ASoC: soc-core: Merge CPU/Codec DAIs
ALSA SoC is currently categorizing CPU/Codec DAIs, and it works well. But modern devices require more complex connections, for example Codec to Codec, etc, and future devices will enable to more complex connections. Because of these background, CPU/Codec DAIs categorizing is no longer good much to modern device. Currently, rtd has both CPU/Codec DAIs pointer. rtd->cpu_dais = [][][][][][][][][] rtd->codec_dais = [][][][][][][][][] This patch merges these into DAIs pointer. rtd->dais = [][][][][][][][][][][][][][][][][][] ^cpu_dais ^codec_dais |--- num_cpus ---|--- num_codecs --| Then, we can merge for_each_rtd_cpu/codec_dais() from this patch. - for_each_rtd_cpu_dais() { - ... - } - for_each_rtd_codec_dais() { - ... - } + for_each_rtd_dais() { + ... + } Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/87wo7kolfa.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
4fcf4b1a05
commit
22a2fc8165
|
@ -1145,6 +1145,7 @@ struct snd_soc_pcm_runtime {
|
|||
struct snd_compr *compr;
|
||||
struct snd_soc_dai *codec_dai;
|
||||
struct snd_soc_dai *cpu_dai;
|
||||
struct snd_soc_dai **dais;
|
||||
|
||||
struct snd_soc_dai **codec_dais;
|
||||
unsigned int num_codecs;
|
||||
|
@ -1184,7 +1185,11 @@ struct snd_soc_pcm_runtime {
|
|||
(i)++)
|
||||
#define for_each_rtd_codec_dais_rollback(rtd, i, dai) \
|
||||
for (; (--(i) >= 0) && ((dai) = rtd->codec_dais[i]);)
|
||||
|
||||
#define for_each_rtd_dais(rtd, i, dai) \
|
||||
for ((i) = 0; \
|
||||
((i) < (rtd)->num_cpus + (rtd)->num_codecs) && \
|
||||
((dai) = (rtd)->dais[i]); \
|
||||
(i)++)
|
||||
|
||||
void snd_soc_close_delayed_work(struct snd_soc_pcm_runtime *rtd);
|
||||
|
||||
|
|
|
@ -475,22 +475,22 @@ static struct snd_soc_pcm_runtime *soc_new_pcm_runtime(
|
|||
INIT_DELAYED_WORK(&rtd->delayed_work, close_delayed_work);
|
||||
|
||||
/*
|
||||
* for rtd->codec_dais
|
||||
* for rtd->dais
|
||||
*/
|
||||
rtd->codec_dais = devm_kcalloc(dev, dai_link->num_codecs,
|
||||
rtd->dais = devm_kcalloc(dev, dai_link->num_cpus + dai_link->num_codecs,
|
||||
sizeof(struct snd_soc_dai *),
|
||||
GFP_KERNEL);
|
||||
if (!rtd->codec_dais)
|
||||
if (!rtd->dais)
|
||||
goto free_rtd;
|
||||
|
||||
/*
|
||||
* for rtd->cpu_dais
|
||||
* dais = [][][][][][][][][][][][][][][][][][]
|
||||
* ^cpu_dais ^codec_dais
|
||||
* |--- num_cpus ---|--- num_codecs --|
|
||||
*/
|
||||
rtd->cpu_dais = devm_kcalloc(dev, dai_link->num_cpus,
|
||||
sizeof(struct snd_soc_dai *),
|
||||
GFP_KERNEL);
|
||||
if (!rtd->cpu_dais)
|
||||
goto free_rtd;
|
||||
rtd->cpu_dais = &rtd->dais[0];
|
||||
rtd->codec_dais = &rtd->dais[dai_link->num_cpus];
|
||||
|
||||
/*
|
||||
* rtd remaining settings
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue
Block a user