summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Lechner <[email protected]>2026-06-15 14:23:34 -0500
committerDavid Lechner <[email protected]>2026-06-24 10:06:16 -0500
commit3b7adad0b5223422d9993e08faa9c879c023742d (patch)
tree40553700bafcdd1045c13b7d382cdd31d771648c
parentc074950b489957931296bc1efdb5e19f6f64e9a5 (diff)
arm: mediatek: mt7988: fix gd->bd->bi_dram[0].size
Use board_get_usable_ram_top() instead of get_effective_memsize() to set gd->ram_top to something <= 4GiB. Both board_get_usable_ram_top() and get_effective_memsize() are used to set gd->ram_top in setup_dest_addr(). However, get_effective_memsize() also sets gd->bd->bi_dram[0].size in dram_init_banksize(), which is undesirable. Prior to commit bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()"), gd->bd->bi_dram[0].size was overridden in a board-specific dram_init_banksize() implementation. When that was removed get_effective_memsize() set gd->bd->bi_dram[0].size to the wrong value because of CFG_MAX_MEM_MAPPED. Rather than continue to use an old-style CFG_ option and the potentially confusing overriding of gd->bd->bi_dram[0].size (it is difficult to see which order the functions that set it are called), we can just use board_get_usable_ram_top() to set gd->ram_top to the correct value instead. This is possible now, thanks to LMB_LIMIT_DMA_BELOW_RAM_TOP being set by default for 64-bit Mediatek ARM SoCs. The CFG_MAX_MEM_MAPPED option is removed since it is no longer needed. The config header and Kconfig option are also removed since that was the last CFG_ option. Reported-by: Rudy Andram <[email protected]> Closes: https://lore.kernel.org/u-boot/[email protected]/ Fixes: bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()") Link: https://patch.msgid.link/[email protected] Signed-off-by: David Lechner <[email protected]>
-rw-r--r--arch/arm/mach-mediatek/Kconfig1
-rw-r--r--arch/arm/mach-mediatek/mt7988/init.c10
-rw-r--r--board/mediatek/mt7988/MAINTAINERS1
-rw-r--r--include/configs/mt7988.h14
4 files changed, 10 insertions, 16 deletions
diff --git a/arch/arm/mach-mediatek/Kconfig b/arch/arm/mach-mediatek/Kconfig
index 054b1bf92bf..799c630fed3 100644
--- a/arch/arm/mach-mediatek/Kconfig
+++ b/arch/arm/mach-mediatek/Kconfig
@@ -199,7 +199,6 @@ config SYS_CONFIG_NAME
default "mt7629" if TARGET_MT7629
default "mt7981" if TARGET_MT7981
default "mt7986" if TARGET_MT7986
- default "mt7988" if TARGET_MT7988
default "mt8183" if TARGET_MT8183
default "mt8512" if TARGET_MT8512
default "mt8516" if TARGET_MT8516
diff --git a/arch/arm/mach-mediatek/mt7988/init.c b/arch/arm/mach-mediatek/mt7988/init.c
index 7f4d934bfe9..5b37a91cd72 100644
--- a/arch/arm/mach-mediatek/mt7988/init.c
+++ b/arch/arm/mach-mediatek/mt7988/init.c
@@ -6,6 +6,7 @@
#include <fdtdec.h>
#include <init.h>
+#include <linux/kernel.h>
#include <linux/sizes.h>
#include <asm/armv8/mmu.h>
#include <asm/global_data.h>
@@ -26,6 +27,15 @@ int dram_init(void)
return 0;
}
+phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
+{
+ /*
+ * Limit gd->ram_top not exceeding SZ_4G. Because some peripherals like
+ * MMC requires DMA buffer allocated below SZ_4G.
+ */
+ return min(gd->ram_top, SZ_4G);
+}
+
void reset_cpu(ulong addr)
{
psci_system_reset();
diff --git a/board/mediatek/mt7988/MAINTAINERS b/board/mediatek/mt7988/MAINTAINERS
index a45bfff26ca..c7e30342e5c 100644
--- a/board/mediatek/mt7988/MAINTAINERS
+++ b/board/mediatek/mt7988/MAINTAINERS
@@ -2,6 +2,5 @@ MT7988
M: Sam Shih <[email protected]>
S: Maintained
F: board/mediatek/mt7988
-F: include/configs/mt7988.h
F: configs/mt7988_rfb_defconfig
F: configs/mt7988_sd_rfb_defconfig
diff --git a/include/configs/mt7988.h b/include/configs/mt7988.h
deleted file mode 100644
index e63825a5a19..00000000000
--- a/include/configs/mt7988.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Configuration for MediaTek MT7988 SoC
- *
- * Copyright (C) 2022 MediaTek Inc.
- * Author: Sam Shih <[email protected]>
- */
-
-#ifndef __MT7988_H
-#define __MT7988_H
-
-#define CFG_MAX_MEM_MAPPED 0xC0000000
-
-#endif