Merge remote-tracking branches 'asoc/topic/simple', 'asoc/topic/spear', 'asoc/topic...
[sfrench/cifs-2.6.git] / sound / soc / generic / simple-card-utils.c
index af44c8c52a1954304ce2ffe37516157d9fe91dd5..3751a07de6aac1c6bab6e670abd9c91832fd7f51 100644 (file)
@@ -132,7 +132,7 @@ int asoc_simple_card_parse_card_name(struct snd_soc_card *card,
 
        /* Parse the card name from DT */
        ret = snd_soc_of_parse_card_name(card, "label");
 
        /* Parse the card name from DT */
        ret = snd_soc_of_parse_card_name(card, "label");
-       if (ret < 0) {
+       if (ret < 0 || !card->name) {
                char prop[128];
 
                snprintf(prop, sizeof(prop), "%sname", prefix);
                char prop[128];
 
                snprintf(prop, sizeof(prop), "%sname", prefix);
@@ -267,6 +267,9 @@ static int asoc_simple_card_get_dai_id(struct device_node *ep)
                        id = i;
                i++;
        }
                        id = i;
                i++;
        }
+
+       of_node_put(node);
+
        if (id < 0)
                return -ENODEV;
 
        if (id < 0)
                return -ENODEV;
 
@@ -286,11 +289,6 @@ int asoc_simple_card_parse_graph_dai(struct device_node *ep,
        if (!dai_name)
                return 0;
 
        if (!dai_name)
                return 0;
 
-       /*
-        * of_graph_get_port_parent() will call
-        * of_node_put(). So, call of_node_get() here
-        */
-       of_node_get(ep);
        node = of_graph_get_port_parent(ep);
 
        /* Get dai->name */
        node = of_graph_get_port_parent(ep);
 
        /* Get dai->name */