summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMario Six <mario.six@gdsys.cc>2017-12-20 09:52:12 +0100
committerSimon Glass <sjg@chromium.org>2018-01-21 10:01:02 -0700
commit286ede6515bdde4550c247f0d08ed28c5dbf8db2 (patch)
tree71cfa21729ed31a28cdc233f2a0f337347f9086d
parentfa9335a89c61837414e3db27bb85c3c459803ff0 (diff)
drivers: core: Add translation in live tree case
The function dev_read_addr calls ofnode_get_addr_index in the live tree case, which does not apply bus translations to the address read from the device tree. This results in illegal addresses on boards that rely on bus translations being applied. Fix this situation by applying bus translations in the live tree case as well. Signed-off-by: Mario Six <mario.six@gdsys.cc> Tested-by: Stephen Warren <swarren@nvidia.com>
-rw-r--r--drivers/core/ofnode.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index 0030ab962e..2dbf3a7cd7 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -205,8 +205,13 @@ fdt_addr_t ofnode_get_addr_index(ofnode node, int index)
&flags);
if (!prop_val)
return FDT_ADDR_T_NONE;
- na = of_n_addr_cells(ofnode_to_np(node));
- return of_read_number(prop_val, na);
+
+ if (IS_ENABLED(CONFIG_OF_TRANSLATE)) {
+ return of_translate_address(ofnode_to_np(node), prop_val);
+ } else {
+ na = of_n_addr_cells(ofnode_to_np(node));
+ return of_read_number(prop_val, na);
+ }
} else {
return fdt_get_base_address(gd->fdt_blob,
ofnode_to_offset(node));