[U-Boot] [PATCH] common: bootm: reserve memory bank
Jason Zhu
jason.zhu at rock-chips.com
Thu Jun 14 07:07:25 UTC 2018
Actually the DRAM is not only seperated in one
bank. The DRAM bank information is stored in
gd->bd->bi_dram, so reserve lmb according to
gd->bd->bi_dram.
Signed-off-by: Jason Zhu <jason.zhu at rock-chips.com>
---
common/bootm.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/common/bootm.c b/common/bootm.c
index e789f68..46689fa 100644
--- a/common/bootm.c
+++ b/common/bootm.c
@@ -53,16 +53,23 @@ __weak void board_quiesce_devices(void)
#ifdef CONFIG_LMB
static void boot_start_lmb(bootm_headers_t *images)
{
+ lmb_init(&images->lmb);
+#ifdef CONFIG_NR_DRAM_BANKS
+ int i;
+
+ for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
+ lmb_add(&images->lmb, gd->bd->bi_dram[i].start,
+ gd->bd->bi_dram[i].size);
+ }
+#else
ulong mem_start;
phys_size_t mem_size;
- lmb_init(&images->lmb);
-
mem_start = env_get_bootm_low();
mem_size = env_get_bootm_size();
lmb_add(&images->lmb, (phys_addr_t)mem_start, mem_size);
-
+#endif
arch_lmb_reserve(&images->lmb);
board_lmb_reserve(&images->lmb);
}
--
2.7.4
More information about the U-Boot
mailing list