Skip to content
  • Quentin Schulz's avatar
    rockchip: sdram: Support getting banks from TPL for rk3568 and rk3588 · faa05d48
    Quentin Schulz authored and Kever Yang's avatar Kever Yang committed
    
    
    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: default avatarChris Morgan <macromorgan@hotmail.com>
    Signed-off-by: default avatarChris Morgan <macromorgan@hotmail.com>
    Signed-off-by: default avatarQuentin Schulz <quentin.schulz@theobroma-systems.com>
    Reviewed-by: Kever Yang's avatarKever Yang <kever.yang@rock-chips.com>
    faa05d48