uboot-mediatek: add support for Linksys E8450
authorDaniel Golle <daniel@makrotopia.org>
Sat, 30 Jan 2021 13:58:16 +0000 (13:58 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Sun, 28 Feb 2021 01:23:48 +0000 (01:23 +0000)
Build U-Boot for the Linksys E8450 in order to have support for UBI.
The loader has a default environment with scripts handling the reset
button as well as fall-back to recovery firmware. If the loader comes
up without a valid environment found in UBI, it will automatically
make sure UBI is formatted and create a new environment and proceed
to load recovery firmware (either from UBI or via TFTP if recovery is
corrupted or unavailable).

If the button is held down during power-on, the yellow status LED
turns on and the bootloader environment is reset to factory defaults.
If the button is released at this point, the recovery firmware (if
existing) is loaded from UBI and booted.
If the button is continously held down even beyond the point that
the yellow LED turned on, the loader will try to load the recovery
firmware via TFTP from server 192.168.1.254, write it to UBI and
boot.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
13 files changed:
package/boot/uboot-mediatek/Makefile
package/boot/uboot-mediatek/patches/002-nand-add-spi-nand-driver.patch
package/boot/uboot-mediatek/patches/003-mt7622-uboot-add-dts-and-config-for-spi-nand.patch
package/boot/uboot-mediatek/patches/004-configs-enable-mtd-and-mtk_spi_nand-in-defconfig.patch
package/boot/uboot-mediatek/patches/005-update-bpir2-defconfig.patch
package/boot/uboot-mediatek/patches/006-cmd-button-return-button-status.patch [new file with mode: 0644]
package/boot/uboot-mediatek/patches/007-env-readmem.patch [new file with mode: 0644]
package/boot/uboot-mediatek/patches/008-bootmenu-custom-title.patch [new file with mode: 0644]
package/boot/uboot-mediatek/patches/009-mt7622-generic-reset-button-ignore-env.patch [new file with mode: 0644]
package/boot/uboot-mediatek/patches/010-no-binman.patch
package/boot/uboot-mediatek/patches/010-update-u7623-defconfig.patch
package/boot/uboot-mediatek/patches/020-add-linksys-e8450.patch [new file with mode: 0644]
package/boot/uboot-mediatek/patches/100-increase-CONFIG_SYS_BOOTM_LEN.patch [new file with mode: 0644]

index c46b906cb5ba2a744f78d6811df1fbc4ada25147..b61f4326446684fc483abd910986b91b43f5dd53 100644 (file)
@@ -3,6 +3,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_VERSION:=2020.10
 PKG_HASH:=0d481bbdc05c0ee74908ec2f56a6daa53166cc6a78a0e4fac2ac5d025770a622
+PKG_BUILD_DEPENDS:=arm-trusted-firmware-tools/host
 
 include $(INCLUDE_DIR)/u-boot.mk
 include $(INCLUDE_DIR)/package.mk
@@ -20,6 +21,16 @@ define U-Boot/mt7622
   UBOOT_CONFIG:=mt7622_rfb
 endef
 
+define U-Boot/mt7622_linksys_e8450
+  NAME:=Linksys E8450
+  BUILD_SUBTARGET:=mt7622
+  UBOOT_CONFIG:=mt7622_linksys_e8450
+  UBOOT_IMAGE:=u-boot.fip
+  BL2_BOOTDEV:=snand
+  BL2_DDRBLOB:=1
+  DEPENDS:=+trusted-firmware-a-mt7622-snand-1ddr
+endef
+
 define U-Boot/mt7623a_unielec_u7623
   NAME:=UniElec U7623 (mt7623)
   BUILD_SUBTARGET:=mt7623
@@ -39,15 +50,33 @@ define U-Boot/mt7629
   UBOOT_CONFIG:=mt7629_rfb
 endef
 
-UBOOT_TARGETS := mt7629 mt7622 mt7623n_bpir2 mt7623a_unielec_u7623
+UBOOT_TARGETS := mt7629 mt7622 mt7622_linksys_e8450 mt7623n_bpir2 mt7623a_unielec_u7623
 
-UBOOT_MAKE_FLAGS += $(UBOOT_IMAGE)
+UBOOT_MAKE_FLAGS += $(UBOOT_IMAGE:.fip=.bin)
 
 Build/Exports:=$(Host/Exports)
 
+define Build/fip-image
+       $(STAGING_DIR_HOST)/bin/fiptool create \
+               --soc-fw $(STAGING_DIR_IMAGE)/$(BUILD_SUBTARGET)-$(BL2_BOOTDEV)-$(BL2_DDRBLOB)ddr-bl31.bin \
+               --nt-fw $(PKG_BUILD_DIR)/u-boot.bin \
+               $(PKG_BUILD_DIR)/u-boot.fip
+endef
+
+define Build/Compile
+       $(call Build/Compile/U-Boot)
+ifeq ($(UBOOT_IMAGE),u-boot.fip))
+       $(call Build/fip-image)
+endif
+endef
+
+# don't stage files to bindir, let target/linux/mediatek/image/*.mk do that
+define Package/u-boot/install
+endef
+
 define Build/InstallDev
        $(INSTALL_DIR) $(STAGING_DIR_IMAGE)
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(UBOOT_IMAGE) $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-$(UBOOT_IMAGE)
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(UBOOT_IMAGE) $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-$(UBOOT_IMAGE)
 endef
 
 $(eval $(call BuildPackage/U-Boot))
index dc3ebaf7af059e4ab1d1aec3f1daabc067475789..5d3e94ac8638512dde9ede5407c12b3954c9ebc5 100644 (file)
@@ -85,11 +85,9 @@ Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
  create mode 100644 drivers/mtd/nandx/include/internal/nandx_util.h
  create mode 100644 drivers/mtd/nandx/include/uboot/nandx_os.h
 
-diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
-index 5e7571cf3d..34a59b44b9 100644
 --- a/drivers/mtd/Kconfig
 +++ b/drivers/mtd/Kconfig
-@@ -101,6 +101,13 @@ config HBMC_AM654
+@@ -108,6 +108,13 @@ config HBMC_AM654
         This is the driver for HyperBus controller on TI's AM65x and
         other SoCs
  
@@ -103,11 +101,9 @@ index 5e7571cf3d..34a59b44b9 100644
  source "drivers/mtd/nand/Kconfig"
  
  source "drivers/mtd/spi/Kconfig"
-diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile
-index 318788c5e2..1df1031b23 100644
 --- a/drivers/mtd/Makefile
 +++ b/drivers/mtd/Makefile
-@@ -41,3 +41,7 @@ obj-$(CONFIG_$(SPL_TPL_)SPI_FLASH_SUPPORT) += spi/
+@@ -41,3 +41,7 @@ obj-$(CONFIG_$(SPL_TPL_)SPI_FLASH_SUPPOR
  obj-$(CONFIG_SPL_UBI) += ubispl/
  
  endif
@@ -115,8 +111,6 @@ index 318788c5e2..1df1031b23 100644
 +ifeq ($(CONFIG_MTK_SPI_NAND), y)
 +include $(srctree)/drivers/mtd/nandx/Nandx.mk
 +endif
-diff --git a/drivers/mtd/nand/raw/nand.c b/drivers/mtd/nand/raw/nand.c
-index 026419e4e6..4be0c7d8f3 100644
 --- a/drivers/mtd/nand/raw/nand.c
 +++ b/drivers/mtd/nand/raw/nand.c
 @@ -91,8 +91,10 @@ static void nand_init_chip(int i)
@@ -130,9 +124,6 @@ index 026419e4e6..4be0c7d8f3 100644
  
        nand_register(i, mtd);
  }
-diff --git a/drivers/mtd/nandx/NOTICE b/drivers/mtd/nandx/NOTICE
-new file mode 100644
-index 0000000000..1a06ca3867
 --- /dev/null
 +++ b/drivers/mtd/nandx/NOTICE
 @@ -0,0 +1,52 @@
