From c074950b489957931296bc1efdb5e19f6f64e9a5 Mon Sep 17 00:00:00 2001 From: David Lechner Date: Mon, 15 Jun 2026 14:23:33 -0500 Subject: arm: mediatek: mt7987: 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 56183fb025c2 ("arm: mediatek: mt7987: 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. On mt7987, there is already an implementation of board_get_usable_ram_top() for other reasons, so it is modified to also limit ram_top to 4GiB (mt7987 is currently the only thing that sets CONFIG_MTK_TZ_MOVABLE=y so it is safe to change this here without unintentional side-effects). 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. Fixes: 56183fb025c2 ("arm: mediatek: mt7987: drop dram_init_banksize()") Link: https://patch.msgid.link/20260615-mtk-fix-ram-size-v2-3-f72cfc52ce58@baylibre.com Signed-off-by: David Lechner --- include/configs/mt7987.h | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 include/configs/mt7987.h (limited to 'include') diff --git a/include/configs/mt7987.h b/include/configs/mt7987.h deleted file mode 100644 index 18ed3c7a55b..00000000000 --- a/include/configs/mt7987.h +++ /dev/null @@ -1,14 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Configuration for MediaTek MT7987 SoC - * - * Copyright (C) 2025 MediaTek Inc. - * Author: Sam Shih - */ - -#ifndef __MT7987_H -#define __MT7987_H - -#define CFG_MAX_MEM_MAPPED 0xC0000000 - -#endif -- cgit v1.3.1 From 3b7adad0b5223422d9993e08faa9c879c023742d Mon Sep 17 00:00:00 2001 From: David Lechner Date: Mon, 15 Jun 2026 14:23:34 -0500 Subject: 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 Closes: https://lore.kernel.org/u-boot/20260602162233.2418471-1-rmandrad@gmail.com/ Fixes: bddd6bbef3dc ("arm: mediatek: mt7988: drop dram_init_banksize()") Link: https://patch.msgid.link/20260615-mtk-fix-ram-size-v2-4-f72cfc52ce58@baylibre.com Signed-off-by: David Lechner --- arch/arm/mach-mediatek/Kconfig | 1 - arch/arm/mach-mediatek/mt7988/init.c | 10 ++++++++++ board/mediatek/mt7988/MAINTAINERS | 1 - include/configs/mt7988.h | 14 -------------- 4 files changed, 10 insertions(+), 16 deletions(-) delete mode 100644 include/configs/mt7988.h (limited to 'include') 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 #include +#include #include #include #include @@ -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 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 - */ - -#ifndef __MT7988_H -#define __MT7988_H - -#define CFG_MAX_MEM_MAPPED 0xC0000000 - -#endif -- cgit v1.3.1