]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
ARM: uniphier: Move uniphier_mem_map_init() call into dram_init()
authorKunihiko Hayashi <hayashi.kunihiko@socionext.com>
Fri, 5 Apr 2024 08:37:15 +0000 (17:37 +0900)
committerTom Rini <trini@konsulko.com>
Fri, 12 Apr 2024 14:53:31 +0000 (08:53 -0600)
The function uniphier_mem_map_init() is to change global variable
'mem_map', which is referenced to get_page_table_size() to calculate
the size of page table.

However, uniphier_mem_map_init() is called after get_page_table_size(),
so the size of page table and 'mem_map' become inconsist each other.
After all, U-Boot fails to boot on chip with memory map different from
default map,

uniphier_mem_map_init() should be moved to dram_init(), which is
called before get_page_table_size().

Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
arch/arm/mach-uniphier/dram_init.c

index 7f2753190c233372e21c9f9da81ee9fc1b6a6453..e6f1286e71fdf071b5cbd16fcf3a87bc389545b7 100644 (file)
@@ -265,14 +265,15 @@ int dram_init(void)
        if (uniphier_get_soc_id() == UNIPHIER_LD20_ID)
                gd->ram_size -= 64;
 
+       /* map all the DRAM regions */
+       uniphier_mem_map_init(gd->ram_base, prev_top - gd->ram_base);
+
        return 0;
 }
 
 int dram_init_banksize(void)
 {
        struct uniphier_dram_map dram_map[3] = {};
-       unsigned long base, top;
-       bool valid_bank_found = false;
        int ret, i;
 
        ret = uniphier_dram_map_get(dram_map);
@@ -287,18 +288,7 @@ int dram_init_banksize(void)
 
                if (!dram_map[i].size)
                        continue;
-
-               if (!valid_bank_found)
-                       base = dram_map[i].base;
-               top = dram_map[i].base + dram_map[i].size;
-               valid_bank_found = true;
        }
 
-       if (!valid_bank_found)
-               return -EINVAL;
-
-       /* map all the DRAM regions */
-       uniphier_mem_map_init(base, top - base);
-
        return 0;
 }