@@ -189,9 +180,6 @@ index 0000000000..1a06ca3867
 +
 +####################################################################################################
 \ No newline at end of file
-diff --git a/drivers/mtd/nandx/Nandx.config b/drivers/mtd/nandx/Nandx.config
-new file mode 100644
-index 0000000000..35705ee28d
 --- /dev/null
 +++ b/drivers/mtd/nandx/Nandx.config
 @@ -0,0 +1,17 @@
@@ -212,9 +200,6 @@ index 0000000000..35705ee28d
 +NANDX_NFI_BASE := y
 +NANDX_NFI_ECC := y
 +NANDX_NFI_SPI := y
-diff --git a/drivers/mtd/nandx/Nandx.mk b/drivers/mtd/nandx/Nandx.mk
-new file mode 100644
-index 0000000000..f5a6f2a628
 --- /dev/null
 +++ b/drivers/mtd/nandx/Nandx.mk
 @@ -0,0 +1,91 @@
@@ -309,9 +294,6 @@ index 0000000000..f5a6f2a628
 +clean:
 +      rm -rf $(sim-obj) nandx
 +endif
-diff --git a/drivers/mtd/nandx/README b/drivers/mtd/nandx/README
-new file mode 100644
-index 0000000000..0feaeaeb88
 --- /dev/null
 +++ b/drivers/mtd/nandx/README
 @@ -0,0 +1,31 @@
@@ -346,9 +328,6 @@ index 0000000000..0feaeaeb88
 +    Any block of above graph can be extended at your will, if you
 +want add new feature into this code, please make sure that your code
 +would follow the framework, and we will be appreciated about it.
-diff --git a/drivers/mtd/nandx/core/Nandx.mk b/drivers/mtd/nandx/core/Nandx.mk
-new file mode 100644
-index 0000000000..7a5661c044
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/Nandx.mk
 @@ -0,0 +1,38 @@
@@ -390,9 +369,6 @@ index 0000000000..7a5661c044
 +nandx-header-$(NANDX_NFI_ECC) += nfi/nfiecc_regs.h
 +nandx-header-$(NANDX_NFI_SPI) += nfi/nfi_spi.h
 +nandx-header-$(NANDX_NFI_SPI) += nfi/nfi_spi_regs.h
-diff --git a/drivers/mtd/nandx/core/core_io.c b/drivers/mtd/nandx/core/core_io.c
-new file mode 100644
-index 0000000000..716eeed38d
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/core_io.c
 @@ -0,0 +1,735 @@
@@ -1131,9 +1107,6 @@ index 0000000000..716eeed38d
 +      return ret;
 +}
 +#endif
-diff --git a/drivers/mtd/nandx/core/core_io.h b/drivers/mtd/nandx/core/core_io.h
-new file mode 100644
-index 0000000000..edcb60908a
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/core_io.h
 @@ -0,0 +1,39 @@
@@ -1176,9 +1149,6 @@ index 0000000000..edcb60908a
 +};
 +
 +#endif /* __CORE_IO_H__ */
-diff --git a/drivers/mtd/nandx/core/nand/device_spi.c b/drivers/mtd/nandx/core/nand/device_spi.c
-new file mode 100644
-index 0000000000..db338c28c2
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nand/device_spi.c
 @@ -0,0 +1,200 @@
@@ -1382,9 +1352,6 @@ index 0000000000..db338c28c2
 +      return &spi_nand[index].dev;
 +}
 +
-diff --git a/drivers/mtd/nandx/core/nand/device_spi.h b/drivers/mtd/nandx/core/nand/device_spi.h
-new file mode 100644
-index 0000000000..1676b61fc8
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nand/device_spi.h
 @@ -0,0 +1,132 @@
@@ -1520,9 +1487,6 @@ index 0000000000..1676b61fc8
 +u8 spi_replace_tx_col_cycle(u8 mode);
 +
 +#endif /* __DEVICE_SPI_H__ */
-diff --git a/drivers/mtd/nandx/core/nand/nand_spi.c b/drivers/mtd/nandx/core/nand/nand_spi.c
-new file mode 100644
-index 0000000000..2ae03e1cf4
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nand/nand_spi.c
 @@ -0,0 +1,526 @@
@@ -2052,9 +2016,6 @@ index 0000000000..2ae03e1cf4
 +      nand_base_exit(spi->parent);
 +      mem_free(spi);
 +}
-diff --git a/drivers/mtd/nandx/core/nand/nand_spi.h b/drivers/mtd/nandx/core/nand/nand_spi.h
-new file mode 100644
-index 0000000000..e55e4de6f7
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nand/nand_spi.h
 @@ -0,0 +1,35 @@
@@ -2093,9 +2054,6 @@ index 0000000000..e55e4de6f7
 +}
 +
 +#endif /* __NAND_SPI_H__ */
-diff --git a/drivers/mtd/nandx/core/nand_base.c b/drivers/mtd/nandx/core/nand_base.c
-new file mode 100644
-index 0000000000..65998e5460
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nand_base.c
 @@ -0,0 +1,304 @@
@@ -2403,9 +2361,6 @@ index 0000000000..65998e5460
 +      nfi_exit(base->nfi);
 +      mem_free(base);
 +}
-diff --git a/drivers/mtd/nandx/core/nand_base.h b/drivers/mtd/nandx/core/nand_base.h
-new file mode 100644
-index 0000000000..13217978e5
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nand_base.h
 @@ -0,0 +1,71 @@
@@ -2480,9 +2435,6 @@ index 0000000000..13217978e5
 +int nand_detect_device(struct nand_base *nand);
 +
 +#endif /* __NAND_BASE_H__ */
-diff --git a/drivers/mtd/nandx/core/nand_chip.c b/drivers/mtd/nandx/core/nand_chip.c
-new file mode 100644
-index 0000000000..02adc6f52e
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nand_chip.c
 @@ -0,0 +1,272 @@
@@ -2758,9 +2710,6 @@ index 0000000000..02adc6f52e
 +      nand_exit(chip->nand);
 +      mem_free(chip);
 +}
-diff --git a/drivers/mtd/nandx/core/nand_chip.h b/drivers/mtd/nandx/core/nand_chip.h
-new file mode 100644
-index 0000000000..3e9c8e6ca3
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nand_chip.h
 @@ -0,0 +1,103 @@
@@ -2867,9 +2816,6 @@ index 0000000000..3e9c8e6ca3
 +struct nand_chip *nand_chip_init(struct nfi_resource *res);
 +void nand_chip_exit(struct nand_chip *chip);
 +#endif /* __NAND_CHIP_H__ */
-diff --git a/drivers/mtd/nandx/core/nand_device.c b/drivers/mtd/nandx/core/nand_device.c
-new file mode 100644
-index 0000000000..9f6764d1bc
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nand_device.c
 @@ -0,0 +1,285 @@
@@ -3158,9 +3104,6 @@ index 0000000000..9f6764d1bc
 +      return 0;
 +}
 +
-diff --git a/drivers/mtd/nandx/core/nand_device.h b/drivers/mtd/nandx/core/nand_device.h
-new file mode 100644
-index 0000000000..e142cf529d
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nand_device.h
 @@ -0,0 +1,608 @@
@@ -3772,9 +3715,6 @@ index 0000000000..e142cf529d
 +
 +struct nand_device *nand_get_device(int index);
 +#endif /* __NAND_DEVICE_H__ */
-diff --git a/drivers/mtd/nandx/core/nfi.h b/drivers/mtd/nandx/core/nfi.h
-new file mode 100644
-index 0000000000..ba84e73ccc
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nfi.h
 @@ -0,0 +1,51 @@
