samsung:board: init dram info based on memory node in fdt
authorPrzemyslaw Marczak <p.marczak@samsung.com>
Mon, 28 Jul 2014 15:43:23 +0000 (17:43 +0200)
committerJaehoon Chung <jh80.chung@samsung.com>
Tue, 20 Oct 2020 00:43:31 +0000 (09:43 +0900)
Change-Id: I3677f0ab0b4aed264de8af37e87b081f66a36b97
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
board/samsung/common/board.c
include/asm-generic/global_data.h

index 752d84e..c5aa084 100644 (file)
@@ -99,7 +99,7 @@ static void boot_temp_check(void)
 
 int board_init(void)
 {
-       gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
+       gd->bd->bi_boot_params = (CONFIG_SYS_SDRAM_BASE + 0x100UL);
 #if defined CONFIG_EXYNOS_TMU
        if (tmu_init(gd->fdt_blob) != TMU_STATUS_NORMAL) {
                debug("%s: Failed to init TMU\n", __func__);
@@ -120,18 +120,44 @@ int board_init(void)
 int dram_init(void)
 {
        unsigned int i;
+#ifdef CONFIG_FDTDEC_MEMORY
+       int dram_banks;
+
+       uint64_t mem_size[CONFIG_NR_DRAM_BANKS];
+
+       dram_banks = fdtdec_decode_memory(gd->fdt_blob, NULL, mem_size,
+                                         CONFIG_NR_DRAM_BANKS);
+
+       for (i = 0; i < dram_banks; i++)
+               gd->ram_size += (uint32_t)mem_size[i];
+#else
        unsigned long addr;
 
        for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
                addr = CONFIG_SYS_SDRAM_BASE + (i * SDRAM_BANK_SIZE);
                gd->ram_size += get_ram_size((long *)addr, SDRAM_BANK_SIZE);
        }
+#endif
        return 0;
 }
 
 int dram_init_banksize(void)
 {
        unsigned int i;
+#ifdef CONFIG_FDTDEC_MEMORY
+       int dram_banks;
+
+       uint64_t mem_addr[CONFIG_NR_DRAM_BANKS];
+       uint64_t mem_size[CONFIG_NR_DRAM_BANKS];
+
+       dram_banks = fdtdec_decode_memory(gd->fdt_blob, mem_addr, mem_size,
+                                         CONFIG_NR_DRAM_BANKS);
+
+       for (i = 0; i < dram_banks; i++) {
+               gd->bd->bi_dram[i].start = (uint32_t)mem_addr[i];
+               gd->bd->bi_dram[i].size = (uint32_t)mem_size[i];
+       }
+#else
        unsigned long addr, size;
 
        for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
@@ -141,7 +167,7 @@ int dram_init_banksize(void)
                gd->bd->bi_dram[i].start = addr;
                gd->bd->bi_dram[i].size = size;
        }
-
+#endif
        return 0;
 }
 
index d4a4e22..7b7c063 100644 (file)
@@ -137,6 +137,9 @@ typedef struct global_data {
 #if CONFIG_IS_ENABLED(WDT)
        struct udevice *watchdog_dev;
 #endif
+#ifdef CONFIG_OF_MULTI
+       void *priv;
+#endif
 } gd_t;
 #endif