qemu-ppce500: Update get_phys_ccsrbar_addr_early()
authorTom Rini <trini@konsulko.com>
Thu, 3 Aug 2017 12:53:36 +0000 (08:53 -0400)
committerTom Rini <trini@konsulko.com>
Thu, 3 Aug 2017 18:48:52 +0000 (14:48 -0400)
The logic of what fdt_get_base_address() will search for and return has
changed.  Rework get_phys_ccsrbar_addr_early() to perform the logic that
fdt_get_base_address used to perform.

Fixes: 336a44877af8 ("fdt: Correct fdt_get_base_address()")
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Alexander Graf <agraf@suse.de>
Signed-off-by: Tom Rini <trini@konsulko.com>
board/freescale/qemu-ppce500/qemu-ppce500.c

index 6cb5692eda6e9a368a4d7a2882887971edb5aed3..0c65ec72d209602314380208143701514d851424 100644 (file)
@@ -50,13 +50,19 @@ uint64_t get_phys_ccsrbar_addr_early(void)
 {
        void *fdt = get_fdt_virt();
        uint64_t r;
+       int size, node;
+       u32 naddr;
+       const fdt32_t *prop;
 
        /*
         * To be able to read the FDT we need to create a temporary TLB
         * map for it.
         */
        map_fdt_as(10);
-       r = fdt_get_base_address(fdt, fdt_path_offset(fdt, "/soc"));
+       node = fdt_path_offset(fdt, "/soc");
+       naddr = fdt_address_cells(fdt, node);
+       prop = fdt_getprop(fdt, node, "ranges", &size);
+       r = fdt_translate_address(fdt, node, prop + naddr);
        disable_tlb(10);
 
        return r;