@@ -399,6 +399,10 @@ void asoc_simple_card_canonicalize_platform(struct snd_soc_dai_link *dai_link)
/* Assumes platform == cpu */
if (!dai_link->platforms->of_node)
dai_link->platforms->of_node = dai_link->cpu_of_node;
+
+ /* select snd_soc_dummy */
+ if (!dai_link->platforms->of_node)
+ dai_link->platforms->name = "snd-soc-dummy";
}
EXPORT_SYMBOL_GPL(asoc_simple_card_canonicalize_platform);
@@ -1062,7 +1062,7 @@ static int snd_soc_init_platform(struct snd_soc_card *card,
!dai_link->codec_dai_name &&
!dai_link->platform_name &&
!dai_link->platform_of_node)
- goto init_end;
+ return 0;
/* convert Legacy platform link */
if (!platform || dai_link->legacy_platform) {
@@ -1078,13 +1078,12 @@ static int snd_soc_init_platform(struct snd_soc_card *card,
platform->name = dai_link->platform_name;
platform->of_node = dai_link->platform_of_node;
platform->dai_name = NULL;
- }
-init_end:
- /* if there's no platform we match on the empty platform */
- if (!platform->name &&
- !platform->of_node)
- platform->name = "snd-soc-dummy";
+ /* if there's no platform we match on the empty platform */
+ if (!platform->name &&
+ !platform->of_node)
+ platform->name = "snd-soc-dummy";
+ }
return 0;
}
@@ -1181,9 +1180,9 @@ static int soc_init_dai_link(struct snd_soc_card *card,
return -EINVAL;
}
- if (link->platforms->name && link->platforms->of_node) {
+ if (!!link->platforms->name == !!link->platforms->of_node) {
dev_err(card->dev,
- "ASoC: Both platform name/of_node are set for %s\n",
+ "ASoC: Neither/Both platform name/of_node are set for %s\n",
link->name);
return -EINVAL;
}