ASoC: core: Allow codec_conf DT lookups to match parent of_node
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Fri, 27 Apr 2018 12:54:36 +0000 (13:54 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 27 Apr 2018 18:23:59 +0000 (19:23 +0100)
For devices implemented as a MFD it is common to only have a single node
in devicetree representing the whole device. As such when looking up
codec_conf mappings we should match against both the devices of_node and
the devices parent's of_node, as is already done for DAIs and platform
components.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-core.c

index 052089f16ea02e4e37da365121093e2329829db4..4b068ccf4e13a77b1089f1f7a01440a0dd37bfca 100644 (file)
@@ -1383,7 +1383,12 @@ static void soc_set_name_prefix(struct snd_soc_card *card,
 
        for (i = 0; i < card->num_configs; i++) {
                struct snd_soc_codec_conf *map = &card->codec_conf[i];
-               if (map->of_node && component->dev->of_node != map->of_node)
+               struct device_node *component_of_node = component->dev->of_node;
+
+               if (!component_of_node && component->dev->parent)
+                       component_of_node = component->dev->parent->of_node;
+
+               if (map->of_node && component_of_node != map->of_node)
                        continue;
                if (map->dev_name && strcmp(component->name, map->dev_name))
                        continue;