mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
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>
This commit is contained in:
parent
805ac6aacf
commit
67e610d9f0
1 changed files with 24 additions and 0 deletions
|
@ -440,6 +440,30 @@ int fdt_first_property_offset(const void *fdt, int nodeoffset);
|
|||
*/
|
||||
int fdt_next_property_offset(const void *fdt, int offset);
|
||||
|
||||
/**
|
||||
* fdt_for_each_property - iterate over all properties of a node
|
||||
* @property_offset: property offset (int)
|
||||
* @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(fdt, node, property) {
|
||||
* ...
|
||||
* use property
|
||||
* ...
|
||||
* }
|
||||
*
|
||||
* Note that this is implemented as a macro and property is used as
|
||||
* iterator in the loop. It should therefore be a locally allocated
|
||||
* variable. The node variable on the other hand is never modified, so
|
||||
* it 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
|
||||
|
|
Loading…
Reference in a new issue