When run meminfo command, it's displayed wrong memory information. Because some boards are that gd->ram_size is reassigned to other value in board file. Additionally, display a memory bank information.
On 4G RPI4 target - Before U-Boot> meminfo DRAM: 948MiB - After U-Boot> meminfo Bank #0: 0 948 MiB Bank #1: 40000000 2.9 GiB Bank #2: 0 0 Bytes Bank #3: 0 0 Bytes DRAM: 3.9GiB Signed-off-by: Jaehoon Chung <jh80.ch...@samsung.com> --- Changes in v2: - Change patch subject prefix from "common: board_f" to "cmd: mem" - Update commit-msg - Revert common/board_f.c modification. Instead, add codes in mem.c --- cmd/mem.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/cmd/mem.c b/cmd/mem.c index 1d4f2bab2f9a..86f48a6e121a 100644 --- a/cmd/mem.c +++ b/cmd/mem.c @@ -1387,8 +1387,22 @@ U_BOOT_CMD( static int do_mem_info(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { + unsigned long long size; + +#ifdef CONFIG_NR_DRAM_BANKS + int i; + + for (i = size = 0; i < CONFIG_NR_DRAM_BANKS; i++) { + size += gd->bd->bi_dram[i].size; + printf("Bank #%d: %llx ", i, + (unsigned long long)(gd->bd->bi_dram[i].start)); + print_size(gd->bd->bi_dram[i].size, "\n"); + } +#else + size = gd->ram_size; +#endif puts("DRAM: "); - print_size(gd->ram_size, "\n"); + print_size(size, "\n"); return 0; } -- 2.29.0