Merge remote-tracking branch 'asoc/topic/core' into asoc-next
authorMark Brown <broonie@kernel.org>
Mon, 12 Dec 2016 15:52:43 +0000 (15:52 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 12 Dec 2016 15:52:43 +0000 (15:52 +0000)
sound/soc/soc-core.c

index f35ec5bf3b781292212ef3fa8495ca6fc8e0dac2..7c3bf160a1a1cdb00ab38f2765a26677c47fa04c 100644 (file)
@@ -993,6 +993,7 @@ static int soc_bind_dai_link(struct snd_soc_card *card,
        struct snd_soc_dai_link_component cpu_dai_component;
        struct snd_soc_dai **codec_dais;
        struct snd_soc_platform *platform;
+       struct device_node *platform_of_node;
        const char *platform_name;
        int i;
 
@@ -1042,9 +1043,12 @@ static int soc_bind_dai_link(struct snd_soc_card *card,
 
        /* find one from the set of registered platforms */
        list_for_each_entry(platform, &platform_list, list) {
+               platform_of_node = platform->dev->of_node;
+               if (!platform_of_node && platform->dev->parent->of_node)
+                       platform_of_node = platform->dev->parent->of_node;
+
                if (dai_link->platform_of_node) {
-                       if (platform->dev->of_node !=
-                           dai_link->platform_of_node)
+                       if (platform_of_node != dai_link->platform_of_node)
                                continue;
                } else {
                        if (strcmp(platform->component.name, platform_name))