[openwrt/openwrt] arm-trusted-firmware-mediatek: update to v2.7+ from MediaTek

LEDE Commits lede-commits at lists.infradead.org
Sun Aug 28 12:42:04 PDT 2022


dangole pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/a1b263698cfacef7d62e091ed9c1f81f34b6df97

commit a1b263698cfacef7d62e091ed9c1f81f34b6df97
Author: Daniel Golle <daniel at makrotopia.org>
AuthorDate: Sat Aug 13 12:54:52 2022 +0100

    arm-trusted-firmware-mediatek: update to v2.7+ from MediaTek
    
    The updated sources bring support for the MT798x Filogic SoC family.
    
    Add builds for MT7986 with most supported storage types, each for DDR3
    and DDR4 configurations.
    
    A better solution for skipping bad blocks on SPI-NAND connected via the
    SNFI interface has been implemented upstream, so drop local patch.
    Add pending patches [1] and [2] to fix boot on existing MT7622 boards.
    
    Tested on BananaPi BPi-R64 (SDMMC, eMMC, SPI-NAND), Linksys E8450 and
    Ubiquiti UniFi 6 LR as well as upcoming Bananapi BPi-R3 board for which
    support will be added in future patches.
    
    [1]: https://github.com/mtk-openwrt/arm-trusted-firmware/pulls/#3
    [2]: https://github.com/mtk-openwrt/arm-trusted-firmware/pulls/#4
    
    Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../boot/arm-trusted-firmware-mediatek/Makefile    | 130 +++++++++++++++++++--
 .../0001-spi-nor-add-more-Winbond-device-IDs.patch |  32 +++++
 ...mt7622-initialize-watchdog-after-DDR-init.patch |  40 +++++++
 ...120-mt7622-bl2_boot_snand-skip-bad-blocks.patch |  40 -------
 4 files changed, 192 insertions(+), 50 deletions(-)

diff --git a/package/boot/arm-trusted-firmware-mediatek/Makefile b/package/boot/arm-trusted-firmware-mediatek/Makefile
index 48feae4b60..583517b866 100644
--- a/package/boot/arm-trusted-firmware-mediatek/Makefile
+++ b/package/boot/arm-trusted-firmware-mediatek/Makefile
@@ -13,9 +13,9 @@ PKG_RELEASE:=$(AUTORELEASE)
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=https://github.com/mtk-openwrt/arm-trusted-firmware.git
-PKG_SOURCE_DATE:=2021-05-08
-PKG_SOURCE_VERSION:=d2c75b2139be003887af9cc5a94da5e9bdc59de7
-PKG_MIRROR_HASH:=4af9ce8e11511afee7f588cc982946c06339edbfa47afef6a7f3e2231ac9f34d
+PKG_SOURCE_DATE:=2022-08-18
+PKG_SOURCE_VERSION:=9c9c49945c24634e4ae6cd924dbb88cf85c7926d
+PKG_MIRROR_HASH:=26b474f40c02da12b7bed56597aeef209757ad1b40a4f0a652794954018b2198
 
 PKG_MAINTAINER:=Daniel Golle <daniel at makrotopia.org>
 
@@ -25,57 +25,154 @@ include $(INCLUDE_DIR)/package.mk
 
 define Trusted-Firmware-A/Default
   BUILD_TARGET:=mediatek
-  BUILD_SUBTARGET:=mt7622
-  PLAT:=mt7622
   TFA_IMAGE:=bl2.img bl31.bin
   BOOT_DEVICE:=
   DDR3_FLYBY:=
+  DDR_TYPE:=
+  NAND_TYPE:=
 endef
 
 define Trusted-Firmware-A/mt7622-nor-1ddr
   NAME:=MediaTek MT7622 (SPI-NOR, 1x DDR3)
+  BUILD_SUBTARGET:=mt7622
+  PLAT:=mt7622
   BOOT_DEVICE:=nor
 endef
 
 define Trusted-Firmware-A/mt7622-nor-2ddr
   NAME:=MediaTek MT7622 (SPI-NOR, 2x DDR3)
+  BUILD_SUBTARGET:=mt7622
+  PLAT:=mt7622
   BOOT_DEVICE:=nor
   DDR3_FLYBY:=1
 endef
 
 define Trusted-Firmware-A/mt7622-snand-1ddr
   NAME:=MediaTek MT7622 (SPI-NAND, 1x DDR3)
+  BUILD_SUBTARGET:=mt7622
+  PLAT:=mt7622
   BOOT_DEVICE:=snand
 endef
 
 define Trusted-Firmware-A/mt7622-snand-2ddr
   NAME:=MediaTek MT7622 (SPI-NAND, 2x DDR3)
