of: Introduce of_for_each_phandle() helper macro
With this macro any user can easily iterate over a list of phandles. The patch also converts __of_parse_phandle_with_args() to make use of the macro. The of_count_phandle_with_args() function is not converted, because the macro hides the return value of of_phandle_iterator_init(), which is needed in there. Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
parent
2021bd01ff
commit
f623ce95a5
@ -1543,13 +1543,8 @@ static int __of_parse_phandle_with_args(const struct device_node *np,
|
|||||||
struct of_phandle_iterator it;
|
struct of_phandle_iterator it;
|
||||||
int rc, cur_index = 0;
|
int rc, cur_index = 0;
|
||||||
|
|
||||||
rc = of_phandle_iterator_init(&it, np, list_name,
|
|
||||||
cells_name, cell_count);
|
|
||||||
if (rc)
|
|
||||||
return rc;
|
|
||||||
|
|
||||||
/* Loop over the phandles until all the requested entry is found */
|
/* Loop over the phandles until all the requested entry is found */
|
||||||
while ((rc = of_phandle_iterator_next(&it)) == 0) {
|
of_for_each_phandle(&it, rc, np, list_name, cells_name, cell_count) {
|
||||||
/*
|
/*
|
||||||
* All of the error cases bail out of the loop, so at
|
* All of the error cases bail out of the loop, so at
|
||||||
* this point, the parsing is successful. If the requested
|
* this point, the parsing is successful. If the requested
|
||||||
|
@ -908,6 +908,12 @@ static inline int of_property_read_s32(const struct device_node *np,
|
|||||||
return of_property_read_u32(np, propname, (u32*) out_value);
|
return of_property_read_u32(np, propname, (u32*) out_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define of_for_each_phandle(it, err, np, ln, cn, cc) \
|
||||||
|
for (of_phandle_iterator_init((it), (np), (ln), (cn), (cc)), \
|
||||||
|
err = of_phandle_iterator_next(it); \
|
||||||
|
err == 0; \
|
||||||
|
err = of_phandle_iterator_next(it))
|
||||||
|
|
||||||
#define of_property_for_each_u32(np, propname, prop, p, u) \
|
#define of_property_for_each_u32(np, propname, prop, p, u) \
|
||||||
for (prop = of_find_property(np, propname, NULL), \
|
for (prop = of_find_property(np, propname, NULL), \
|
||||||
p = of_prop_next_u32(prop, NULL, &u); \
|
p = of_prop_next_u32(prop, NULL, &u); \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user