arm: highbank: Do DRAM init from DT

So far U-Boot was hard coding a (surely sufficient) memory size of 512
MB, even though all machines out there have at least 4GB of DRAM.
Since U-Boot uses its memory knowledge to populate the EFI memory map,
we are missing out here, at best losing everything beyond 4GB on Midway
boxes (which typically come with 8GB of DRAM).

Since the management processor populated the DT memory node already with
the detected DRAM size and configuration, we use that to populate
U-Boot's memory bank information, which is the base for the UEFI memory
map.
This finally allows us to get rid of the NR_DRAM_BANKS=0 hack, that we
had in place to avoid U-Boot messing up the DT memory node before
loading the kernel.

Also, to cover the whole of memory, we need to enable PHYS_64BIT.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
This commit is contained in:
Andre Przywara 2021-04-12 01:04:54 +01:00 committed by Tom Rini
parent ff47d539f2
commit 1238d0143a
3 changed files with 9 additions and 3 deletions

View File

@ -720,6 +720,7 @@ config ARCH_HIGHBANK
select CLK_CCF
select AHCI
select DM_ETH
select PHYS_64BIT
config ARCH_INTEGRATOR
bool "ARM Ltd. Integrator family"

View File

@ -8,6 +8,7 @@
#include <cpu_func.h>
#include <env.h>
#include <fdt_support.h>
#include <fdtdec.h>
#include <init.h>
#include <net.h>
#include <scsi.h>
@ -84,8 +85,12 @@ int misc_init_r(void)
int dram_init(void)
{
gd->ram_size = SZ_512M;
return 0;
return fdtdec_setup_mem_size_base();
}
int dram_init_banksize(void)
{
return fdtdec_setup_memory_banksize();
}
#if defined(CONFIG_OF_BOARD_SETUP)

View File

@ -3,7 +3,7 @@ CONFIG_SYS_DCACHE_OFF=y
CONFIG_SYS_THUMB_BUILD=y
CONFIG_ARCH_HIGHBANK=y
CONFIG_SYS_TEXT_BASE=0x00008000
CONFIG_NR_DRAM_BANKS=0
CONFIG_NR_DRAM_BANKS=2
CONFIG_ENV_SIZE=0x2000
CONFIG_SYS_BOOTCOUNT_ADDR=0xfff3cf0c
CONFIG_SYS_BOOTCOUNT_SINGLEWORD=y