ASoC: soc-core: add snd_soc_of_parse_node_prefix()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Thu, 22 Nov 2018 00:55:09 +0000 (00:55 +0000)
committerMark Brown <broonie@kernel.org>
Fri, 23 Nov 2018 14:01:47 +0000 (14:01 +0000)
Current ASoC has snd_soc_of_parse_audio_prefix() to get codec_conf
settings from DT which is used to avoid DAI naming conflict when
CPU/Codec matching.

Currently, it is parsing from "top node",
but, we want to parse from "each sub node" if sound card had multi
cpus/codecs.

This patch adds new snd_soc_of_parse_node_prefix() to allow parsing
settings from selected node.
It is keeping existing snd_soc_of_parse_audio_prefix() by using macro.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc.h
sound/soc/soc-core.c

index 5a8b841..93b7510 100644 (file)
@@ -1477,10 +1477,14 @@ int snd_soc_of_parse_tdm_slot(struct device_node *np,
                              unsigned int *rx_mask,
                              unsigned int *slots,
                              unsigned int *slot_width);
-void snd_soc_of_parse_audio_prefix(struct snd_soc_card *card,
+void snd_soc_of_parse_node_prefix(struct device_node *np,
                                   struct snd_soc_codec_conf *codec_conf,
                                   struct device_node *of_node,
                                   const char *propname);
+#define snd_soc_of_parse_audio_prefix(card, conf, node, name) \
+       snd_soc_of_parse_node_prefix((card)->dev->of_node,    \
+                                    (conf), (node), (name))
+
 int snd_soc_of_parse_audio_routing(struct snd_soc_card *card,
                                   const char *propname);
 unsigned int snd_soc_of_parse_daifmt(struct device_node *np,
index 6ddcf12..012000d 100644 (file)
@@ -3484,12 +3484,11 @@ int snd_soc_of_parse_tdm_slot(struct device_node *np,
 }
 EXPORT_SYMBOL_GPL(snd_soc_of_parse_tdm_slot);
 
-void snd_soc_of_parse_audio_prefix(struct snd_soc_card *card,
-                                  struct snd_soc_codec_conf *codec_conf,
-                                  struct device_node *of_node,
-                                  const char *propname)
+void snd_soc_of_parse_node_prefix(struct device_node *np,
+                                 struct snd_soc_codec_conf *codec_conf,
+                                 struct device_node *of_node,
+                                 const char *propname)
 {
-       struct device_node *np = card->dev->of_node;
        const char *str;
        int ret;
 
@@ -3502,7 +3501,7 @@ void snd_soc_of_parse_audio_prefix(struct snd_soc_card *card,
        codec_conf->of_node     = of_node;
        codec_conf->name_prefix = str;
 }
-EXPORT_SYMBOL_GPL(snd_soc_of_parse_audio_prefix);
+EXPORT_SYMBOL_GPL(snd_soc_of_parse_node_prefix);
 
 int snd_soc_of_parse_audio_routing(struct snd_soc_card *card,
                                   const char *propname)