dm: core: Add a way to find an ofnode by compatible string

Add an ofnode_by_compatible() to allow iterating through ofnodes with a
given compatible string.

Signed-off-by: Simon Glass <sjg@chromium.org>
lime2-spi
Simon Glass 6 years ago
parent c98ad4434c
commit c60f671b65
  1. 12
      drivers/core/ofnode.c
  2. 11
      include/dm/ofnode.h

@ -729,3 +729,15 @@ int ofnode_device_is_compatible(ofnode node, const char *compat)
ofnode_to_offset(node),
compat);
}
ofnode ofnode_by_compatible(ofnode from, const char *compat)
{
if (of_live_active()) {
return np_to_ofnode(of_find_compatible_node(
(struct device_node *)ofnode_to_np(from), NULL,
compat));
} else {
return offset_to_ofnode(fdt_node_offset_by_compatible(
gd->fdt_blob, ofnode_to_offset(from), compat));
}
}

@ -679,6 +679,17 @@ int ofnode_read_resource_byname(ofnode node, const char *name,
struct resource *res);
/**
* ofnode_by_compatible() - Find the next compatible node
*
* Find the next node after @from that is compatible with @compat
*
* @from: ofnode to start from (use ofnode_null() to start at the beginning)
* @compat: Compatible string to match
* @return ofnode found, or ofnode_null() if none
*/
ofnode ofnode_by_compatible(ofnode from, const char *compat);
/**
* ofnode_for_each_subnode() - iterate over all subnodes of a parent
*
* @node: child node (ofnode, lvalue)

Loading…
Cancel
Save