mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
dm: core: ofnode: Avoid multiple calls to ofnode_get_parent()
Until a live tree is used in U-Boot proper after relocation, use of ofnode_get_parent() will trigger a call to the very expensive fdt_parent_offset() as detailed by the function documentation: NOTE: This function is expensive, as it must scan the device tree structure from the start to nodeoffset, *twice*. Re-use the returned value from a single call instead of having to make multiple calls for same node. Signed-off-by: Jonas Karlman <jonas@kwiboo.se> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -762,8 +762,9 @@ static fdt_addr_t __ofnode_get_addr_size_index(ofnode node, int index,
|
||||
return of_read_number(prop_val, na);
|
||||
}
|
||||
} else {
|
||||
na = ofnode_read_simple_addr_cells(ofnode_get_parent(node));
|
||||
ns = ofnode_read_simple_size_cells(ofnode_get_parent(node));
|
||||
ofnode parent = ofnode_get_parent(node);
|
||||
na = ofnode_read_simple_addr_cells(parent);
|
||||
ns = ofnode_read_simple_size_cells(parent);
|
||||
return fdtdec_get_addr_size_fixed(ofnode_to_fdt(node),
|
||||
ofnode_to_offset(node), "reg",
|
||||
index, na, ns, size,
|
||||
|
||||
Reference in New Issue
Block a user