Skip to content
  • Simon Glass's avatar
    libfdt: Add fdt_next_subnode() to permit easy subnode iteration · 88f95bba
    Simon Glass authored
    
    
    Iterating through subnodes with libfdt is a little painful to write as we
    need something like this:
    
    for (depth = 0, count = 0,
    	offset = fdt_next_node(fdt, parent_offset, &depth);
         (offset >= 0) && (depth > 0);
         offset = fdt_next_node(fdt, offset, &depth)) {
    	if (depth == 1) {
    		/* code body */
    	}
    }
    
    Using fdt_next_subnode() we can instead write this, which is shorter and
    easier to get right:
    
    for (offset = fdt_first_subnode(fdt, parent_offset);
         offset >= 0;
         offset = fdt_next_subnode(fdt, offset)) {
    	/* code body */
    }
    
    Also, it doesn't require two levels of indentation for the loop body.
    
    Signed-off-by: default avatarSimon Glass <sjg@chromium.org>
    (Cherry-picked from dtc commit 4e76ec79)
    Acked-by: default avatarGerald Van Baren <vanbaren@cideas.com>
    88f95bba