ASoC: soc-core: add asoc_rtd_to_cpu/codec() macro
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 23 Mar 2020 05:16:57 +0000 (14:16 +0900)
committerMark Brown <broonie@kernel.org>
Fri, 27 Mar 2020 14:44:29 +0000 (14:44 +0000)
Now, snd_soc_pcm_runtime supports multi cpu_dai/codec_dai.
It still has cpu_dai/codec_dai for single DAI,
and has cpu_dais/codec_dais for multi DAIs.

dais  = [][][][][][][][][][][][][][][][][][]
^cpu_dais         ^codec_dais
|--- num_cpus ---|--- num_codecs --|

/* for multi DAIs */
rtd->cpu_dais   = &rtd->dais[0];
rtd->codec_dais = &rtd->dais[dai_link->num_cpus];

/* for single DAI */
rtd->cpu_dai    = rtd->cpu_dais[0];
rtd->codec_dai = rtd->codec_dais[0];

But, these can be replaced by dais.
This patch adds asoc_rtd_to_cpu() / asoc_rtd_to_codec() macro for it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/875zevk5va.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc.h

index 539211bd0f94937dc80dbe8a087cb9d3c7ac7879..13458e4fbb132ed3a0fef16af7cd6317973e54fa 100644 (file)
@@ -1169,6 +1169,10 @@ struct snd_soc_pcm_runtime {
        int num_components;
        struct snd_soc_component *components[0]; /* CPU/Codec/Platform */
 };
+/* see soc_new_pcm_runtime()  */
+#define asoc_rtd_to_cpu(rtd, n)   (rtd)->dais[n]
+#define asoc_rtd_to_codec(rtd, n) (rtd)->dais[n + (rtd)->num_cpus]
+
 #define for_each_rtd_components(rtd, i, component)                     \
        for ((i) = 0;                                                   \
             ((i) < rtd->num_components) && ((component) = rtd->components[i]);\