]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
ASoC: simple-card-utils: care simple_util_dai for dummy DAI
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 12 Nov 2024 02:39:44 +0000 (02:39 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 12 Nov 2024 13:08:31 +0000 (13:08 +0000)
Simple Card Utils has simple_util_dai which is paired to snd_soc_dai,
and assmus that CPU/Codec DAI and its paired simple_util_dai are same
order for CPU/Codec

simple_util_dai[0] <--> snd_soc_dai[0]
simple_util_dai[1] <--> snd_soc_dai[1]
...

So, it is using same index in for_each loop.

(X) gets simple_util_dai
(Y) gets snd_soc_dai

(Y) for_each_rtd_cpu_dais(.., i, ..) {
(X)(A) udai = simple_props_to_dai_cpu(.., i);
}

(X) for_each_prop_dai_cpu(.., i, ...) {
(Y) dai = snd_soc_rtd_to_cpu(.., i);
...
}

But current Simple Card Utils didn't have simple_util_dai for
dummy DAI. So above (A) will get NULL pointer in such case.
This patch cares simple_util_dai for dummy DAI.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/87msi5maz3.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/generic/simple-card-utils.c

index d47c372228b34c8be12d54080cd5679f4b87b5a2..24b371f32066325ac143745ec4136495bc727b4f 100644 (file)
@@ -858,6 +858,10 @@ int simple_util_init_aux_jacks(struct simple_util_priv *priv, char *prefix)
 }
 EXPORT_SYMBOL_GPL(simple_util_init_aux_jacks);
 
+static struct simple_util_dai dummy_util_dais = {
+       .name = "dummy_util_dais",
+};
+
 int simple_util_init_priv(struct simple_util_priv *priv,
                          struct link_info *li)
 {
@@ -929,6 +933,7 @@ int simple_util_init_priv(struct simple_util_priv *priv,
                        dai_link[i].cpus        = &snd_soc_dummy_dlc;
                        dai_props[i].num.cpus   =
                        dai_link[i].num_cpus    = 1;
+                       dai_props[i].cpu_dai    = &dummy_util_dais;
                }
 
                if (li->num[i].codecs) {
@@ -951,6 +956,7 @@ int simple_util_init_priv(struct simple_util_priv *priv,
                        dai_link[i].codecs      = &snd_soc_dummy_dlc;
                        dai_props[i].num.codecs =
                        dai_link[i].num_codecs  = 1;
+                       dai_props[i].codec_dai  = &dummy_util_dais;
                }
 
                if (li->num[i].platforms) {