@@ -3829,9 +3769,6 @@ index 0000000000..ba84e73ccc
 +void nfi_exit(struct nfi *nfi);
 +
 +#endif /* __NFI_H__ */
-diff --git a/drivers/mtd/nandx/core/nfi/nfi_base.c b/drivers/mtd/nandx/core/nfi/nfi_base.c
-new file mode 100644
-index 0000000000..d8679d7aa3
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nfi/nfi_base.c
 @@ -0,0 +1,1357 @@
@@ -5192,9 +5129,6 @@ index 0000000000..d8679d7aa3
 +      nfi_extend_exit(nb);
 +}
 +
-diff --git a/drivers/mtd/nandx/core/nfi/nfi_base.h b/drivers/mtd/nandx/core/nfi/nfi_base.h
-new file mode 100644
-index 0000000000..ae894eaa31
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nfi/nfi_base.h
 @@ -0,0 +1,95 @@
@@ -5293,9 +5227,6 @@ index 0000000000..ae894eaa31
 +void nfi_extend_exit(struct nfi_base *nb);
 +
 +#endif /* __NFI_BASE_H__ */
-diff --git a/drivers/mtd/nandx/core/nfi/nfi_regs.h b/drivers/mtd/nandx/core/nfi/nfi_regs.h
-new file mode 100644
-index 0000000000..ba4868acc8
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nfi/nfi_regs.h
 @@ -0,0 +1,114 @@
@@ -5413,9 +5344,6 @@ index 0000000000..ba4868acc8
 +
 +#endif /* __NFI_REGS_H__ */
 +
-diff --git a/drivers/mtd/nandx/core/nfi/nfi_spi.c b/drivers/mtd/nandx/core/nfi/nfi_spi.c
-new file mode 100644
-index 0000000000..67cd0aaad9
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nfi/nfi_spi.c
 @@ -0,0 +1,689 @@
@@ -6108,9 +6036,6 @@ index 0000000000..67cd0aaad9
 +      mem_free(nfi_spi);
 +}
 +
-diff --git a/drivers/mtd/nandx/core/nfi/nfi_spi.h b/drivers/mtd/nandx/core/nfi/nfi_spi.h
-new file mode 100644
-index 0000000000..a52255663a
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nfi/nfi_spi.h
 @@ -0,0 +1,44 @@
@@ -6158,9 +6083,6 @@ index 0000000000..a52255663a
 +};
 +
 +#endif /* __NFI_SPI_H__ */
-diff --git a/drivers/mtd/nandx/core/nfi/nfi_spi_regs.h b/drivers/mtd/nandx/core/nfi/nfi_spi_regs.h
-new file mode 100644
-index 0000000000..77adf46782
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nfi/nfi_spi_regs.h
 @@ -0,0 +1,64 @@
@@ -6228,9 +6150,6 @@ index 0000000000..77adf46782
 +#define SPI_GPRAM_ADDR          0x800
 +
 +#endif /* __NFI_SPI_REGS_H__ */
-diff --git a/drivers/mtd/nandx/core/nfi/nfiecc.c b/drivers/mtd/nandx/core/nfi/nfiecc.c
-new file mode 100644
-index 0000000000..14246fbc3e
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nfi/nfiecc.c
 @@ -0,0 +1,510 @@
@@ -6744,9 +6663,6 @@ index 0000000000..14246fbc3e
 +      mem_free(ecc);
 +}
 +
-diff --git a/drivers/mtd/nandx/core/nfi/nfiecc.h b/drivers/mtd/nandx/core/nfi/nfiecc.h
-new file mode 100644
-index 0000000000..b02a5c3534
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nfi/nfiecc.h
 @@ -0,0 +1,90 @@
@@ -6840,9 +6756,6 @@ index 0000000000..b02a5c3534
 +void nfiecc_exit(struct nfiecc *ecc);
 +
 +#endif /* __NFIECC_H__ */
-diff --git a/drivers/mtd/nandx/core/nfi/nfiecc_regs.h b/drivers/mtd/nandx/core/nfi/nfiecc_regs.h
-new file mode 100644
-index 0000000000..96564cf872
 --- /dev/null
 +++ b/drivers/mtd/nandx/core/nfi/nfiecc_regs.h
 @@ -0,0 +1,51 @@
@@ -6897,9 +6810,6 @@ index 0000000000..96564cf872
 +#define NFIECC_DECEL(x)         (0x120 + (x) * 4)
 +
 +#endif /* __NFIECC_REGS_H__ */
-diff --git a/drivers/mtd/nandx/driver/Nandx.mk b/drivers/mtd/nandx/driver/Nandx.mk
-new file mode 100644
-index 0000000000..3fb93d37c5
 --- /dev/null
 +++ b/drivers/mtd/nandx/driver/Nandx.mk
 @@ -0,0 +1,18 @@
@@ -6921,9 +6831,6 @@ index 0000000000..3fb93d37c5
 +nandx-$(NANDX_KERNEL_SUPPORT) += kernel/driver.c
 +nandx-$(NANDX_LK_SUPPORT) += lk/driver.c
 +nandx-$(NANDX_UBOOT_SUPPORT) += uboot/driver.c
-diff --git a/drivers/mtd/nandx/driver/bbt/bbt.c b/drivers/mtd/nandx/driver/bbt/bbt.c
-new file mode 100644
-index 0000000000..c9d4823e09
 --- /dev/null
 +++ b/drivers/mtd/nandx/driver/bbt/bbt.c
 @@ -0,0 +1,408 @@
@@ -7335,9 +7242,6 @@ index 0000000000..c9d4823e09
 +
 +      return get_bbt_mark(g_bbt_manager.bbt, block) != BBT_BLOCK_GOOD;
 +}
-diff --git a/drivers/mtd/nandx/driver/uboot/driver.c b/drivers/mtd/nandx/driver/uboot/driver.c
-new file mode 100644
-index 0000000000..7bd3342452
 --- /dev/null
 +++ b/drivers/mtd/nandx/driver/uboot/driver.c
 @@ -0,0 +1,574 @@
@@ -7915,9 +7819,6 @@ index 0000000000..7bd3342452
 +MODULE_LICENSE("GPL v2");
 +MODULE_DESCRIPTION("MTK Nand Flash Controller Driver");
 +MODULE_AUTHOR("MediaTek");
-diff --git a/drivers/mtd/nandx/include/Nandx.mk b/drivers/mtd/nandx/include/Nandx.mk
-new file mode 100644
-index 0000000000..667402790e
 --- /dev/null
 +++ b/drivers/mtd/nandx/include/Nandx.mk
 @@ -0,0 +1,16 @@
@@ -7937,9 +7838,6 @@ index 0000000000..667402790e
 +nandx-header-$(NANDX_LK_SUPPORT) += lk/nandx_os.h
 +nandx-header-$(NANDX_KERNEL_SUPPORT) += kernel/nandx_os.h
 +nandx-header-$(NANDX_UBOOT_SUPPORT) += uboot/nandx_os.h
-diff --git a/drivers/mtd/nandx/include/internal/bbt.h b/drivers/mtd/nandx/include/internal/bbt.h
-new file mode 100644
-index 0000000000..4676def1f5
 --- /dev/null
 +++ b/drivers/mtd/nandx/include/internal/bbt.h
 @@ -0,0 +1,62 @@
@@ -8005,9 +7903,6 @@ index 0000000000..4676def1f5
 +int bbt_is_bad(struct nandx_info *nand, off_t offset);
 +
 +#endif /*__BBT_H__*/
-diff --git a/drivers/mtd/nandx/include/internal/nandx_core.h b/drivers/mtd/nandx/include/internal/nandx_core.h
-new file mode 100644
-index 0000000000..09aff72224
 --- /dev/null
 +++ b/drivers/mtd/nandx/include/internal/nandx_core.h
 @@ -0,0 +1,250 @@
