diff --git a/package/boot/uboot-mediatek/Makefile b/package/boot/uboot-mediatek/Makefile index f0d4534a4e..f3ef8841fa 100644 --- a/package/boot/uboot-mediatek/Makefile +++ b/package/boot/uboot-mediatek/Makefile @@ -881,6 +881,42 @@ define U-Boot/mt7988_bananapi_bpi-r4-poe-snand DEPENDS:=+trusted-firmware-a-mt7988-spim-nand-ubi-comb endef +define U-Boot/mt7987_rfb-emmc + NAME:=MT7987 Reference Board + BUILD_SUBTARGET:=filogic + BUILD_DEVICES:=mediatek_mt7987a-rfb + UBOOT_CONFIG:=mt7987_emmc_rfb + UBOOT_IMAGE:=u-boot.fip + BL2_BOOTDEV:=sdmmc + BL2_SOC:=mt7987 + BL2_DDRTYPE:=comb + DEPENDS:=+trusted-firmware-a-mt7987-emmc-comb +endef + +define U-Boot/mt7987_rfb-spim-nand + NAME:=MT7987 Reference Board + BUILD_SUBTARGET:=filogic + BUILD_DEVICES:=mediatek_mt7987a-rfb + UBOOT_CONFIG:=mt7987_rfb + UBOOT_IMAGE:=u-boot.fip + BL2_BOOTDEV:=spim-nand0-ubi + BL2_SOC:=mt7987 + BL2_DDRTYPE:=comb + DEPENDS:=+trusted-firmware-a-mt7987-spim-nand0-ubi-comb +endef + +define U-Boot/mt7987_rfb-sd + NAME:=MT7987 Reference Board + BUILD_SUBTARGET:=filogic + BUILD_DEVICES:=mediatek_mt7987a-rfb + UBOOT_CONFIG:=mt7987_sd_rfb + UBOOT_IMAGE:=u-boot.fip + BL2_BOOTDEV:=sdmmc + BL2_SOC:=mt7987 + BL2_DDRTYPE:=comb + DEPENDS:=+trusted-firmware-a-mt7987-sdmmc-comb +endef + define U-Boot/mt7988_rfb-spim-nand NAME:=MT7988 Reference Board BUILD_SUBTARGET:=filogic @@ -1009,6 +1045,9 @@ UBOOT_TARGETS := \ mt7986_xiaomi_redmi-router-ax6000 \ mt7986_zyxel_ex5601-t0 \ mt7986_rfb \ + mt7987_rfb-emmc \ + mt7987_rfb-sd \ + mt7987_rfb-spim-nand \ mt7988_arcadyan_mozart \ mt7988_asus_zenwifi-bt8 \ mt7988_bananapi_bpi-r4-emmc \ diff --git a/package/boot/uboot-mediatek/patches/007-ARM-dts-build-DT-for-MT7987-RFB.patch b/package/boot/uboot-mediatek/patches/007-ARM-dts-build-DT-for-MT7987-RFB.patch new file mode 100644 index 0000000000..045d4c5847 --- /dev/null +++ b/package/boot/uboot-mediatek/patches/007-ARM-dts-build-DT-for-MT7987-RFB.patch @@ -0,0 +1,26 @@ +From a4d4096d6b80a2b6f5bc800426380cdc60d9b037 Mon Sep 17 00:00:00 2001 +From: Daniel Golle +Date: Thu, 2 Oct 2025 14:57:16 +0100 +Subject: [PATCH] ARM: dts: build DT for MT7987 RFB + +Compile the added device tree sources into blobs, which was forgotten +when adding the source files. + +Fixes: 2d6962e0618 (arm: mediatek: add support for MediaTek MT7987 SoC) +Signed-off-by: Daniel Golle +--- + arch/arm/dts/Makefile | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -1131,6 +1131,9 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \ + mt7986b-sd-rfb.dtb \ + mt7986a-emmc-rfb.dtb \ + mt7986b-emmc-rfb.dtb \ ++ mt7987a-emmc-rfb.dtb \ ++ mt7987a-rfb.dtb \ ++ mt7987a-sd-rfb.dtb \ + mt7988-rfb.dtb \ + mt7988-sd-rfb.dtb \ + mt8183-pumpkin.dtb \ diff --git a/package/boot/uboot-mediatek/patches/306-mt7987-generic-reset-button-ignore-env.patch b/package/boot/uboot-mediatek/patches/306-mt7987-generic-reset-button-ignore-env.patch new file mode 100644 index 0000000000..5168735e06 --- /dev/null +++ b/package/boot/uboot-mediatek/patches/306-mt7987-generic-reset-button-ignore-env.patch @@ -0,0 +1,40 @@ +--- a/board/mediatek/mt7987/mt7987_rfb.c ++++ b/board/mediatek/mt7987/mt7987_rfb.c +@@ -4,3 +4,37 @@ + * Author: Sam Shih + */ + ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#ifndef CONFIG_RESET_BUTTON_LABEL ++#define CONFIG_RESET_BUTTON_LABEL "reset" ++#endif ++ ++int board_late_init(void) ++{ ++ gd->env_valid = 1; //to load environment variable from persistent store ++ struct udevice *dev; ++ ++ gd->env_valid = ENV_VALID; ++ if (!button_get_by_label(CONFIG_RESET_BUTTON_LABEL, &dev)) { ++ puts("reset button found\n"); ++#ifdef CONFIG_RESET_BUTTON_SETTLE_DELAY ++ if (CONFIG_RESET_BUTTON_SETTLE_DELAY > 0) { ++ button_get_state(dev); ++ mdelay(CONFIG_RESET_BUTTON_SETTLE_DELAY); ++ } ++#endif ++ if (button_get_state(dev) == BUTTON_ON) { ++ puts("button pushed, resetting environment\n"); ++ gd->env_valid = ENV_INVALID; ++ } ++ } ++ env_relocate(); ++ return 0; ++} diff --git a/package/boot/uboot-mediatek/patches/315-mt7987-select-rootdisk.patch b/package/boot/uboot-mediatek/patches/315-mt7987-select-rootdisk.patch new file mode 100644 index 0000000000..645e478300 --- /dev/null +++ b/package/boot/uboot-mediatek/patches/315-mt7987-select-rootdisk.patch @@ -0,0 +1,67 @@ +--- a/board/mediatek/mt7987/mt7987_rfb.c ++++ b/board/mediatek/mt7987/mt7987_rfb.c +@@ -10,7 +10,9 @@ + #include + #include + #include ++#include + #include ++#include + + #ifndef CONFIG_RESET_BUTTON_LABEL + #define CONFIG_RESET_BUTTON_LABEL "reset" +@@ -38,3 +40,54 @@ int board_late_init(void) + env_relocate(); + return 0; + } ++ ++#define MT7987_BOOT_SD 0 ++#define MT7987_BOOT_NOR 1 ++#define MT7987_BOOT_SPIM_NAND 2 ++#define MT7987_BOOT_EMMC 3 ++ ++int mtk_ft_system_setup(void *blob, struct bd_info *bd) ++{ ++ const u32 *media_handle_p; ++ int chosen, len, ret; ++ const char *media; ++ u32 media_handle; ++ ++ switch ((readl(0x1001f6f0) & 0xc0) >> 6) { ++ case MT7987_BOOT_SD: ++ media = "rootdisk-sd"; ++ break ++ ;; ++ case MT7987_BOOT_NOR: ++ media = "rootdisk-nor"; ++ break ++ ;; ++ case MT7987_BOOT_SPIM_NAND: ++ media = "rootdisk-spim-nand"; ++ break ++ ;; ++ case MT7987_BOOT_EMMC: ++ media = "rootdisk-emmc"; ++ break ++ ;; ++ } ++ ++ chosen = fdt_path_offset(blob, "/chosen"); ++ if (chosen <= 0) ++ return 0; ++ ++ media_handle_p = fdt_getprop(blob, chosen, media, &len); ++ if (media_handle_p <= 0 || len != 4) ++ return 0; ++ ++ media_handle = *media_handle_p; ++ ret = fdt_setprop(blob, chosen, "rootdisk", &media_handle, sizeof(media_handle)); ++ if (ret) { ++ printf("cannot set media phandle %s as rootdisk /chosen node\n", media); ++ return ret; ++ } ++ ++ printf("set /chosen/rootdisk to bootrom media: %s (phandle 0x%08x)\n", media, fdt32_to_cpu(media_handle)); ++ ++ return 0; ++} diff --git a/package/boot/uboot-mediatek/patches/500-adapt-mt7987-rfb.patch b/package/boot/uboot-mediatek/patches/500-adapt-mt7987-rfb.patch new file mode 100644 index 0000000000..39f6282d1c --- /dev/null +++ b/package/boot/uboot-mediatek/patches/500-adapt-mt7987-rfb.patch @@ -0,0 +1,30 @@ +--- a/configs/mt7987_rfb_defconfig ++++ b/configs/mt7987_rfb_defconfig +@@ -70,6 +70,7 @@ CONFIG_SPI_FLASH_XTX=y + CONFIG_SPI_FLASH_ZBIT=y + CONFIG_SPI_FLASH_MTD=y + CONFIG_MTD_UBI=y ++CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_PHY_ETHERNET_ID=y + CONFIG_MEDIATEK_ETH=y + CONFIG_PINCTRL=y +--- a/configs/mt7987_emmc_rfb_defconfig ++++ b/configs/mt7987_emmc_rfb_defconfig +@@ -75,6 +75,7 @@ CONFIG_SPI_FLASH_XTX=y + CONFIG_SPI_FLASH_ZBIT=y + CONFIG_SPI_FLASH_MTD=y + CONFIG_MTD_UBI=y ++CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_PHY_ETHERNET_ID=y + CONFIG_MEDIATEK_ETH=y + CONFIG_PINCTRL=y +--- a/configs/mt7987_sd_rfb_defconfig ++++ b/configs/mt7987_sd_rfb_defconfig +@@ -75,6 +75,7 @@ CONFIG_SPI_FLASH_XTX=y + CONFIG_SPI_FLASH_ZBIT=y + CONFIG_SPI_FLASH_MTD=y + CONFIG_MTD_UBI=y ++CONFIG_OF_LIBFDT_OVERLAY=y + CONFIG_PHY_ETHERNET_ID=y + CONFIG_MEDIATEK_ETH=y + CONFIG_PINCTRL=y