+  BUILD_SUBTARGET:=mt7622
+  PLAT:=mt7622
   BOOT_DEVICE:=snand
   DDR3_FLYBY:=1
 endef
 
 define Trusted-Firmware-A/mt7622-emmc-1ddr
   NAME:=MediaTek MT7622 (eMMC, 1x DDR3)
+  BUILD_SUBTARGET:=mt7622
+  PLAT:=mt7622
   BOOT_DEVICE:=emmc
 endef
 
 define Trusted-Firmware-A/mt7622-emmc-2ddr
   NAME:=MediaTek MT7622 (eMMC, 2x DDR3)
+  BUILD_SUBTARGET:=mt7622
+  PLAT:=mt7622
   BOOT_DEVICE:=emmc
   DDR3_FLYBY:=1
 endef
 
 define Trusted-Firmware-A/mt7622-sdmmc-1ddr
-  NAME:=MediaTek MT7622 (SDcard, 1x DDR3)
+  NAME:=MediaTek MT7622 (SD card, 1x DDR3)
+  BUILD_SUBTARGET:=mt7622
+  PLAT:=mt7622
   BOOT_DEVICE:=sdmmc
 endef
 
 define Trusted-Firmware-A/mt7622-sdmmc-2ddr
-  NAME:=MediaTek MT7622 (SDcard, 2x DDR3)
+  NAME:=MediaTek MT7622 (SD card, 2x DDR3)
+  BUILD_SUBTARGET:=mt7622
+  PLAT:=mt7622
   BOOT_DEVICE:=sdmmc
   DDR3_FLYBY:=1
 endef
 
+define Trusted-Firmware-A/mt7986-nor-ddr4
+  NAME:=MediaTek MT7986 (SPI-NOR, DDR4)
+  BOOT_DEVICE:=nor
+  BUILD_SUBTARGET:=filogic
+  PLAT:=mt7986
+  DDR_TYPE:=ddr4
+endef
+
+define Trusted-Firmware-A/mt7986-emmc-ddr4
+  NAME:=MediaTek MT7986 (eMMC, DDR4)
+  BOOT_DEVICE:=emmc
+  BUILD_SUBTARGET:=filogic
+  PLAT:=mt7986
+  DDR_TYPE:=ddr4
+endef
+
+define Trusted-Firmware-A/mt7986-sdmmc-ddr4
+  NAME:=MediaTek MT7986 (SD card, DDR4)
+  BOOT_DEVICE:=sdmmc
+  BUILD_SUBTARGET:=filogic
+  PLAT:=mt7986
+  DDR_TYPE:=ddr4
+endef
+
+define Trusted-Firmware-A/mt7986-snand-ddr4
+  NAME:=MediaTek MT7986 (SPI-NAND via SNFI, DDR4)
+  BOOT_DEVICE:=snand
+  BUILD_SUBTARGET:=filogic
+  PLAT:=mt7986
+  DDR_TYPE:=ddr4
+endef
+
+define Trusted-Firmware-A/mt7986-spim-nand-ddr4
+  NAME:=MediaTek MT7986 (SPI-NAND via SPIM, DDR4)
+  BOOT_DEVICE:=spim-nand
+  BUILD_SUBTARGET:=filogic
+  PLAT:=mt7986
+  DDR_TYPE:=ddr4
+  NAND_TYPE:=spim:2k+64
+endef
+
+define Trusted-Firmware-A/mt7986-nor-ddr3
+  NAME:=MediaTek MT7986 (SPI-NOR, DDR3)
+  BOOT_DEVICE:=nor
+  BUILD_SUBTARGET:=filogic
+  PLAT:=mt7986
+  DDR_TYPE:=ddr3
+endef
+
+define Trusted-Firmware-A/mt7986-emmc-ddr3
+  NAME:=MediaTek MT7986 (eMMC, DDR3)
+  BOOT_DEVICE:=emmc
+  BUILD_SUBTARGET:=filogic
+  PLAT:=mt7986
+  DDR_TYPE:=ddr3
+endef
+
+define Trusted-Firmware-A/mt7986-sdmmc-ddr3
+  NAME:=MediaTek MT7986 (SD card, DDR3)
+  BOOT_DEVICE:=sdmmc
+  BUILD_SUBTARGET:=filogic
+  PLAT:=mt7986
+  DDR_TYPE:=ddr3
+endef
+
+define Trusted-Firmware-A/mt7986-snand-ddr3
+  NAME:=MediaTek MT7986 (SPI-NAND via SNFI, DDR3)
+  BOOT_DEVICE:=snand
+  BUILD_SUBTARGET:=filogic
+  PLAT:=mt7986
+  DDR_TYPE:=ddr3
+endef
+
+define Trusted-Firmware-A/mt7986-spim-nand-ddr3
+  NAME:=MediaTek MT7986 (SPI-NAND via SPIM, DDR3)
+  BOOT_DEVICE:=spim-nand
+  BUILD_SUBTARGET:=filogic
+  PLAT:=mt7986
+  DDR_TYPE:=ddr3
+endef
+
 TFA_TARGETS:= \
 	mt7622-nor-1ddr \
 	mt7622-nor-2ddr \