@@ -8261,9 +8156,6 @@ index 0000000000..09aff72224
 +#endif
 +
 +#endif /* __NANDX_CORE_H__ */
-diff --git a/drivers/mtd/nandx/include/internal/nandx_errno.h b/drivers/mtd/nandx/include/internal/nandx_errno.h
-new file mode 100644
-index 0000000000..51fb299c03
 --- /dev/null
 +++ b/drivers/mtd/nandx/include/internal/nandx_errno.h
 @@ -0,0 +1,40 @@
@@ -8307,9 +8199,6 @@ index 0000000000..51fb299c03
 +#endif
 +
 +#endif /* __NANDX_ERRNO_H__ */
-diff --git a/drivers/mtd/nandx/include/internal/nandx_util.h b/drivers/mtd/nandx/include/internal/nandx_util.h
-new file mode 100644
-index 0000000000..1990b000ee
 --- /dev/null
 +++ b/drivers/mtd/nandx/include/internal/nandx_util.h
 @@ -0,0 +1,221 @@
@@ -8534,9 +8423,6 @@ index 0000000000..1990b000ee
 +}
 +
 +#endif /* __NANDX_UTIL_H__ */
-diff --git a/drivers/mtd/nandx/include/uboot/nandx_os.h b/drivers/mtd/nandx/include/uboot/nandx_os.h
-new file mode 100644
-index 0000000000..8ea53378bf
 --- /dev/null
 +++ b/drivers/mtd/nandx/include/uboot/nandx_os.h
 @@ -0,0 +1,78 @@
@@ -8618,8 +8504,6 @@ index 0000000000..8ea53378bf
 +}
 +
 +#endif /* __NANDX_OS_H__ */
-diff --git a/include/configs/mt7622.h b/include/configs/mt7622.h
-index dfd506ed24..6d0c956484 100644
 --- a/include/configs/mt7622.h
 +++ b/include/configs/mt7622.h
 @@ -11,6 +11,31 @@
@@ -8654,6 +8538,3 @@ index dfd506ed24..6d0c956484 100644
  #define CONFIG_SYS_MAXARGS            8
  #define CONFIG_SYS_BOOTM_LEN          SZ_64M
  #define CONFIG_SYS_CBSIZE             SZ_1K
--- 
-2.17.1
-
index 2c021e1c80379df7f9ec90b2115347171bdcc3b9..7167a498ad66043b1e12d087a5f24bbd0e4e9245 100644 (file)
@@ -11,11 +11,9 @@ Signed-off-by: Xiangsheng Hou <xiangsheng.hou@mediatek.com>
  arch/arm/dts/mt7622.dtsi    | 20 ++++++++++++++++++++
  2 files changed, 26 insertions(+)
 
-diff --git a/arch/arm/dts/mt7622-rfb.dts b/arch/arm/dts/mt7622-rfb.dts
-index f05c3fe14d..05502bddec 100644
 --- a/arch/arm/dts/mt7622-rfb.dts
 +++ b/arch/arm/dts/mt7622-rfb.dts
-@@ -143,6 +143,12 @@
+@@ -174,6 +174,12 @@
        };
  };
  
@@ -28,11 +26,9 @@ index f05c3fe14d..05502bddec 100644
  &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_pins>;
-diff --git a/arch/arm/dts/mt7622.dtsi b/arch/arm/dts/mt7622.dtsi
-index 1e8ec9b48b..63fdb63d4a 100644
 --- a/arch/arm/dts/mt7622.dtsi
 +++ b/arch/arm/dts/mt7622.dtsi
-@@ -52,6 +52,26 @@
+@@ -53,6 +53,26 @@
                #size-cells = <0>;
        };
  
