arm64: mvebu: a8k: autodetect RAM size
authorBaruch Siach <baruch@tkos.co.il>
Sun, 11 Nov 2018 10:31:04 +0000 (12:31 +0200)
committerStefan Roese <sr@denx.de>
Tue, 20 Nov 2018 12:08:15 +0000 (13:08 +0100)
commit2b4d964718c0e78a24f3a5e051e7dd9bc0e547c2
tree802fdd9b47d09b30c9fa8097fa282aea6b7825a7
parentb335e91bd1e92c685c4133671119fa37c4ab43cb
arm64: mvebu: a8k: autodetect RAM size

Some Armada 8K boards like Macchiatobin and Clearfog GT-8K use RAM from
external DIMM. Hard coding the RAM size in the device-tree is not
convenient. Fortunately, the ATF that initializes the RAM knows the size
of RAM, and U-Boot can query the ATF using a SMC call.

The ATF maps the lower 3G of RAM starting at address 0. Higher RAM is
mapped at 4G. This leaves a 1G hole between 3G and 4G for IO
peripherals. Use a second bi_dram[] entry to describe the higher RAM
area. As a result, CONFIG_NR_DRAM_BANKS must be set to 2 to use more
than 3GB RAM.

This code in this commit is mostly taken from downstream Marvell U-Boot
code by Grzegorz Jaszczyk.

Cc: Grzegorz Jaszczyk <jaz@semihalf.com>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Stefan Roese <sr@denx.de>
arch/arm/mach-mvebu/arm64-common.c