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);
|
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_get_property_by_offset - retrieve the property at a given offset
|
||||||
* @fdt: pointer to the device tree blob
|
* @fdt: pointer to the device tree blob
|
||||||
|
|||||||
Reference in New Issue
Block a user