@@ -59,6 +55,3 @@ index 1e8ec9b48b..63fdb63d4a 100644
        timer {
                compatible = "arm,armv8-timer";
                interrupt-parent = <&gic>;
--- 
-2.17.1
-
index cb564965c76d9b6ac4cc8d063448e41e588383e2..6999e5e23539b50c0ebdfbc3f968dd15251074fe 100644 (file)
@@ -10,8 +10,6 @@ Signed-off-by: Sam Shih <sam.shih@mediatek.com>
  configs/mt7622_rfb_defconfig | 5 +++++
  1 file changed, 5 insertions(+)
 
-diff --git a/configs/mt7622_rfb_defconfig b/configs/mt7622_rfb_defconfig
-index 1ce6ebdfeb..816126267b 100644
 --- a/configs/mt7622_rfb_defconfig
 +++ b/configs/mt7622_rfb_defconfig
 @@ -13,6 +13,7 @@ CONFIG_DEFAULT_FDT_FILE="mt7622-rfb"
@@ -22,18 +20,3 @@ index 1ce6ebdfeb..816126267b 100644
  CONFIG_CMD_PCI=y
  CONFIG_CMD_SF_TEST=y
  CONFIG_CMD_PING=y
- CONFIG_CMD_SMC=y
-@@ -25,6 +26,10 @@ CONFIG_CLK=y
- CONFIG_DM_MMC=y
- CONFIG_MMC_HS200_SUPPORT=y
- CONFIG_MMC_MTK=y
-+CONFIG_MTD=y
-+CONFIG_DM_MTD=y
-+CONFIG_MTK_SPI_NAND=y
-+CONFIG_MTD_RAW_NAND=y
- CONFIG_DM_SPI_FLASH=y
- CONFIG_SPI_FLASH_EON=y
- CONFIG_SPI_FLASH_GIGADEVICE=y
--- 
-2.17.1
-
index cc7ed8928040a510947617cc1573f958c4b1bdb6..b750dda6e8f5e123f4042323cb57d5800f89adda 100644 (file)
@@ -1,10 +1,9 @@
-diff --git a/configs/mt7623n_bpir2_defconfig b/configs/mt7623n_bpir2_defconfig
-index 6b9fbd7e22..fb2a004803 100644
 --- a/configs/mt7623n_bpir2_defconfig
 +++ b/configs/mt7623n_bpir2_defconfig
-@@ -52,3 +52,13 @@ CONFIG_TIMER=y
- CONFIG_WDT_MTK=y
- CONFIG_LZMA=y
+@@ -51,5 +51,15 @@ CONFIG_SYSRESET=y
+ CONFIG_SYSRESET_WATCHDOG=y
+ CONFIG_TIMER=y
+ CONFIG_MTK_TIMER=y
 +CONFIG_CMD_BOOTZ=y
 +CONFIG_OF_LIBFDT_OVERLAY=y
 +#enables savenenv-command
@@ -15,3 +14,5 @@ index 6b9fbd7e22..fb2a004803 100644
 +CONFIG_CMD_ASKENV=y
 +CONFIG_ENV_SIZE=0x2000
 +CONFIG_CMD_SETEXPR=y
+ CONFIG_WDT_MTK=y
+ CONFIG_LZMA=y
diff --git a/package/boot/uboot-mediatek/patches/006-cmd-button-return-button-status.patch b/package/boot/uboot-mediatek/patches/006-cmd-button-return-button-status.patch
new file mode 100644 (file)
index 0000000..a413688
--- /dev/null
@@ -0,0 +1,38 @@
+From a6bfd71a96201127836d59736abcb54dc2d5e1a5 Mon Sep 17 00:00:00 2001
+From: Heinrich Schuchardt <xypron.glpk@gmx.de>
+Date: Mon, 14 Sep 2020 12:50:56 +0200
+Subject: [PATCH] cmd/button: return button status
+
+To make the button command useful in a shell script it should return the
+status of the button:
+
+* 0 (true) - pressed, on
+* 1 (false) - not pressed, off
+
+The button command takes only one argument. Correct maxargs.
+
+Adjust the Python unit test.
+
+Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
+Reviewed-by: Philippe Reynes <philippe.reynes@softathome.com>
+---
+ cmd/button.c                 |  4 ++--
+ test/py/tests/test_button.py | 34 ++++++++++++++++++++++++++--------
+ 2 files changed, 28 insertions(+), 10 deletions(-)
+
+--- a/cmd/button.c
++++ b/cmd/button.c
+@@ -75,11 +75,11 @@ int do_button(struct cmd_tbl *cmdtp, int
+       ret = show_button_state(dev);
+-      return 0;
++      return !ret;
+ }
+ U_BOOT_CMD(
+-      button, 4, 1, do_button,
++      button, 2, 1, do_button,
+       "manage buttons",
+       "<button_label> \tGet button state\n"
+       "button list\t\tShow a list of buttons"
diff --git a/package/boot/uboot-mediatek/patches/007-env-readmem.patch b/package/boot/uboot-mediatek/patches/007-env-readmem.patch
new file mode 100644 (file)
index 0000000..a8c88a2
--- /dev/null
@@ -0,0 +1,116 @@
+--- a/cmd/Kconfig
++++ b/cmd/Kconfig
+@@ -571,6 +571,12 @@ config CMD_ENV_EXISTS
+         Check if a variable is defined in the environment for use in
+         shell scripting.
++config CMD_ENV_READMEM
++      bool "env readmem"
++      default y
++      help
++        Store memory content into environment variable.
++
+ config CMD_ENV_CALLBACK
+       bool "env callbacks - print callbacks and their associated variables"
+       help
+--- a/cmd/nvedit.c
++++ b/cmd/nvedit.c
+@@ -469,6 +469,60 @@ int do_env_ask(struct cmd_tbl *cmdtp, in
+ }
+ #endif
++#if defined(CONFIG_CMD_ENV_READMEM)
++int do_env_readmem(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
++{
++      char varstr[CONFIG_SYS_CBSIZE];
++      const void *buf;
++      char *local_args[4];
++      ulong addr, bytes = 6;
++      int hexdump = 0;
++
++      /*
++       * Check the syntax:
++       *
++       * readmem [-b] name address [size]
++       */
++      if (argc < 3)
++              return CMD_RET_USAGE;
++
++      local_args[0] = argv[0];
++
++      if (!strncmp(argv[1], "-b", 3))
++              hexdump = 1;
++
++      local_args[1] = argv[hexdump + 1];
++      local_args[2] = varstr;
++      local_args[3] = NULL;
++
++      addr = simple_strtoul(argv[hexdump + 2], NULL, 16);
++
++      if (!hexdump)
++              bytes = simple_strtoul(argv[hexdump + 3], NULL, 16);
++
++      if (bytes < 1)
++              return 1;
++
++      if ((hexdump * 3) * bytes >= CONFIG_SYS_CBSIZE)
++              return 1;
++
++      buf = map_sysmem(addr, bytes);
++      if (!buf)
++              return 1;
++
++      if (hexdump) {
++              sprintf(varstr, "%pM", buf);
++      } else {
++              memcpy(varstr, buf, bytes);
++              varstr[bytes] = '\0';
++      }
++      unmap_sysmem(buf);
++
++      /* Continue calling setenv code */
++      return _do_env_set(flag, 3, local_args, H_INTERACTIVE);
++}
++#endif
++
+ #if defined(CONFIG_CMD_ENV_CALLBACK)
+ static int print_static_binding(const char *var_name, const char *callback_name,
+                               void *priv)
+@@ -1373,6 +1427,9 @@ static struct cmd_tbl cmd_env_sub[] = {
+       U_BOOT_CMD_MKENT(load, 1, 0, do_env_load, "", ""),
+ #endif
+       U_BOOT_CMD_MKENT(print, CONFIG_SYS_MAXARGS, 1, do_env_print, "", ""),
++#if defined(CONFIG_CMD_ENV_READMEM)
++      U_BOOT_CMD_MKENT(readmem, CONFIG_SYS_MAXARGS, 3, do_env_readmem, "", ""),
++#endif
+ #if defined(CONFIG_CMD_RUN)
+       U_BOOT_CMD_MKENT(run, CONFIG_SYS_MAXARGS, 1, do_run, "", ""),
+ #endif
+@@ -1461,6 +1518,9 @@ static char env_help_text[] =
+ #if defined(CONFIG_CMD_NVEDIT_EFI)
+       "env print -e [-guid guid] [-n] [name ...] - print UEFI environment\n"
+ #endif
++#if defined(CONFIG_CMD_ENV_READMEM)
++      "env readmem [-b] name address size - read variable from memory\n"
++#endif
+ #if defined(CONFIG_CMD_RUN)
+       "env run var [...] - run commands in an environment variable\n"
+ #endif
+@@ -1570,6 +1630,17 @@ U_BOOT_CMD(
+ );
+ #endif
++#if defined(CONFIG_CMD_ENV_READMEM)
++U_BOOT_CMD_COMPLETE(
++      readmem,        CONFIG_SYS_MAXARGS,     3,      do_env_readmem,
++      "get environment variable from memory address",
++      "name [-b] address size\n"
++      "    - store memory address to env variable\n"
++      "      \"-b\": read binary ethaddr",
++      var_complete
++);
++#endif
++
+ #if defined(CONFIG_CMD_RUN)
+ U_BOOT_CMD_COMPLETE(
+       run,    CONFIG_SYS_MAXARGS,     1,      do_run,
diff --git a/package/boot/uboot-mediatek/patches/008-bootmenu-custom-title.patch b/package/boot/uboot-mediatek/patches/008-bootmenu-custom-title.patch
new file mode 100644 (file)
index 0000000..32f26ec
--- /dev/null
@@ -0,0 +1,32 @@
+--- a/cmd/bootmenu.c
++++ b/cmd/bootmenu.c
+@@ -38,6 +38,7 @@ struct bootmenu_data {
+       int active;                     /* active menu entry */
+       int count;                      /* total count of menu entries */
+       struct bootmenu_entry *first;   /* first menu entry */
++      char *mtitle;                   /* custom menu title */
+ };
+ enum bootmenu_key {
+@@ -380,7 +381,12 @@ static void menu_display_statusline(stru
+       printf(ANSI_CURSOR_POSITION, 1, 1);
+       puts(ANSI_CLEAR_LINE);
+       printf(ANSI_CURSOR_POSITION, 2, 1);
+-      puts("  *** U-Boot Boot Menu ***");
++
++      if (menu->mtitle)
++              puts(menu->mtitle);
++      else
++              puts("  *** U-Boot Boot Menu ***");
++
+       puts(ANSI_CLEAR_LINE_TO_END);
+       printf(ANSI_CURSOR_POSITION, 3, 1);
+       puts(ANSI_CLEAR_LINE);
+@@ -434,6 +440,7 @@ static void bootmenu_show(int delay)
+               return;
+       }
++      bootmenu->mtitle = env_get("bootmenu_title");
+       for (iter = bootmenu->first; iter; iter = iter->next) {
+               if (!menu_item_add(menu, iter->key, iter))
+                       goto cleanup;
diff --git a/package/boot/uboot-mediatek/patches/009-mt7622-generic-reset-button-ignore-env.patch b/package/boot/uboot-mediatek/patches/009-mt7622-generic-reset-button-ignore-env.patch
new file mode 100644 (file)
index 0000000..037bbb8
--- /dev/null
@@ -0,0 +1,35 @@
+--- a/board/mediatek/mt7622/mt7622_rfb.c
++++ b/board/mediatek/mt7622/mt7622_rfb.c
+@@ -6,9 +6,15 @@
+ #include <common.h>
+ #include <config.h>
++#include <dm.h>
++#include <button.h>
+ #include <env.h>
+ #include <init.h>
++#ifndef CONFIG_RESET_BUTTON_LABEL
++#define CONFIG_RESET_BUTTON_LABEL "reset"
++#endif
++
+ DECLARE_GLOBAL_DATA_PTR;
+ int board_init(void)
+@@ -19,7 +25,15 @@ int board_init(void)
+ int board_late_init(void)
+ {
+-      gd->env_valid = 1; //to load environment variable from persistent store
++      struct udevice *dev;
++      int ret;
++
++      ret = !!button_get_by_label(CONFIG_RESET_BUTTON_LABEL, &dev);
++
++      if (!ret)
++              ret = !button_get_state(dev);
++
++      gd->env_valid = ret; //to load environment variable from persistent store
+       env_relocate();
+       return 0;
+ }
index a2680e56fd5352122860722923131e7f27baee02..7071a6c410af4da1f6215c0a664c16a1afe5efe2 100644 (file)
@@ -1,6 +1,6 @@
---- a/Makefile 2020-10-13 13:39:06.471438591 +0800
-+++ b/Makefile 2020-10-13 13:39:39.190798462 +0800
-@@ -1725,6 +1725,10 @@
+--- a/Makefile
++++ b/Makefile
+@@ -1716,6 +1716,10 @@ u-boot-elf.lds: arch/u-boot-elf.lds prep
  
  ifeq ($(CONFIG_SPL),y)
  spl/u-boot-spl-mtk.bin: spl/u-boot-spl
index ec189f82dcf148fcf89b20069081097b679d3d4e..37d1b6a671727de567c177c7bafa6b32ee74f13e 100644 (file)
@@ -1,5 +1,3 @@
-diff --git a/configs/mt7623n_bpir2_defconfig b/configs/mt7623n_bpir2_defconfig
-index 6b9fbd7e22..fb2a004803 100644
 --- a/configs/mt7623a_unielec_u7623_02_defconfig
 +++ b/configs/mt7623a_unielec_u7623_02_defconfig
 @@ -52,3 +52,12 @@ CONFIG_TIMER=y
diff --git a/package/boot/uboot-mediatek/patches/020-add-linksys-e8450.patch b/package/boot/uboot-mediatek/patches/020-add-linksys-e8450.patch
new file mode 100644 (file)
index 0000000..711c1e6
--- /dev/null
@@ -0,0 +1,436 @@
+--- /dev/null
++++ b/configs/mt7622_linksys_e8450_defconfig
+@@ -0,0 +1,130 @@
++CONFIG_ARM=y
++CONFIG_POSITION_INDEPENDENT=y
++CONFIG_ARCH_MEDIATEK=y
++CONFIG_SYS_TEXT_BASE=0x41e00000
++CONFIG_SYS_MALLOC_F_LEN=0x4000
++CONFIG_USE_DEFAULT_ENV_FILE=y
++CONFIG_BOARD_LATE_INIT=y
++CONFIG_BOOTP_SEND_HOSTNAME=y
++CONFIG_DEFAULT_ENV_FILE="linksys_e8450_env"
++CONFIG_NR_DRAM_BANKS=1
++CONFIG_DEFAULT_DEVICE_TREE="mt7622-linksys-e8450-ubi"
++CONFIG_SMBIOS_PRODUCT_NAME=""
++CONFIG_AUTOBOOT_KEYED=y
++CONFIG_BOOTDELAY=30
++CONFIG_AUTOBOOT_MENU_SHOW=y
++CONFIG_CFB_CONSOLE_ANSI=y
++CONFIG_BUTTON=y
++CONFIG_BUTTON_GPIO=y
++CONFIG_CMD_ENV_FLAGS=y
++CONFIG_FIT=y
++CONFIG_FIT_ENABLE_SHA256_SUPPORT=y
++CONFIG_LED=y
++CONFIG_LED_BLINK=y
++CONFIG_LED_GPIO=y
++CONFIG_LOGLEVEL=7
++CONFIG_LOG=y
++CONFIG_DEFAULT_FDT_FILE="mt7622-linksys-e8450"
++CONFIG_SYS_PROMPT="MT7622> "
++CONFIG_CMD_BOOTMENU=y
++CONFIG_CMD_BOOTP=y
++CONFIG_CMD_BUTTON=y
++CONFIG_CMD_CDP=y
++CONFIG_CMD_DHCP=y
++CONFIG_CMD_DNS=y
++CONFIG_CMD_ECHO=y
++CONFIG_CMD_ENV_READMEM=y
++CONFIG_CMD_ERASEENV=y
++CONFIG_CMD_EXT4=y
++CONFIG_CMD_FAT=y
++CONFIG_CMD_FS_GENERIC=y
++CONFIG_CMD_FS_UUID=y
++CONFIG_CMD_GPIO=y
++CONFIG_CMD_GPT=y
++CONFIG_CMD_HASH=y
++CONFIG_CMD_ITEST=y
++CONFIG_CMD_LED=y
++CONFIG_CMD_LICENSE=y
++CONFIG_CMD_LINK_LOCAL=y
++CONFIG_CMD_MBR=y
++CONFIG_CMD_MTD=y
++CONFIG_CMD_MTDPART=y
++CONFIG_CMD_NAND=y
++CONFIG_CMD_PCI=y
++CONFIG_CMD_SF_TEST=y
++CONFIG_CMD_PING=y
++CONFIG_CMD_PXE=y
++CONFIG_CMD_SMC=y
++CONFIG_CMD_TFTPBOOT=y
++CONFIG_CMD_TFTPSRV=y
++CONFIG_CMD_UBI=y
++CONFIG_CMD_UBI_RENAME=y
++CONFIG_CMD_UBIFS=y
++CONFIG_CMD_ASKENV=y
++CONFIG_CMD_PART=y
++CONFIG_CMD_PSTORE=y
++CONFIG_CMD_RARP=y
++CONFIG_CMD_SETEXPR=y
++CONFIG_CMD_SLEEP=y
++CONFIG_CMD_SNTP=y
++CONFIG_CMD_SOURCE=y
++CONFIG_CMD_USB=y
++CONFIG_CMD_UUID=y
++CONFIG_DISPLAY_CPUINFO=y
++CONFIG_DM_REGULATOR=y
++CONFIG_DM_REGULATOR_FIXED=y
++CONFIG_DM_REGULATOR_GPIO=y
++CONFIG_DM_USB=y
++CONFIG_HUSH_PARSER=y
++CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
++CONFIG_SYS_RELOC_GD_ENV_ADDR=y
++CONFIG_ENV_IS_IN_UBI=y
++CONFIG_ENV_UBI_PART="ubi"
++CONFIG_ENV_UBI_VOLUME="ubootenv"
++CONFIG_ENV_UBI_VOLUME_REDUND="ubootenv2"
++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
++CONFIG_VERSION_VARIABLE=y
++CONFIG_PARTITION_UUIDS=y
++CONFIG_NETCONSOLE=y
++CONFIG_REGMAP=y
++CONFIG_SYSCON=y
++CONFIG_CLK=y
++CONFIG_DM_MTD=y
++CONFIG_PHY_FIXED=y
++CONFIG_DM_ETH=y
++CONFIG_MEDIATEK_ETH=y
++CONFIG_PCI=y
++CONFIG_MTD=y
++CONFIG_MTD_RAW_NAND=y
++CONFIG_MTD_UBI_FASTMAP=y
++CONFIG_DM_PCI=y
++CONFIG_PCIE_MEDIATEK=y
++CONFIG_PINCTRL=y
++CONFIG_PINCONF=y
++CONFIG_PINCTRL_MT7622=y
++CONFIG_POWER_DOMAIN=y
++CONFIG_PRE_CONSOLE_BUFFER=y
++CONFIG_PRE_CON_BUF_ADDR=0x4007EF00
++CONFIG_MTK_POWER_DOMAIN=y
++CONFIG_RAM=y
++CONFIG_DM_SERIAL=y
++CONFIG_MTK_SERIAL=y
++CONFIG_SPI=y
++CONFIG_DM_SPI=y
++CONFIG_MTK_SNFI_SPI=y
++CONFIG_MTK_SPI_NAND=y
++CONFIG_NAND_SUPPORT=y
++CONFIG_SYSRESET_WATCHDOG=y
++CONFIG_TIMER=y
++CONFIG_MTK_TIMER=y
++CONFIG_WDT_MTK=y
++CONFIG_LZO=y
++CONFIG_ZSTD=y
++CONFIG_HEXDUMP=y
++CONFIG_RANDOM_UUID=y
++CONFIG_REGEX=y
++CONFIG_USB=y
++CONFIG_USB_HOST=y
++CONFIG_USB_XHCI_HCD=y
++CONFIG_USB_XHCI_MTK=y
++CONFIG_USB_STORAGE=y
+--- /dev/null
++++ b/arch/arm/dts/mt7622-linksys-e8450-ubi.dts
+@@ -0,0 +1,206 @@
++// SPDX-License-Identifier: GPL-2.0
++/*
++ * Copyright (c) 2019 MediaTek Inc.
++ * Author: Sam Shih <sam.shih@mediatek.com>
++ */
++
++/dts-v1/;
++#include "mt7622.dtsi"
++#include "mt7622-u-boot.dtsi"
++
++/ {
++      #address-cells = <1>;
++      #size-cells = <1>;
++      model = "mt7622-linksys-e8450-ubi";
++      compatible = "mediatek,mt7622", "linksys,e8450-ubi";
++      chosen {
++              stdout-path = &uart0;
++              tick-timer = &timer0;
++      };
++
++      aliases {
++              spi0 = &snfi;
++      };
++
++      gpio-keys {
++              compatible = "gpio-keys";
++
++              factory {
++                      label = "reset";
++                      gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
++              };
++
++              wps {
++                      label = "wps";
++                      gpios = <&gpio 102 GPIO_ACTIVE_LOW>;
++              };
++      };
++
++      gpio-leds {
++              compatible = "gpio-leds";
++
++              led_power: power_blue {
++                      label = "power:blue";
++                      gpios = <&gpio 95 GPIO_ACTIVE_LOW>;
++                      default-state = "on";
++              };
++
++              power_orange {
++                      label = "power:orange";
++                      gpios = <&gpio 96 GPIO_ACTIVE_LOW>;
++                      default-state = "off";
++              };
++
++              inet_blue {
++                      label = "inet:blue";
++                      gpios = <&gpio 97 GPIO_ACTIVE_LOW>;
++                      default-state = "off";
++              };
++
++              inet_orange {
++                      label = "inet:orange";
++                      gpios = <&gpio 98 GPIO_ACTIVE_LOW>;
++                      default-state = "off";
++              };
++      };
++
++      memory@40000000 {
++              device_type = "memory";
++              reg = <0x40000000 0x20000000>;
++      };
++
++      reg_1p8v: regulator-1p8v {
++              compatible = "regulator-fixed";
++              regulator-name = "fixed-1.8V";
++              regulator-min-microvolt = <1800000>;
++              regulator-max-microvolt = <1800000>;
++              regulator-boot-on;
++              regulator-always-on;
++      };
++
++      reg_3p3v: regulator-3p3v {
++              compatible = "regulator-fixed";
++              regulator-name = "fixed-3.3V";
++              regulator-min-microvolt = <3300000>;
++              regulator-max-microvolt = <3300000>;
++              regulator-boot-on;
++              regulator-always-on;
++      };
++
++      reg_5v: regulator-5v {
++              compatible = "regulator-fixed";
++              regulator-name = "fixed-5V";
++              regulator-min-microvolt = <5000000>;
++              regulator-max-microvolt = <5000000>;
++              regulator-boot-on;
++              regulator-always-on;
++      };
++};
++
++&pcie {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pcie0_pins>, <&pcie1_pins>;
++      status = "okay";
++
++      pcie@0,0 {
++              status = "okay";
++      };
++
++      pcie@1,0 {
++              status = "okay";
++      };
++};
++
++&pinctrl {
++      pcie0_pins: pcie0-pins {
++              mux {
++                      function = "pcie";
++                      groups = "pcie0_pad_perst",
++                               "pcie0_1_waken",
++                               "pcie0_1_clkreq";
++              };
++      };
++
++      pcie1_pins: pcie1-pins {
++              mux {
++                      function = "pcie";
++                      groups = "pcie1_pad_perst",
++                               "pcie1_0_waken",
++                               "pcie1_0_clkreq";
++              };
++      };
++
++      snfi_pins: snfi-pins {
++              mux {
++                      function = "flash";
++                      groups = "snfi";
++              };
++      };
++
++      uart0_pins: uart0 {
++              mux {
++                      function = "uart";
++                      groups = "uart0_0_tx_rx" ;
++              };
++      };
++
++      watchdog_pins: watchdog-default {
++              mux {
++                      function = "watchdog";
++                      groups = "watchdog";
++              };
++      };
++};
++
++&snfi {
++      pinctrl-names = "default";
++      pinctrl-0 = <&snfi_pins>;
++      status = "okay";
++
++      mediatek,bmt-v2;
++
++      spi-flash@0{
++              compatible = "jedec,spi-nor";
++              reg = <0>;
++              u-boot,dm-pre-reloc;
++      };
++};
++
++&nandc {
++      status = "okay";
++};
++
++&uart0 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&uart0_pins>;
++      status = "okay";
++};
++
++&watchdog {
++      pinctrl-names = "default";
++      pinctrl-0 = <&watchdog_pins>;
++      status = "okay";
++};
++
++&eth {
++      status = "okay";
++      mediatek,gmac-id = <0>;
++      phy-mode = "sgmii";
++      mediatek,switch = "mt7531";
++      reset-gpios = <&gpio 54 GPIO_ACTIVE_HIGH>;
++
++      fixed-link {
++              speed = <1000>;
++              full-duplex;
++      };
++};
++
++&ssusb {
++      vusb33-supply = <&reg_3p3v>;
++      vbus-supply = <&reg_5v>;
++      status = "okay";
++};
++
++&u3phy {
++      status = "okay";
++};
+--- a/arch/arm/dts/Makefile
++++ b/arch/arm/dts/Makefile
+@@ -963,6 +963,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
+       mt7622-rfb.dtb \
+       mt7623a-unielec-u7623-02-emmc.dtb \
+       mt7622-bananapi-bpi-r64.dtb \
++      mt7622-linksys-e8450-ubi.dtb \
+       mt7623n-bananapi-bpi-r2.dtb \
+       mt7629-rfb.dtb \
+       mt8512-bm1-emmc.dtb \
+--- a/drivers/mtd/nandx/core/nand/device_spi.c
++++ b/drivers/mtd/nandx/core/nand/device_spi.c
+@@ -150,6 +150,21 @@ static struct device_spi spi_nand[] = {
+               &spi_extend_cmds, 0xff, 0xff
+       },
+       {
++              NAND_DEVICE("FM35X1GA",
++                          NAND_PACK_ID(0xe5, 0x71, 0, 0, 0, 0, 0, 0),
++                          2, 0, 3, 3,
++                          1, 1, 1, 1024, KB(128), KB(2), 64, 1,
++                          &spi_cmds, &spi_addressing, &spi_status[0],
++                          &spi_endurance, &spi_array_timing),
++              {
++                      NAND_SPI_PROTECT(0xa0, 1, 2, 6),
++                      NAND_SPI_CONFIG(0xb0, 4, 6, 1),
++                      NAND_SPI_STATUS(0xc0, 4, 5),
++                      NAND_SPI_CHARACTER(0xff, 0xff, 0xff, 0xff)
++              },
++              &spi_extend_cmds, 0xff, 0xff
++      },
++      {
+               NAND_DEVICE("NO-DEVICE",
+                           NAND_PACK_ID(0, 0, 0, 0, 0, 0, 0, 0), 0, 0, 0, 0,
+                           0, 0, 0, 0, 0, 0, 0, 1,
+--- /dev/null
++++ b/linksys_e8450_env
+@@ -0,0 +1,57 @@
++mtdparts=nand0:512k(bl2),1280k(fip),1024k(factory),256k(reserved),-(ubi)
++ethaddr_factory=nand read 0x40080000 0x220000 0x20000 && env readmem -b ethaddr 0x4009fff4 0x6 ; setenv ethaddr_factory
++ipaddr=192.168.1.1
++serverip=192.168.1.254
++loadaddr=0x4007ff28
++bootcmd=run boot_ubi
++bootdelay=0
++bootfile=openwrt-mediatek-mt7622-linksys_e8450-ubi-initramfs-recovery.itb
++bootfile_bl2=openwrt-mediatek-mt7622-linksys_e8450-ubi-preloader.bin
++bootfile_fip=openwrt-mediatek-mt7622-linksys_e8450-ubi-bl31-uboot.fip
++bootfile_upg=openwrt-mediatek-mt7622-linksys_e8450-ubi-squashfs-sysupgrade.itb
++bootmenu_confirm_return=askenv - Press ENTER to return to menu ; bootmenu
++bootmenu_default=0
++bootmenu_delay=0
++bootmenu_title=      \e[0;34m( ( ( \e[1;39mOpenWrt\e[0;34m ) ) )\e[0m
++bootmenu_0=0. Initialize environment.=run _firstboot
++bootmenu_0d=0. Run default boot command.=run boot_default
++bootmenu_1=1. Boot system via TFTP.=run boot_tftp ; run bootmenu_confirm_return
++bootmenu_3=2. Boot production system from flash.=run boot_production ; run bootmenu_confirm_return
++bootmenu_2=3. Boot recovery system from flash.=run boot_recovery ; run bootmenu_confirm_return
++bootmenu_5=4. Load production system via TFTP then write to flash.=setenv noboot 1 ; run boot_tftp_production ; setenv noboot ; run bootmenu_confirm_return
++bootmenu_4=5. Load recovery system via TFTP then write to flash.=setenv noboot 1 ; run boot_tftp_recovery ; setenv noboot ; run bootmenu_confirm_return
++bootmenu_6=\e[31m6. Load BL31+U-Boot FIP via TFTP then write to flash.\e[0m=run boot_tftp_write_fip ; run bootmenu_confirm_return
++bootmenu_7=\e[31m7. Load BL2 preloader via TFTP then write to flash.\e[0m=run boot_tftp_write_preloader ; run bootmenu_confirm_return
++bootmenu_8=8. Reboot.=reset
++bootmenu_9=9. Reset all settings to factory defaults.=run reset_factory ; reset
++boot_first=if button reset ; then run boot_tftp_forever ; fi ; setenv flag_recover 1 ; bootmenu
++boot_default=if env exists flag_recover ; then else run bootcmd ; fi ; run boot_recovery ; run boot_tftp_forever
++boot_production=led power:blue on ; run ubi_read_production && bootm $loadaddr
++boot_production_or_recovery=run boot_production ; run boot_recovery
++boot_recovery=led power:blue off ; led power:orange on ; run check_recovery
++boot_serial_write_fip=loadx $loadaddr 115200 && run boot_write_fip
++boot_serial_write_preloader=loadx $loadaddr 115200 && run boot_write_preloader
++boot_tftp_forever=led inet:blue on ; while true ; do run boot_tftp_recovery ; led inet:blue off ; led inet:orange on ; sleep 1 ; done
++boot_tftp_production=tftpboot $loadaddr $bootfile_upg && iminfo $loadaddr && ubi part ubi && run ubi_write_production ubi_prepare_rootfs ; if env exists noboot ; then else bootm $loadaddr ; fi
++boot_tftp_recovery=tftpboot $loadaddr $bootfile && iminfo $loadaddr && ubi part ubi && run ubi_write_recovery ; if env exists noboot ; then else bootm $loadaddr ; fi
++boot_tftp=tftpboot $loadaddr $bootfile && bootm $loadaddr
++boot_tftp_write_fip=tftpboot $loadaddr $bootfile_fip && run boot_write_fip
++boot_tftp_write_preloader=tftpboot $loadaddr $bootfile_bl2 && run boot_write_preloader
++boot_ubi=ubi part ubi && run boot_production_or_recovery
++boot_write_fip=nand erase 0x80000 0x140000 && nand write $loadaddr 0x80000 0x140000
++boot_write_preloader=nand erase 0x0 0x80000 && nand write $loadaddr 0x0 0x20000 && nand write $loadaddr 0x20000 0x20000 && nand write $loadaddr 0x40000 0x20000 && nand write $loadaddr 0x60000 0x20000
++check_recovery=run ubi_read_recovery ; if iminfo $loadaddr ; then bootm $loadaddr ; else ubi remove recovery ; fi
++check_ubi=ubi part ubi || run ubi_format
++reset_factory=ubi part ubi ; ubi write 0x0 ubootenv 0x0 ; ubi write 0x0 ubootenv2 0x0 ; ubi remove rootfs_data
++ubi_format=ubi detach ; nand erase 0x300000 0x7D00000 && ubi part ubi ; reset
++ubi_prepare_rootfs=if ubi check rootfs_data ; then else if env exists rootfs_data_max ; then ubi create rootfs_data $rootfs_data_max dynamic || ubi create rootfs_data - dynamic ; else ubi create rootfs_data - dynamic ; fi ; fi
++ubi_read_production=ubi read $loadaddr fit && iminfo $loadaddr && run ubi_prepare_rootfs
++ubi_read_recovery=ubi check recovery && ubi read $loadaddr recovery
++ubi_remove_rootfs=ubi check rootfs_data && ubi remove rootfs_data
++ubi_write_production=run ubi_remove_rootfs ; ubi check fit && ubi remove fit ; run ubi_remove_rootfs ; ubi create fit $filesize dynamic && ubi write $loadaddr fit $filesize
++ubi_write_recovery=run ubi_remove_rootfs ; ubi check recovery && ubi remove recovery; ubi create recovery $filesize dynamic && ubi write $loadaddr recovery $filesize
++_create_env=ubi create ubootenv 0x100000 dynamic ; ubi create ubootenv2 0x100000 dynamic
++_init_env=setenv _init_env ; if ubi check ubootenv && ubi check ubootenv2 ; then else run _create_env ; fi ; setenv _create_env ; saveenv || run ubi_format ; saveenv || run ubi_format
++_firstboot=setenv _firstboot ; led power:orange on ; run _switch_to_menu ; run ethaddr_factory ; run check_ubi ; run _init_env ; run boot_first
++_switch_to_menu=setenv _switch_to_menu ; setenv bootdelay 3 ; setenv bootmenu_delay 3 ; setenv bootmenu_0 $bootmenu_0d ; setenv bootmenu_0d ; run _bootmenu_update_title
++_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title       \e[33m$ver\e[0m"
diff --git a/package/boot/uboot-mediatek/patches/100-increase-CONFIG_SYS_BOOTM_LEN.patch b/package/boot/uboot-mediatek/patches/100-increase-CONFIG_SYS_BOOTM_LEN.patch
new file mode 100644 (file)
index 0000000..811e848
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/include/configs/mt7622.h
++++ b/include/configs/mt7622.h
+@@ -37,7 +37,7 @@
+ #endif
+ #define CONFIG_SYS_MAXARGS            8
+-#define CONFIG_SYS_BOOTM_LEN          SZ_64M
++#define CONFIG_SYS_BOOTM_LEN          SZ_128M
+ #define CONFIG_SYS_CBSIZE             SZ_1K
+ #define CONFIG_SYS_PBSIZE             (CONFIG_SYS_CBSIZE +    \
+                                       sizeof(CONFIG_SYS_PROMPT) + 16)