ARM: uniphier: do not use RAM that exceeds 32 bit address range
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Sat, 6 Jan 2018 13:59:24 +0000 (22:59 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Tue, 9 Jan 2018 12:58:17 +0000 (21:58 +0900)
commitbe893a5c09dca715df2dadafcae1365ed3826a39
tree583c381beebc2322f7123f0939c485213f5542d1
parentf3dd87e0b98999a78e500e8c6d2b063ebadf535a
ARM: uniphier: do not use RAM that exceeds 32 bit address range

LD20 / PXs3 boards are equipped with a large amount of memory beyond
the 32 bit address range.  U-Boot relocates itself to the end of the
available RAM.

This is a problem for DMA engines that only support 32 bit physical
address, like the SDMA of SDHCI controllers.

In fact, U-Boot does not need to run at the very end of RAM.  It is
rather troublesome for drivers with DMA engines because U-Boot does
not have API like dma_set_mask(), so DMA silently fails, making the
driver debugging difficult.

Hide the memory region that exceeds the 32 bit address range.  It can
be done by simply carving out gd->ram_size.  It would also possible to
override get_effective_memsize() or to define CONFIG_MAX_MEM_MAPPED,
but dram_init() is a good enough place to do this job.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
arch/arm/mach-uniphier/dram_init.c