@@ -1237,7 +1237,7 @@ static int rsnd_dai_of_node(struct rsnd_priv *priv, int *is_graph)
{
struct device *dev = rsnd_priv_to_dev(priv);
struct device_node *np = dev->of_node;
- struct device_node *ports, *node;
+ struct device_node *node;
int nr = 0;
int i = 0;
@@ -1277,16 +1277,12 @@ static int rsnd_dai_of_node(struct rsnd_priv *priv, int *is_graph)
/*
* Audio-Graph-Card
*/
- for_each_child_of_node(np, ports) {
- if (!of_node_name_eq(ports, "ports") &&
- !of_node_name_eq(ports, "port"))
- continue;
- priv->component_dais[i] = of_graph_get_endpoint_count(ports);
+ for_each_of_graph_ports(np, ports) {
+ priv->component_dais[i] = of_graph_get_port_count(ports);
nr += priv->component_dais[i];
i++;
if (i >= RSND_MAX_COMPONENT) {
dev_info(dev, "reach to max component\n");
- of_node_put(ports);
break;
}
}
@@ -1486,14 +1482,10 @@ static int rsnd_dai_probe(struct rsnd_priv *priv)
*/
dai_i = 0;
if (is_graph) {
- struct device_node *ports;
- struct device_node *dai_np;
+ for_each_of_graph_ports(np, ports) {
+ for_each_of_graph_port(ports, port) {
+ struct device_node *dai_np = of_graph_get_next_port_endpoint(port, NULL);
- for_each_child_of_node(np, ports) {
- if (!of_node_name_eq(ports, "ports") &&
- !of_node_name_eq(ports, "port"))
- continue;
- for_each_endpoint_of_node(ports, dai_np) {
__rsnd_dai_probe(priv, dai_np, dai_np, 0, dai_i);
if (!rsnd_is_gen1(priv) && !rsnd_is_gen2(priv)) {
rdai = rsnd_rdai_get(priv, dai_i);
@@ -1502,6 +1494,7 @@ static int rsnd_dai_probe(struct rsnd_priv *priv)
rsnd_parse_connect_graph(priv, &rdai->capture, dai_np);
}
dai_i++;
+ of_node_put(dai_np);
}
}
} else {