]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
dm: core: add ofnode_for_each_compatible_node()
authorMichael Walle <michael@walle.cc>
Fri, 15 Oct 2021 13:15:17 +0000 (15:15 +0200)
committerPriyanka Jain <priyanka.jain@nxp.com>
Tue, 9 Nov 2021 11:48:23 +0000 (17:18 +0530)
Add a helper to iterate over all nodes with a given compatible string.

Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
include/dm/ofnode.h

index 6a714d0c7b503af20dbb0391fd901c917697856e..0f680e5aa628442a05a152adf5afcc4d1ce044cc 100644 (file)
@@ -1009,6 +1009,30 @@ ofnode ofnode_by_prop_value(ofnode from, const char *propname,
             ofnode_valid(node); \
             node = ofnode_next_subnode(node))
 
+/**
+ * ofnode_for_each_compatible_node() - iterate over all nodes with a given
+ *                                    compatible string
+ *
+ * @node:       child node (ofnode, lvalue)
+ * @compat:     compatible string to match
+ *
+ * This is a wrapper around a for loop and is used like so:
+ *
+ *     ofnode node;
+ *
+ *     ofnode_for_each_compatible_node(node, parent, compatible) {
+ *             Use node
+ *             ...
+ *     }
+ *
+ * Note that this is implemented as a macro and @node is used as
+ * iterator in the loop.
+ */
+#define ofnode_for_each_compatible_node(node, compat) \
+       for (node = ofnode_by_compatible(ofnode_null(), compat); \
+            ofnode_valid(node); \
+            node = ofnode_by_compatible(node, compat))
+
 /**
  * ofnode_get_child_count() - get the child count of a ofnode
  *