forked from Imagelibrary/rtems
libfdt: Add iterator over properties
Implement a macro based on fdt_first_property_offset and fdt_next_property_offset that provides a convenience to iterate over all the properties of a given node. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Acked-by: Simon Glass <sjg@chromium.org> [dwg: Removed a stray trailing blank line] Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
committed by
Sebastian Huber
parent
da8eff9943
commit
eda76d492d
@@ -458,6 +458,33 @@ int fdt_first_property_offset(const void *fdt, int nodeoffset);
|
||||
*/
|
||||
int fdt_next_property_offset(const void *fdt, int offset);
|
||||
|
||||
/**
|
||||
* fdt_for_each_property_offset - iterate over all properties of a node
|
||||
*
|
||||
* @property_offset: property offset (int, lvalue)
|
||||
* @fdt: FDT blob (const void *)
|
||||
* @node: node offset (int)
|
||||
*
|
||||
* This is actually a wrapper around a for loop and would be used like so:
|
||||
*
|
||||
* fdt_for_each_property_offset(property, fdt, node) {
|
||||
* Use property
|
||||
* ...
|
||||
* }
|
||||
*
|
||||
* if ((property < 0) && (property != -FDT_ERR_NOT_FOUND)) {
|
||||
* Error handling
|
||||
* }
|
||||
*
|
||||
* Note that this is implemented as a macro and property is used as
|
||||
* iterator in the loop. The node variable can be constant or even a
|
||||
* literal.
|
||||
*/
|
||||
#define fdt_for_each_property_offset(property, fdt, node) \
|
||||
for (property = fdt_first_property_offset(fdt, node); \
|
||||
property >= 0; \
|
||||
property = fdt_next_property_offset(fdt, property))
|
||||
|
||||
/**
|
||||
* fdt_get_property_by_offset - retrieve the property at a given offset
|
||||
* @fdt: pointer to the device tree blob
|
||||
|
||||
Reference in New Issue
Block a user