@@ -84,18 +181,31 @@ TFA_TARGETS:= \
 	mt7622-emmc-1ddr \
 	mt7622-emmc-2ddr \
 	mt7622-sdmmc-1ddr \
-	mt7622-sdmmc-2ddr
+	mt7622-sdmmc-2ddr \
+	mt7986-emmc-ddr3 \
+	mt7986-nor-ddr3 \
+	mt7986-sdmmc-ddr3 \
+	mt7986-snand-ddr3 \
+	mt7986-spim-nand-ddr3 \
+	mt7986-emmc-ddr4 \
+	mt7986-nor-ddr4 \
+	mt7986-sdmmc-ddr4 \
+	mt7986-snand-ddr4 \
+	mt7986-spim-nand-ddr4
 
 TFA_MAKE_FLAGS += \
 	BOOT_DEVICE=$(BOOT_DEVICE) \
 	USE_MKIMAGE=1 MKIMAGE=$(STAGING_DIR_HOST)/bin/mkimage \
+	$(if $(findstring ddr4,$(DDR_TYPE)),DRAM_USE_DDR4=1) \
+	$(if $(NAND_TYPE),NAND_TYPE=$(NAND_TYPE)) \
+	HAVE_DRAM_OBJ_FILE=yes \
 	$(if $(DDR3_FLYBY),DDR3_FLYBY=1) \
 	all
 
 define Package/trusted-firmware-a/install
 	$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
-	$(INSTALL_DATA) $(PKG_BUILD_DIR)/build/mt7622/release/bl2.img $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-bl2.img
-	$(INSTALL_DATA) $(PKG_BUILD_DIR)/build/mt7622/release/bl31.bin $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-bl31.bin
+	$(INSTALL_DATA) $(PKG_BUILD_DIR)/build/$(PLAT)/release/bl2.img $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-bl2.img
+	$(INSTALL_DATA) $(PKG_BUILD_DIR)/build/$(PLAT)/release/bl31.bin $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-bl31.bin
 endef
 
 $(eval $(call BuildPackage/Trusted-Firmware-A))
