summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYao Zi <ziyao@disroot.org>2025-07-10 03:41:58 +0000
committerLeo Yu-Chi Liang <ycliang@andestech.com>2025-07-17 14:37:40 +0800
commit12b90ea3c2943f807b1a54d578c71839ab475be5 (patch)
treead740c061b90bb93e9d86f7ed5bbf9f5c1327aa2
parent00a3b0eb8e4c6ee96e27759a16cb1f159021f68b (diff)
riscv: cpu: th1520: Limit upper RAM boundary to 4 GiB
TH1520 SoC ships DMA peripherals that could only reach the first 32-bit range of memory, for example, the GMAC controllers. Let's limit the usable top of RAM below 4GiB to ensure DMA allocations are accessible to all peripherals. Signed-off-by: Yao Zi <ziyao@disroot.org> Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
-rw-r--r--arch/riscv/cpu/th1520/dram.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/riscv/cpu/th1520/dram.c b/arch/riscv/cpu/th1520/dram.c
index 91007c0a3d3..8a0ca26785e 100644
--- a/arch/riscv/cpu/th1520/dram.c
+++ b/arch/riscv/cpu/th1520/dram.c
@@ -19,3 +19,19 @@ int dram_init_banksize(void)
{
return fdtdec_setup_memory_banksize();
}
+
+phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
+{
+ /*
+ * Ensure that we run from first 4GB so that all
+ * addresses used by U-Boot are 32bit addresses.
+ *
+ * This in-turn ensures that 32bit DMA capable
+ * devices work fine because DMA mapping APIs will
+ * provide 32bit DMA addresses only.
+ */
+ if (gd->ram_top > SZ_4G)
+ return SZ_4G;
+
+ return gd->ram_top;
+}