diff options
Diffstat (limited to 'drivers/of/base.c')
-rw-r--r-- | drivers/of/base.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c index 7792266db259..3ce69536a7b3 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c | |||
@@ -1631,8 +1631,7 @@ static int __of_parse_phandle_with_args(const struct device_node *np, | |||
1631 | */ | 1631 | */ |
1632 | 1632 | ||
1633 | err: | 1633 | err: |
1634 | if (it.node) | 1634 | of_node_put(it.node); |
1635 | of_node_put(it.node); | ||
1636 | return rc; | 1635 | return rc; |
1637 | } | 1636 | } |
1638 | 1637 | ||
@@ -2343,20 +2342,13 @@ struct device_node *of_graph_get_endpoint_by_regs( | |||
2343 | const struct device_node *parent, int port_reg, int reg) | 2342 | const struct device_node *parent, int port_reg, int reg) |
2344 | { | 2343 | { |
2345 | struct of_endpoint endpoint; | 2344 | struct of_endpoint endpoint; |
2346 | struct device_node *node, *prev_node = NULL; | 2345 | struct device_node *node = NULL; |
2347 | |||
2348 | while (1) { | ||
2349 | node = of_graph_get_next_endpoint(parent, prev_node); | ||
2350 | of_node_put(prev_node); | ||
2351 | if (!node) | ||
2352 | break; | ||
2353 | 2346 | ||
2347 | for_each_endpoint_of_node(parent, node) { | ||
2354 | of_graph_parse_endpoint(node, &endpoint); | 2348 | of_graph_parse_endpoint(node, &endpoint); |
2355 | if (((port_reg == -1) || (endpoint.port == port_reg)) && | 2349 | if (((port_reg == -1) || (endpoint.port == port_reg)) && |
2356 | ((reg == -1) || (endpoint.id == reg))) | 2350 | ((reg == -1) || (endpoint.id == reg))) |
2357 | return node; | 2351 | return node; |
2358 | |||
2359 | prev_node = node; | ||
2360 | } | 2352 | } |
2361 | 2353 | ||
2362 | return NULL; | 2354 | return NULL; |