diff --git a/package/boot/arm-trusted-firmware-mediatek/patches/0001-spi-nor-add-more-Winbond-device-IDs.patch b/package/boot/arm-trusted-firmware-mediatek/patches/0001-spi-nor-add-more-Winbond-device-IDs.patch
new file mode 100644
index 0000000000..d0e2f8a2c3
--- /dev/null
+++ b/package/boot/arm-trusted-firmware-mediatek/patches/0001-spi-nor-add-more-Winbond-device-IDs.patch
@@ -0,0 +1,32 @@
+From daaac60b504e6d5e77156ad0dc3dceca8b786e2d Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Sat, 27 Aug 2022 03:41:57 +0100
+Subject: [PATCH] spi-nor: add more Winbond device IDs
+
+Add device IDs for Winbond W25Q256 and W25Q512 variants.
+
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ drivers/mtd/nor/spi_nor.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+--- a/drivers/mtd/nor/spi_nor.c
++++ b/drivers/mtd/nor/spi_nor.c
+@@ -327,8 +327,15 @@ int spi_nor_read(unsigned int offset, ui
+ 
+ struct nor_device_info nor_flash_info_table[] = {
+ 	{"MX25L51245G", {0xC2, 0x20, 0x1A}, 0x4000000, 0},
+-	{"W25Q256JW",{0xEF,0x80, 0x19}, 0x2000000, 0},
+-	{"MX25U25635",{0xC2, 0x25, 0x39}, 0x2000000, 0}
++	{"W25Q256JV-IM", {0xEF, 0x70, 0x19}, 0x2000000, 0},
++	{"W25Q256JV-IQ", {0xEF, 0x40, 0x19}, 0x2000000, 0},
++	{"W25Q256JW", {0xEF, 0x60, 0x19}, 0x2000000, 0},
++	{"W25Q256JW-IM", {0xEF, 0x80, 0x19}, 0x2000000, 0},
++	{"W25Q512JV-IM", {0xEF, 0x70, 0x20}, 0x4000000, 0},
++	{"W25Q512JV-IQ", {0xEF, 0x40, 0x20}, 0x4000000, 0},
++	{"W25Q512NW-IM", {0xEF, 0x80, 0x20}, 0x4000000, 0},
++	{"W25Q512NW-IQ/IN", {0xEF, 0x60, 0x20}, 0x4000000, 0},
++	{"MX25U25635", {0xC2, 0x25, 0x39}, 0x2000000, 0}
+ };
+ 
+ 
diff --git a/package/boot/arm-trusted-firmware-mediatek/patches/0002-mediatek-mt7622-initialize-watchdog-after-DDR-init.patch b/package/boot/arm-trusted-firmware-mediatek/patches/0002-mediatek-mt7622-initialize-watchdog-after-DDR-init.patch
new file mode 100644
index 0000000000..d8905986e2
--- /dev/null
+++ b/package/boot/arm-trusted-firmware-mediatek/patches/0002-mediatek-mt7622-initialize-watchdog-after-DDR-init.patch
@@ -0,0 +1,40 @@
+From 2a012775b3ab6e72091c8be1c2d4bf5972407eb5 Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel at makrotopia.org>
+Date: Sat, 27 Aug 2022 21:38:33 +0100
+Subject: [PATCH] mediatek: mt7622: initialize watchdog after DDR init
+
+Initializing the WDT before memory calibration breaks reboot at least
+on some MT7622 boards like the Bananapi BPi-R64:
+NOTICE:  BL2: v2.7(release):OpenWrt v2022-08-18-9c9c4994-2 (mt7622-emmc-2ddr)
+NOTICE:  BL2: Built : 04:00:25, Aug 27 2022
+ERROR:   Cannot find any pass-window
+ERROR:   no DATLAT taps pass, DATLAT calibration fail!
+ERROR:   DATLAT calibration fail, write back to  20!
+ERROR:   EMI: complex R/W mem test failed: -2
+
+Move watchdog initialization to happen only after memory initialization
+has completed to avoid the problem.
+
+Signed-off-by: Daniel Golle <daniel at makrotopia.org>
+---
+ plat/mediatek/mt7622/bl2_plat_setup.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/plat/mediatek/mt7622/bl2_plat_setup.c
++++ b/plat/mediatek/mt7622/bl2_plat_setup.c
+@@ -277,7 +277,6 @@ void bl2_platform_setup(void)
+ 	plat_mt_cpuxgpt_init();
+ 	generic_delay_timer_init();
+ 
+-	mtk_wdt_init();
+ 	mtk_pin_init();
+ #ifndef USING_BL2PL
+ 	mtk_pll_init();
+@@ -285,6 +284,7 @@ void bl2_platform_setup(void)
+ 	mtk_pwrap_init();
+ 	mtk_pmic_init();
+ 	mtk_mem_init();
++	mtk_wdt_init();
+ 
+ 	mtk_io_setup();
+ }
diff --git a/package/boot/arm-trusted-firmware-mediatek/patches/120-mt7622-bl2_boot_snand-skip-bad-blocks.patch b/package/boot/arm-trusted-firmware-mediatek/patches/120-mt7622-bl2_boot_snand-skip-bad-blocks.patch
deleted file mode 100644
index 31384d010e..0000000000
--- a/package/boot/arm-trusted-firmware-mediatek/patches/120-mt7622-bl2_boot_snand-skip-bad-blocks.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- a/plat/mediatek/mt7622/bl2_boot_snand.c
-+++ b/plat/mediatek/mt7622/bl2_boot_snand.c
-@@ -21,6 +21,10 @@
- #define FIP_BASE			0x80000
- #define FIP_SIZE			0x200000
- 
-+#ifndef NMBM
-+#define SNAND_MAX_BAD_BLOCK		3
-+#endif
-+
- struct snfi_gpio_mux_info {
- 	const uint32_t *pins;
- 	uint32_t count;
-@@ -45,12 +49,26 @@ static size_t snand_read_range(int lba,
- 	size_t sizeremain = size, chunksize;
- 	uint64_t off = lba * cinfo.pagesize;
- 	uint8_t *ptr = (uint8_t *)buf;
-+	struct mtk_snand_chip_info info;
-+	unsigned int bad_blocks = 0;
- 	int ret = 0;
- 
- 	if (!snf)
- 		return 0;
- 
-+	ret = mtk_snand_get_chip_info(snf, &info);
-+	if (ret)
-+		return 0;
-+
- 	while (sizeremain) {
-+		while (mtk_snand_block_isbad(snf, off)) {
-+			if (bad_blocks > SNAND_MAX_BAD_BLOCK)
-+				return size - sizeremain;
-+
-+			off += info.blocksize;
-+			++bad_blocks;
-+		}
-+
- 		chunksize = cinfo.pagesize;
- 		if (chunksize > sizeremain)
- 			chunksize = sizeremain;




More information about the lede-commits mailing list