+static int simple_card_cpu_codec_of(struct device_node *node,
+ int daifmt,
+ struct snd_soc_dai_link *dai_link,
+ struct simple_dai_props *dai_props)
+{
+ struct device_node *np;
+ int ret;
+
+ /* CPU sub-node */
+ ret = -EINVAL;
+ np = of_get_child_by_name(node, "simple-audio-card,cpu");
+ if (np) {
+ ret = asoc_simple_card_sub_parse_of(np, daifmt,
+ &dai_props->cpu_dai,
+ &dai_link->cpu_of_node,
+ &dai_link->cpu_dai_name);
+ of_node_put(np);
+ }
+ if (ret < 0)
+ return ret;
+
+ /* CODEC sub-node */
+ ret = -EINVAL;
+ np = of_get_child_by_name(node, "simple-audio-card,codec");
+ if (np) {
+ ret = asoc_simple_card_sub_parse_of(np, daifmt,
+ &dai_props->codec_dai,
+ &dai_link->codec_of_node,
+ &dai_link->codec_dai_name);
+ of_node_put(np);
+ }
+ return ret;
+}
+