]> git.dujemihanovic.xyz Git - u-boot.git/commit
rockchip: sdram: Support getting banks from TPL for rk3568 and rk3588
authorQuentin Schulz <quentin.schulz@theobroma-systems.com>
Thu, 25 Apr 2024 10:46:24 +0000 (12:46 +0200)
committerKever Yang <kever.yang@rock-chips.com>
Fri, 26 Apr 2024 07:47:05 +0000 (15:47 +0800)
commitfaa05d486761eee123b6c8ed95e458db8f07dac1
tree644e43b06a647cb0ce907d6008480b3b8cc86411
parentfb891eeeb7bc1b4d5ebed8cabb9d88302743e0bb
rockchip: sdram: Support getting banks from TPL for rk3568 and rk3588

Allow RK3568 and RK3588 based boards to get the RAM bank configuration
from the ROCKCHIP_TPL stage instead of the current logic. This fixes
both an issue where 256MB of RAM is blocked for devices with >= 4GB
of RAM and where memory holes need to be defined for devices with
more than 16GB of RAM. In the event that neither SoC is used or the
ROCKCHIP_TPL stage is not used, fall back to existing logic.

The logic handles creating memory holes from reserved memory areas
defined in mem_map data struct in SoC C files, but only if the DRAM area
overlaps with one reserved memory area.

Since mem_map data struct is used, it should be rather straightforward
to add support for other SoCs if needed.

The logic is taken from Rockchip's U-Boot tag linux-5.10-gen-rkr4.1
(e08e32143dd).

Note that Rockchip's U-Boot/TF-A/OP-TEE modify the ATAGS at runtime as
well, but the DDR_MEM tag seems to be pretty much stable (though BL31
seems to be reserving only 1MB for itself at the moment).

u32 for ATAGS is used because it simplifies the pointer arithmetic and
it's expected that ATAGS are always below the 4GB limit allowed by u32.

Co-developed-by: Chris Morgan <macromorgan@hotmail.com>
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
arch/arm/mach-rockchip/sdram.c