libfdt: Add a subnodes iterator macro

The fdt_for_each_subnode() iterator macro provided by this patch can be
used to iterate over a device tree node's subnodes. At each iteration a
loop variable will be set to the next subnode.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
Thierry Reding 2016-07-27 14:55:53 +02:00 committed by David Gibson
parent c539075ba8
commit 902d0f0953
2 changed files with 30 additions and 6 deletions

View file

@ -48,9 +48,7 @@ static void test_node(void *fdt, int parent_offset)
subnodes = cpu_to_fdt32(*prop);
count = 0;
for (offset = fdt_first_subnode(fdt, parent_offset);
offset >= 0;
offset = fdt_next_subnode(fdt, offset))
fdt_for_each_subnode(offset, fdt, parent_offset)
count++;
if (count != subnodes) {
@ -65,9 +63,7 @@ static void check_fdt_next_subnode(void *fdt)
int offset;
int count = 0;
for (offset = fdt_first_subnode(fdt, 0);
offset >= 0;
offset = fdt_next_subnode(fdt, offset)) {
fdt_for_each_subnode(offset, fdt, 0) {
test_node(fdt, offset);
count++;
}