[U-Boot] [PATCH] drivers: core: Add translation in live tree case
Simon Glass
sjg at chromium.org
Sun Oct 22 14:33:37 UTC 2017
Hi Mario,
On 13 October 2017 at 13:21, Mario Six <mario.six at gdsys.cc> wrote:
> 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 at gdsys.cc>
> ---
> drivers/core/ofnode.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
> index 9123e88425..d7d8f039b9 100644
> --- a/drivers/core/ofnode.c
> +++ b/drivers/core/ofnode.c
> @@ -215,13 +215,15 @@ fdt_addr_t ofnode_get_addr_index(ofnode node, int index)
> uint flags;
> u64 size;
> int na;
> + __be32 addr;
>
> prop_val = of_get_address(ofnode_to_np(node), index, &size,
> &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);
> + addr = of_read_number(prop_val, na);
> + return of_translate_address(ofnode_to_np(node), &addr);
Should there not be an if (IS_ENABLED(CONFIG_OF_TRANSLATE)) here?
> } else {
> return fdt_get_base_address(gd->fdt_blob,
> ofnode_to_offset(node));
> --
> 2.11.0
>
Regards,
Simon
More information about the U-Boot
mailing list