u-boot-brain/arch
Andre Przywara 5776610e9e sunxi: store DRAM size in SPL header
At the moment we rely on the infamous get_ram_size() function to learn
the actual DRAM size in U-Boot proper. This function has two issues:
1) It only works if the DRAM size is a power of two. We start to see
boards which have 3GB of (usable) DRAM, so this does not fit anymore.
2) As U-Boot has no notion of reserved memory so far, it will happily
ride through the DRAM, possibly stepping on secure-only memory. This
could be a region of DRAM reserved for OP-TEE or some other secure
payload, for instance. It will most likely crash in that case.

As the SPL DRAM init routine has very accurate knowledge of the actual
DRAM size, lets propagate this wisdom to U-Boot proper.
We re-purpose a currently reserved word in our SPL header for that.
The SPL itself stores the detected DRAM size there, and bumps the SPL
header version number in that case. U-Boot proper checks for a valid
SPL header and a high enough version number, then uses the DRAM size
from there. If the SPL header field is not sufficient, we fall back to
the old DRAM scanning routine.

Part of the DRAM might be present and probed by SPL, but not accessible
by the CPU. They're restricted in the main U-Boot binary, when accessing
the DRAM size from SPL header.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Reviewed-by: Jagan Teki <jagan@openedev.com>
2018-10-29 20:41:15 +05:30
..
arc ARC: Don't use COMMON section for global not-initialized variables 2018-10-15 13:35:17 +03:00
arm sunxi: store DRAM size in SPL header 2018-10-29 20:41:15 +05:30
m68k m68k: ColdFire mcf5441x, add eSDHC support 2018-09-16 00:01:13 +02:00
microblaze arch: types.h: factor out fixed width typedefs to int-ll64.h 2018-09-10 20:48:16 -04:00
mips mips: use asm-generic/atomic.h 2018-09-25 21:49:18 -04:00
nds32 config.mk: Remove duplicated -fno-strict-aliasing 2018-09-25 21:50:34 -04:00
nios2 .gitignore: move *.dtb and *.dtb.S patterns to the top-level .gitignore 2018-06-18 14:43:12 -04:00
powerpc powerpc: dts: Enable device tree support for T2080QDS 2018-09-27 10:14:14 -07:00
riscv riscv: allow native compilation 2018-10-03 17:49:44 +08:00
sandbox test: Add PCI device entry without compat string and with DT node 2018-10-20 15:23:38 -04:00
sh sh: tmu: Zap get_tbclk and timer_read_counter 2018-09-15 03:19:07 +02:00
x86 x86: quark: Specify X86_TSC_TIMER_EARLY_FREQ 2018-10-22 17:51:45 +08:00
xtensa xtensa: use asm-generic/atomic.h 2018-09-25 21:49:18 -04:00
.gitignore
Kconfig Kconfig: sandbox: enable cmd_avb and dependencies 2018-10-07 13:34:19 -04:00