dm: core: Pass a root node to of_find_node_by_phandle()
This function currently assumes that the control FDT is used. Update it
to allow a root node to be passed, so it can work with any tree.
Also add a comment to ofnode_get_by_phandle() so that its purpose is
clear.
Signed-off-by: Simon Glass <sjg@chromium.org>
diff --git a/drivers/core/of_access.c b/drivers/core/of_access.c
index df007e6..f7743d4 100644
--- a/drivers/core/of_access.c
+++ b/drivers/core/of_access.c
@@ -445,14 +445,15 @@
return np;
}
-struct device_node *of_find_node_by_phandle(phandle handle)
+struct device_node *of_find_node_by_phandle(struct device_node *root,
+ phandle handle)
{
struct device_node *np;
if (!handle)
return NULL;
- for_each_of_allnodes(np)
+ for_each_of_allnodes_from(root, np)
if (np->phandle == handle)
break;
(void)of_node_get(np);
@@ -697,7 +698,7 @@
* below.
*/
if (cells_name || cur_index == index) {
- node = of_find_node_by_phandle(phandle);
+ node = of_find_node_by_phandle(NULL, phandle);
if (!node) {
debug("%s: could not find phandle\n",
np->full_name);
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index 42f3c09..b241be3 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -391,7 +391,7 @@
ofnode node;
if (of_live_active())
- node = np_to_ofnode(of_find_node_by_phandle(phandle));
+ node = np_to_ofnode(of_find_node_by_phandle(NULL, phandle));
else
node.of_offset = fdt_node_offset_by_phandle(gd->fdt_blob,
phandle);
diff --git a/include/dm/of_access.h b/include/dm/of_access.h
index 83f34f0..d8c6d11 100644
--- a/include/dm/of_access.h
+++ b/include/dm/of_access.h
@@ -258,11 +258,13 @@
/**
* of_find_node_by_phandle() - Find a node given a phandle
*
+ * @root: root node to start from (NULL for default device tree)
* @handle: phandle of the node to find
*
* Return: node pointer, or NULL if not found
*/
-struct device_node *of_find_node_by_phandle(phandle handle);
+struct device_node *of_find_node_by_phandle(struct device_node *root,
+ phandle handle);
/**
* of_read_u8() - Find and read a 8-bit integer from a property
diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h
index f608523..6414b46 100644
--- a/include/dm/ofnode.h
+++ b/include/dm/ofnode.h
@@ -501,6 +501,8 @@
/**
* ofnode_get_by_phandle() - get ofnode from phandle
*
+ * This uses the default (control) device tree
+ *
* @phandle: phandle to look up
* Return: ofnode reference to the phandle
*/