uboot-mediatek: update to v2025.07

Update to the latest version.

Suppressed patch:
  100-04-env-add-support-for-generic-MTD-device.patch[1]

[1] 03fb08d4ae

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
This commit is contained in:
Shiji Yang 2025-06-10 23:59:39 +08:00 committed by Daniel Golle
parent c5a6dc31d2
commit 41a9c9de66
23 changed files with 85 additions and 478 deletions

View file

@ -1,8 +1,8 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/kernel.mk
PKG_VERSION:=2025.04 PKG_VERSION:=2025.07
PKG_HASH:=439d3bef296effd54130be6a731c5b118be7fddd7fcc663ccbc5fb18294d8718 PKG_HASH:=0f933f6c5a426895bf306e93e6ac53c60870e4b54cda56d95211bec99e63bec7
PKG_BUILD_DEPENDS:=!(TARGET_ramips||TARGET_mediatek_mt7623):arm-trusted-firmware-tools/host PKG_BUILD_DEPENDS:=!(TARGET_ramips||TARGET_mediatek_mt7623):arm-trusted-firmware-tools/host
UBOOT_USE_INTREE_DTC:=1 UBOOT_USE_INTREE_DTC:=1

View file

@ -1,390 +0,0 @@
From efc3e6f5d29f87a433b42f15a0b87e04b7cd498d Mon Sep 17 00:00:00 2001
From: Weijie Gao <weijie.gao@mediatek.com>
Date: Wed, 3 Mar 2021 10:11:32 +0800
Subject: [PATCH 38/71] env: add support for generic MTD device
Add an env driver for generic MTD device.
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
---
cmd/nvedit.c | 3 +-
env/Kconfig | 37 +++++-
env/Makefile | 1 +
env/env.c | 3 +
env/mtd.c | 256 +++++++++++++++++++++++++++++++++++++++++
include/env_internal.h | 1 +
tools/Makefile | 1 +
7 files changed, 299 insertions(+), 3 deletions(-)
create mode 100644 env/mtd.c
--- a/env/Kconfig
+++ b/env/Kconfig
@@ -74,7 +74,7 @@ config ENV_IS_DEFAULT
!ENV_IS_IN_MMC && !ENV_IS_IN_NAND && \
!ENV_IS_IN_NVRAM && !ENV_IS_IN_ONENAND && \
!ENV_IS_IN_REMOTE && !ENV_IS_IN_SPI_FLASH && \
- !ENV_IS_IN_UBI
+ !ENV_IS_IN_UBI && !ENV_IS_IN_MTD
select ENV_IS_NOWHERE
config ENV_IS_NOWHERE
@@ -267,6 +267,27 @@ config ENV_IS_IN_MMC
offset: "u-boot,mmc-env-offset", "u-boot,mmc-env-offset-redundant".
CONFIG_ENV_OFFSET and CONFIG_ENV_OFFSET_REDUND are not used.
+config ENV_IS_IN_MTD
+ bool "Environment in a MTD device"
+ depends on !CHAIN_OF_TRUST
+ depends on MTD
+ help
+ Define this if you have a MTD device which you want to use for
+ the environment.
+
+ - CONFIG_ENV_MTD_NAME:
+ - CONFIG_ENV_OFFSET:
+ - CONFIG_ENV_SIZE:
+
+ These three #defines specify the MTD device where the environment
+ is stored, offset and size of the environment area within the MTD
+ device. CONFIG_ENV_OFFSET must be aligned to an erase block boundary.
+
+ - CONFIG_ENV_SIZE_REDUND:
+
+ This #define specify the maximum size allowed for read/write/erase
+ with skipped bad blocks starting from ENV_OFFSET.
+
config ENV_IS_IN_NAND
bool "Environment in a NAND device"
depends on !CHAIN_OF_TRUST
@@ -574,10 +595,16 @@ config ENV_ADDR_REDUND
Offset from the start of the device (or partition) of the redundant
environment location.
+config ENV_MTD_NAME
+ string "Name of the MTD device storing the environment"
+ depends on ENV_IS_IN_MTD
+ help
+ Name of the MTD device that stores the environment
+
config ENV_OFFSET
hex "Environment offset"
depends on ENV_IS_IN_EEPROM || ENV_IS_IN_MMC || ENV_IS_IN_NAND || \
- ENV_IS_IN_SPI_FLASH
+ ENV_IS_IN_SPI_FLASH || ENV_IS_IN_MTD
default 0x3f8000 if ARCH_ROCKCHIP && ENV_IS_IN_MMC
default 0x140000 if ARCH_ROCKCHIP && ENV_IS_IN_SPI_FLASH
default 0xF0000 if ARCH_SUNXI
@@ -635,6 +662,12 @@ config ENV_SECT_SIZE
help
Size of the sector containing the environment.
+config ENV_SIZE_REDUND
+ hex "Redundant environment size"
+ depends on ENV_IS_IN_MTD
+ help
+ The maximum size allowed for read/write/erase with skipped bad blocks.
+
config ENV_UBI_PART
string "UBI partition name"
depends on ENV_IS_IN_UBI
--- a/env/Makefile
+++ b/env/Makefile
@@ -24,6 +24,7 @@ obj-$(CONFIG_$(PHASE_)ENV_IS_NOWHERE) +=
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_MMC) += mmc.o
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_FAT) += fat.o
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_EXT4) += ext4.o
+obj-$(CONFIG_$(PHASE_)ENV_IS_IN_MTD) += mtd.o
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_NAND) += nand.o
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_SPI_FLASH) += sf.o
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_FLASH) += flash.o
--- a/env/env.c
+++ b/env/env.c
@@ -46,6 +46,9 @@ static enum env_location env_locations[]
#ifdef CONFIG_ENV_IS_IN_MMC
ENVL_MMC,
#endif
+#ifdef CONFIG_ENV_IS_IN_MTD
+ ENVL_MTD,
+#endif
#ifdef CONFIG_ENV_IS_IN_NAND
ENVL_NAND,
#endif
--- /dev/null
+++ b/env/mtd.c
@@ -0,0 +1,256 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2021 MediaTek Inc. All Rights Reserved.
+ *
+ * Author: Weijie Gao <weijie.gao@mediatek.com>
+ */
+
+#include <command.h>
+#include <env.h>
+#include <env_internal.h>
+#include <errno.h>
+#include <linux/kernel.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
+#include <linux/mtd/mtd.h>
+#include <malloc.h>
+#include <memalign.h>
+#include <mtd.h>
+#include <search.h>
+
+#if CONFIG_ENV_SIZE_REDUND < CONFIG_ENV_SIZE
+#undef CONFIG_ENV_SIZE_REDUND
+#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
+#endif
+
+#if defined(ENV_IS_EMBEDDED)
+env_t *env_ptr = &environment;
+#else /* ! ENV_IS_EMBEDDED */
+env_t *env_ptr;
+#endif /* ENV_IS_EMBEDDED */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static int env_mtd_init(void)
+{
+#if defined(ENV_IS_EMBEDDED)
+ int crc1_ok = 0, crc2_ok = 0;
+ env_t *tmp_env1;
+
+ tmp_env1 = env_ptr;
+ crc1_ok = crc32(0, tmp_env1->data, ENV_SIZE) == tmp_env1->crc;
+
+ if (!crc1_ok && !crc2_ok) {
+ gd->env_addr = 0;
+ gd->env_valid = ENV_INVALID;
+
+ return 0;
+ } else if (crc1_ok && !crc2_ok) {
+ gd->env_valid = ENV_VALID;
+ }
+
+ if (gd->env_valid == ENV_VALID)
+ env_ptr = tmp_env1;
+
+ gd->env_addr = (ulong)env_ptr->data;
+
+#else /* ENV_IS_EMBEDDED */
+ gd->env_addr = (ulong)&default_environment[0];
+ gd->env_valid = ENV_VALID;
+#endif /* ENV_IS_EMBEDDED */
+
+ return 0;
+}
+
+static struct mtd_info *env_mtd_get_dev(void)
+{
+ struct mtd_info *mtd;
+
+ mtd_probe_devices();
+
+ mtd = get_mtd_device_nm(CONFIG_ENV_MTD_NAME);
+ if (IS_ERR(mtd) || !mtd) {
+ printf("MTD device '%s' not found\n", CONFIG_ENV_MTD_NAME);
+ return NULL;
+ }
+
+ return mtd;
+}
+
+static inline bool mtd_addr_is_block_aligned(struct mtd_info *mtd, u64 addr)
+{
+ return (addr & mtd->erasesize_mask) == 0;
+}
+
+static int mtd_io_skip_bad(struct mtd_info *mtd, bool read, loff_t offset,
+ size_t length, size_t redund, u8 *buffer)
+{
+ struct mtd_oob_ops io_op = {};
+ size_t remaining = length;
+ loff_t off, end;
+ int ret;
+
+ io_op.mode = MTD_OPS_PLACE_OOB;
+ io_op.len = mtd->writesize;
+ io_op.datbuf = (void *)buffer;
+
+ /* Search for the first good block after the given offset */
+ off = offset;
+ end = (off + redund) | (mtd->erasesize - 1);
+ while (mtd_block_isbad(mtd, off) && off < end)
+ off += mtd->erasesize;
+
+ /* Reached end position */
+ if (off >= end)
+ return -EIO;
+
+ /* Loop over the pages to do the actual read/write */
+ while (remaining) {
+ /* Skip the block if it is bad */
+ if (mtd_addr_is_block_aligned(mtd, off) &&
+ mtd_block_isbad(mtd, off)) {
+ off += mtd->erasesize;
+ continue;
+ }
+
+ if (read)
+ ret = mtd_read_oob(mtd, off, &io_op);
+ else
+ ret = mtd_write_oob(mtd, off, &io_op);
+
+ if (ret) {
+ printf("Failure while %s at offset 0x%llx\n",
+ read ? "reading" : "writing", off);
+ break;
+ }
+
+ off += io_op.retlen;
+ remaining -= io_op.retlen;
+ io_op.datbuf += io_op.retlen;
+ io_op.oobbuf += io_op.oobretlen;
+
+ /* Reached end position */
+ if (off >= end)
+ return -EIO;
+ }
+
+ return 0;
+}
+
+#ifdef CONFIG_CMD_SAVEENV
+static int mtd_erase_skip_bad(struct mtd_info *mtd, loff_t offset,
+ size_t length, size_t redund)
+{
+ struct erase_info erase_op = {};
+ loff_t end = (offset + redund) | (mtd->erasesize - 1);
+ int ret;
+
+ erase_op.mtd = mtd;
+ erase_op.addr = offset;
+ erase_op.len = length;
+
+ while (erase_op.len) {
+ ret = mtd_erase(mtd, &erase_op);
+
+ /* Abort if its not a bad block error */
+ if (ret != -EIO)
+ return ret;
+
+ printf("Skipping bad block at 0x%08llx\n", erase_op.fail_addr);
+
+ /* Skip bad block and continue behind it */
+ erase_op.len -= erase_op.fail_addr - erase_op.addr;
+ erase_op.len -= mtd->erasesize;
+ erase_op.addr = erase_op.fail_addr + mtd->erasesize;
+
+ /* Reached end position */
+ if (erase_op.addr >= end)
+ return -EIO;
+ }
+
+ return 0;
+}
+
+static int env_mtd_save(void)
+{
+ ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
+ struct mtd_info *mtd;
+ int ret = 0;
+
+ ret = env_export(env_new);
+ if (ret)
+ return ret;
+
+ mtd = env_mtd_get_dev();
+ if (!mtd)
+ return 1;
+
+ printf("Erasing on MTD device '%s'... ", mtd->name);
+
+ ret = mtd_erase_skip_bad(mtd, CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+ CONFIG_ENV_SIZE_REDUND);
+
+ puts(ret ? "FAILED\n" : "OK\n");
+
+ if (ret) {
+ put_mtd_device(mtd);
+ return 1;
+ }
+
+ printf("Writing to MTD device '%s'... ", mtd->name);
+
+ ret = mtd_io_skip_bad(mtd, false, CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
+ CONFIG_ENV_SIZE_REDUND, (u8 *)env_new);
+
+ puts(ret ? "FAILED\n" : "OK\n");
+
+ put_mtd_device(mtd);
+
+ return !!ret;
+}
+#endif /* CONFIG_CMD_SAVEENV */
+
+static int readenv(size_t offset, u_char *buf)
+{
+ struct mtd_info *mtd;
+ int ret;
+
+ mtd = env_mtd_get_dev();
+ if (!mtd)
+ return 1;
+
+ ret = mtd_io_skip_bad(mtd, true, offset, CONFIG_ENV_SIZE,
+ CONFIG_ENV_SIZE_REDUND, buf);
+
+ put_mtd_device(mtd);
+
+ return !!ret;
+}
+
+static int env_mtd_load(void)
+{
+#if !defined(ENV_IS_EMBEDDED)
+ ALLOC_CACHE_ALIGN_BUFFER(char, buf, CONFIG_ENV_SIZE);
+ int ret;
+
+ ret = readenv(CONFIG_ENV_OFFSET, (u_char *)buf);
+ if (ret) {
+ env_set_default("readenv() failed", 0);
+ return -EIO;
+ }
+
+ return env_import(buf, 1, H_EXTERNAL);
+#endif /* ! ENV_IS_EMBEDDED */
+
+ return 0;
+}
+
+U_BOOT_ENV_LOCATION(mtd) = {
+ .location = ENVL_MTD,
+ ENV_NAME("MTD")
+ .load = env_mtd_load,
+#if defined(CONFIG_CMD_SAVEENV)
+ .save = env_save_ptr(env_mtd_save),
+#endif
+ .init = env_mtd_init,
+};
--- a/include/env_internal.h
+++ b/include/env_internal.h
@@ -108,6 +108,7 @@ enum env_location {
ENVL_FAT,
ENVL_FLASH,
ENVL_MMC,
+ ENVL_MTD,
ENVL_NAND,
ENVL_NVRAM,
ENVL_ONENAND,
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -37,6 +37,7 @@ subdir-$(HOST_TOOLS_ALL) += gdb
ENVCRC-$(CONFIG_ENV_IS_IN_EEPROM) = y
ENVCRC-$(CONFIG_ENV_IS_IN_FLASH) = y
ENVCRC-$(CONFIG_ENV_IS_IN_ONENAND) = y
+ENVCRC-$(CONFIG_ENV_IS_IN_MTD) = y
ENVCRC-$(CONFIG_ENV_IS_IN_NAND) = y
ENVCRC-$(CONFIG_ENV_IS_IN_NVRAM) = y
ENVCRC-$(CONFIG_ENV_IS_IN_SPI_FLASH) = y

View file

@ -13,7 +13,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
--- a/common/board_r.c --- a/common/board_r.c
+++ b/common/board_r.c +++ b/common/board_r.c
@@ -378,6 +378,20 @@ static int initr_nand(void) @@ -399,6 +399,20 @@ static int initr_nand(void)
} }
#endif #endif
@ -34,13 +34,13 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
#if defined(CONFIG_CMD_ONENAND) #if defined(CONFIG_CMD_ONENAND)
/* go init the NAND */ /* go init the NAND */
static int initr_onenand(void) static int initr_onenand(void)
@@ -693,6 +707,9 @@ static init_fnc_t init_sequence_r[] = { @@ -718,6 +732,9 @@ static void initcall_run_r(void)
#ifdef CONFIG_CMD_ONENAND #if CONFIG_IS_ENABLED(CMD_ONENAND)
initr_onenand, INITCALL(initr_onenand);
#endif #endif
+#ifdef CONFIG_NMBM_MTD +#if CONFIG_IS_ENABLED(NMBM_MTD)
+ initr_nmbm, + INITCALL(initr_nmbm);
+#endif +#endif
#ifdef CONFIG_MMC #if CONFIG_IS_ENABLED(MMC)
initr_mmc, INITCALL(initr_mmc);
#endif #endif

View file

@ -15,7 +15,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
--- a/cmd/Kconfig --- a/cmd/Kconfig
+++ b/cmd/Kconfig +++ b/cmd/Kconfig
@@ -1525,6 +1525,12 @@ config CMD_NAND_WATCH @@ -1535,6 +1535,12 @@ config CMD_NAND_WATCH
endif # CMD_NAND endif # CMD_NAND

View file

@ -27,7 +27,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
select ENV_IS_NOWHERE select ENV_IS_NOWHERE
config ENV_IS_NOWHERE config ENV_IS_NOWHERE
@@ -318,6 +318,21 @@ config ENV_IS_IN_NAND @@ -297,6 +297,21 @@ config ENV_IS_IN_NAND
Currently, CONFIG_ENV_OFFSET_REDUND is not supported when Currently, CONFIG_ENV_OFFSET_REDUND is not supported when
using CONFIG_ENV_OFFSET_OOB. using CONFIG_ENV_OFFSET_OOB.
@ -49,7 +49,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
config ENV_RANGE config ENV_RANGE
hex "Length of the region in which the environment can be written" hex "Length of the region in which the environment can be written"
depends on ENV_IS_IN_NAND depends on ENV_IS_IN_NAND
@@ -604,7 +619,7 @@ config ENV_MTD_NAME @@ -596,7 +611,7 @@ config ENV_ADDR_REDUND
config ENV_OFFSET config ENV_OFFSET
hex "Environment offset" hex "Environment offset"
depends on ENV_IS_IN_EEPROM || ENV_IS_IN_MMC || ENV_IS_IN_NAND || \ depends on ENV_IS_IN_EEPROM || ENV_IS_IN_MMC || ENV_IS_IN_NAND || \
@ -60,17 +60,17 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
default 0xF0000 if ARCH_SUNXI default 0xF0000 if ARCH_SUNXI
--- a/env/Makefile --- a/env/Makefile
+++ b/env/Makefile +++ b/env/Makefile
@@ -26,6 +26,7 @@ obj-$(CONFIG_$(PHASE_)ENV_IS_IN_FAT) += @@ -25,6 +25,7 @@ obj-$(CONFIG_$(PHASE_)ENV_IS_IN_MMC) +=
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_FAT) += fat.o
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_EXT4) += ext4.o obj-$(CONFIG_$(PHASE_)ENV_IS_IN_EXT4) += ext4.o
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_MTD) += mtd.o
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_NAND) += nand.o obj-$(CONFIG_$(PHASE_)ENV_IS_IN_NAND) += nand.o
+obj-$(CONFIG_$(PHASE_)ENV_IS_IN_NMBM) += nmbm.o +obj-$(CONFIG_$(PHASE_)ENV_IS_IN_NMBM) += nmbm.o
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_SPI_FLASH) += sf.o obj-$(CONFIG_$(PHASE_)ENV_IS_IN_SPI_FLASH) += sf.o
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_MTD) += mtd.o
obj-$(CONFIG_$(PHASE_)ENV_IS_IN_FLASH) += flash.o obj-$(CONFIG_$(PHASE_)ENV_IS_IN_FLASH) += flash.o
--- a/env/env.c --- a/env/env.c
+++ b/env/env.c +++ b/env/env.c
@@ -52,6 +52,9 @@ static enum env_location env_locations[] @@ -49,6 +49,9 @@ static enum env_location env_locations[]
#ifdef CONFIG_ENV_IS_IN_NAND #ifdef CONFIG_ENV_IS_IN_NAND
ENVL_NAND, ENVL_NAND,
#endif #endif
@ -240,9 +240,9 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
+}; +};
--- a/include/env_internal.h --- a/include/env_internal.h
+++ b/include/env_internal.h +++ b/include/env_internal.h
@@ -110,6 +110,7 @@ enum env_location { @@ -109,6 +109,7 @@ enum env_location {
ENVL_FLASH,
ENVL_MMC, ENVL_MMC,
ENVL_MTD,
ENVL_NAND, ENVL_NAND,
+ ENVL_NMBM, + ENVL_NMBM,
ENVL_NVRAM, ENVL_NVRAM,
@ -250,9 +250,9 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
ENVL_REMOTE, ENVL_REMOTE,
--- a/tools/Makefile --- a/tools/Makefile
+++ b/tools/Makefile +++ b/tools/Makefile
@@ -39,6 +39,7 @@ ENVCRC-$(CONFIG_ENV_IS_IN_FLASH) = y @@ -38,6 +38,7 @@ ENVCRC-$(CONFIG_ENV_IS_IN_EEPROM) = y
ENVCRC-$(CONFIG_ENV_IS_IN_FLASH) = y
ENVCRC-$(CONFIG_ENV_IS_IN_ONENAND) = y ENVCRC-$(CONFIG_ENV_IS_IN_ONENAND) = y
ENVCRC-$(CONFIG_ENV_IS_IN_MTD) = y
ENVCRC-$(CONFIG_ENV_IS_IN_NAND) = y ENVCRC-$(CONFIG_ENV_IS_IN_NAND) = y
+ENVCRC-$(CONFIG_ENV_IS_IN_NMBM) = y +ENVCRC-$(CONFIG_ENV_IS_IN_NMBM) = y
ENVCRC-$(CONFIG_ENV_IS_IN_NVRAM) = y ENVCRC-$(CONFIG_ENV_IS_IN_NVRAM) = y

View file

@ -26,7 +26,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
--- a/cmd/Kconfig --- a/cmd/Kconfig
+++ b/cmd/Kconfig +++ b/cmd/Kconfig
@@ -1525,6 +1525,14 @@ config CMD_NAND_WATCH @@ -1535,6 +1535,14 @@ config CMD_NAND_WATCH
endif # CMD_NAND endif # CMD_NAND

View file

@ -13,7 +13,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
--- a/drivers/mtd/spi/spi-nor-core.c --- a/drivers/mtd/spi/spi-nor-core.c
+++ b/drivers/mtd/spi/spi-nor-core.c +++ b/drivers/mtd/spi/spi-nor-core.c
@@ -3248,6 +3248,100 @@ static int spi_nor_init_params(struct sp @@ -3262,6 +3262,100 @@ static int spi_nor_init_params(struct sp
return 0; return 0;
} }
@ -114,7 +114,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
static int spi_nor_hwcaps2cmd(u32 hwcaps, const int table[][2], size_t size) static int spi_nor_hwcaps2cmd(u32 hwcaps, const int table[][2], size_t size)
{ {
size_t i; size_t i;
@@ -4450,6 +4544,7 @@ int spi_nor_scan(struct spi_nor *nor) @@ -4486,6 +4580,7 @@ int spi_nor_scan(struct spi_nor *nor)
nor->write = spi_nor_write_data; nor->write = spi_nor_write_data;
nor->read_reg = spi_nor_read_reg; nor->read_reg = spi_nor_read_reg;
nor->write_reg = spi_nor_write_reg; nor->write_reg = spi_nor_write_reg;

View file

@ -36,14 +36,11 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
else if (IS_ENABLED(CONFIG_CMD_SF_TEST) && !strcmp(cmd, "test")) else if (IS_ENABLED(CONFIG_CMD_SF_TEST) && !strcmp(cmd, "test"))
ret = do_spi_flash_test(argc, argv); ret = do_spi_flash_test(argc, argv);
else else
@@ -643,8 +653,9 @@ U_BOOT_LONGHELP(sf, @@ -638,6 +648,7 @@ U_BOOT_LONGHELP(sf,
"sf update addr offset|partition len - erase and write `len' bytes from memory\n"
" at `addr' to flash at `offset'\n"
" or to start of mtd `partition'\n"
+ "sf uuid - read uuid from flash\n"
#ifdef CONFIG_SPI_FLASH_LOCK
"sf protect lock/unlock sector len - protect/unprotect 'len' bytes starting\n"
" at address 'sector'" " at address 'sector'"
#endif
#ifdef CONFIG_CMD_SF_TEST
- "\nsf test offset len - run a very basic destructive test"
+ "\nsf test offset len - run a very basic destructive test"
#endif
+ "\nsf uuid - read uuid from flash"
);
U_BOOT_CMD(

View file

@ -18,7 +18,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
--- a/arch/arm/dts/Makefile --- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile
@@ -1136,6 +1136,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \ @@ -1119,6 +1119,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
mt7622-bananapi-bpi-r64.dtb \ mt7622-bananapi-bpi-r64.dtb \
mt7623n-bananapi-bpi-r2.dtb \ mt7623n-bananapi-bpi-r2.dtb \
mt7981-rfb.dtb \ mt7981-rfb.dtb \

View file

@ -46,7 +46,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
INFO("gd25lq128", 0xc86018, 0, 64 * 1024, 256, INFO("gd25lq128", 0xc86018, 0, 64 * 1024, 256,
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
@@ -520,6 +527,16 @@ const struct flash_info spi_nor_ids[] = @@ -525,6 +532,16 @@ const struct flash_info spi_nor_ids[] =
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
}, },
{ {
@ -63,7 +63,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
INFO("w25q128jw", 0xef8018, 0, 64 * 1024, 256, INFO("w25q128jw", 0xef8018, 0, 64 * 1024, 256,
SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
@@ -583,6 +600,11 @@ const struct flash_info spi_nor_ids[] = @@ -588,6 +605,11 @@ const struct flash_info spi_nor_ids[] =
SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB)
}, },
{ INFO("w25q256", 0xef4019, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { INFO("w25q256", 0xef4019, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },

View file

@ -15,7 +15,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
--- a/drivers/mmc/Kconfig --- a/drivers/mmc/Kconfig
+++ b/drivers/mmc/Kconfig +++ b/drivers/mmc/Kconfig
@@ -868,6 +868,14 @@ config MMC_MTK @@ -879,6 +879,14 @@ config MMC_MTK
This is needed if support for any SD/SDIO/MMC devices is required. This is needed if support for any SD/SDIO/MMC devices is required.
If unsure, say N. If unsure, say N.
@ -32,7 +32,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
config FSL_SDHC_V2_3 config FSL_SDHC_V2_3
--- a/drivers/mmc/Makefile --- a/drivers/mmc/Makefile
+++ b/drivers/mmc/Makefile +++ b/drivers/mmc/Makefile
@@ -85,3 +85,7 @@ obj-$(CONFIG_RENESAS_SDHI) += tmio-comm @@ -86,3 +86,7 @@ obj-$(CONFIG_RENESAS_SDHI) += tmio-comm
obj-$(CONFIG_MMC_BCM2835) += bcm2835_sdhost.o obj-$(CONFIG_MMC_BCM2835) += bcm2835_sdhost.o
obj-$(CONFIG_MMC_MTK) += mtk-sd.o obj-$(CONFIG_MMC_MTK) += mtk-sd.o
obj-$(CONFIG_MMC_SDHCI_F_SDH30) += f_sdh30.o obj-$(CONFIG_MMC_SDHCI_F_SDH30) += f_sdh30.o

View file

@ -14,7 +14,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
--- a/env/Kconfig --- a/env/Kconfig
+++ b/env/Kconfig +++ b/env/Kconfig
@@ -701,6 +701,12 @@ config ENV_UBI_VOLUME_REDUND @@ -687,6 +687,12 @@ config ENV_UBI_VOLUME_REDUND
help help
Name of the redundant volume that you want to store the environment in. Name of the redundant volume that you want to store the environment in.

View file

@ -6,7 +6,7 @@ Signed-off-by: Dim Fish <dimfish@gmail.com>
--- a/drivers/mtd/nand/spi/foresee.c --- a/drivers/mtd/nand/spi/foresee.c
+++ b/drivers/mtd/nand/spi/foresee.c +++ b/drivers/mtd/nand/spi/foresee.c
@@ -22,8 +22,8 @@ static SPINAND_OP_VARIANTS(write_cache_v @@ -24,8 +24,8 @@ static SPINAND_OP_VARIANTS(write_cache_v
SPINAND_PROG_LOAD(true, 0, NULL, 0)); SPINAND_PROG_LOAD(true, 0, NULL, 0));
static SPINAND_OP_VARIANTS(update_cache_variants, static SPINAND_OP_VARIANTS(update_cache_variants,

View file

@ -1,6 +1,6 @@
--- a/tools/image-host.c --- a/tools/image-host.c
+++ b/tools/image-host.c +++ b/tools/image-host.c
@@ -1175,6 +1175,7 @@ static int fit_config_add_verification_d @@ -1189,6 +1189,7 @@ static int fit_config_add_verification_d
* 2) get public key (X509_get_pubkey) * 2) get public key (X509_get_pubkey)
* 3) provide der format (d2i_RSAPublicKey) * 3) provide der format (d2i_RSAPublicKey)
*/ */
@ -8,7 +8,7 @@
static int read_pub_key(const char *keydir, const void *name, static int read_pub_key(const char *keydir, const void *name,
unsigned char **pubkey, int *pubkey_len) unsigned char **pubkey, int *pubkey_len)
{ {
@@ -1228,6 +1229,13 @@ err_cert: @@ -1242,6 +1243,13 @@ err_cert:
fclose(f); fclose(f);
return ret; return ret;
} }

View file

@ -1,6 +1,6 @@
--- a/cmd/Kconfig --- a/cmd/Kconfig
+++ b/cmd/Kconfig +++ b/cmd/Kconfig
@@ -707,6 +707,12 @@ config CMD_ENV_EXISTS @@ -709,6 +709,12 @@ config CMD_ENV_EXISTS
Check if a variable is defined in the environment for use in Check if a variable is defined in the environment for use in
shell scripting. shell scripting.

View file

@ -6,6 +6,6 @@
lbaint_t blk = 0, blk_r = 0; lbaint_t blk = 0, blk_r = 0;
- int timeout_ms = 1000; - int timeout_ms = 1000;
+ int timeout_ms = blkcnt; + int timeout_ms = blkcnt;
u32 grpcnt;
if (!mmc)
return -1;

View file

@ -16,7 +16,7 @@ Reviewed-by: Tom Rini <trini@konsulko.com>
--- a/boot/image-fdt.c --- a/boot/image-fdt.c
+++ b/boot/image-fdt.c +++ b/boot/image-fdt.c
@@ -613,6 +613,12 @@ int image_setup_libfdt(struct bootm_head @@ -614,6 +614,12 @@ int image_setup_libfdt(struct bootm_head
images->fit_uname_cfg, images->fit_uname_cfg,
strlen(images->fit_uname_cfg) + 1, 1); strlen(images->fit_uname_cfg) + 1, 1);

View file

@ -48,7 +48,7 @@
#ifdef CONFIG_ENABLE_NAND_NMBM #ifdef CONFIG_ENABLE_NAND_NMBM
--- a/arch/arm/mach-mediatek/Kconfig --- a/arch/arm/mach-mediatek/Kconfig
+++ b/arch/arm/mach-mediatek/Kconfig +++ b/arch/arm/mach-mediatek/Kconfig
@@ -170,4 +170,11 @@ config MTK_TZ_MOVABLE @@ -165,4 +165,11 @@ config MTK_TZ_MOVABLE
select OF_SYSTEM_SETUP select OF_SYSTEM_SETUP
bool bool

View file

@ -331,7 +331,7 @@
+}; +};
--- a/arch/arm/dts/Makefile --- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile
@@ -1134,6 +1134,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \ @@ -1117,6 +1117,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
mt7622-rfb.dtb \ mt7622-rfb.dtb \
mt7623a-unielec-u7623-02-emmc.dtb \ mt7623a-unielec-u7623-02-emmc.dtb \
mt7622-bananapi-bpi-r64.dtb \ mt7622-bananapi-bpi-r64.dtb \

View file

@ -742,7 +742,7 @@
+}; +};
--- a/arch/arm/dts/Makefile --- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile
@@ -1135,6 +1135,8 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \ @@ -1118,6 +1118,8 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
mt7623a-unielec-u7623-02-emmc.dtb \ mt7623a-unielec-u7623-02-emmc.dtb \
mt7622-bananapi-bpi-r64.dtb \ mt7622-bananapi-bpi-r64.dtb \
mt7622-linksys-e8450-ubi.dtb \ mt7622-linksys-e8450-ubi.dtb \
@ -920,7 +920,7 @@
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@@ -402,6 +403,20 @@ static int initr_onenand(void) @@ -423,6 +424,20 @@ static int initr_onenand(void)
} }
#endif #endif
@ -941,13 +941,13 @@
#ifdef CONFIG_MMC #ifdef CONFIG_MMC
static int initr_mmc(void) static int initr_mmc(void)
{ {
@@ -710,6 +725,9 @@ static init_fnc_t init_sequence_r[] = { @@ -735,6 +750,9 @@ static void initcall_run_r(void)
#ifdef CONFIG_NMBM_MTD #if CONFIG_IS_ENABLED(NMBM_MTD)
initr_nmbm, INITCALL(initr_nmbm);
#endif #endif
+#ifdef CONFIG_SPI_FLASH +#if CONFIG_IS_ENABLED(SPI_FLASH)
+ initr_spiflash, + INITCALL(initr_spiflash);
+#endif +#endif
#ifdef CONFIG_MMC #if CONFIG_IS_ENABLED(MMC)
initr_mmc, INITCALL(initr_mmc);
#endif #endif

View file

@ -22,7 +22,7 @@ Subject: [PATCH] add support for RAVPower RP-WD009
--- a/arch/mips/dts/Makefile --- a/arch/mips/dts/Makefile
+++ b/arch/mips/dts/Makefile +++ b/arch/mips/dts/Makefile
@@ -26,6 +26,7 @@ dtb-$(CONFIG_TARGET_OCTEON_EBB7304) += m @@ -25,6 +25,7 @@ dtb-$(CONFIG_TARGET_OCTEON_EBB7304) += m
dtb-$(CONFIG_TARGET_OCTEON_NIC23) += mrvl,octeon-nic23.dtb dtb-$(CONFIG_TARGET_OCTEON_NIC23) += mrvl,octeon-nic23.dtb
dtb-$(CONFIG_BOARD_NETGEAR_CG3100D) += netgear,cg3100d.dtb dtb-$(CONFIG_BOARD_NETGEAR_CG3100D) += netgear,cg3100d.dtb
dtb-$(CONFIG_BOARD_NETGEAR_DGND3700V2) += netgear,dgnd3700v2.dtb dtb-$(CONFIG_BOARD_NETGEAR_DGND3700V2) += netgear,dgnd3700v2.dtb

View file

@ -15,7 +15,7 @@ Subject: [PATCH] add xiaomi redmi ax6s
--- a/arch/arm/dts/Makefile --- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile
@@ -1137,6 +1137,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \ @@ -1120,6 +1120,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
mt7622-linksys-e8450-ubi.dtb \ mt7622-linksys-e8450-ubi.dtb \
mt7622-ubnt-unifi-6-lr.dtb \ mt7622-ubnt-unifi-6-lr.dtb \
mt7622-ubnt-unifi-6-lr-v3.dtb \ mt7622-ubnt-unifi-6-lr-v3.dtb \

View file

@ -13,42 +13,42 @@ Signed-off-by: Enrico Mioso <mrkiko.rs@gmail.com>
--- a/common/board_r.c --- a/common/board_r.c
+++ b/common/board_r.c +++ b/common/board_r.c
@@ -681,19 +681,13 @@ static init_fnc_t init_sequence_r[] = { @@ -691,19 +691,13 @@ static void initcall_run_r(void)
serial_initialize, INITCALL(serial_initialize);
initr_announce, INITCALL(initr_announce);
dm_announce, INITCALL(dm_announce);
-#if CONFIG_IS_ENABLED(WDT) -#if CONFIG_IS_ENABLED(WDT)
- initr_watchdog, - INITCALL(initr_watchdog);
-#endif -#endif
- INIT_FUNC_WATCHDOG_RESET - WATCHDOG_RESET();
arch_initr_trap, INITCALL(arch_initr_trap);
#if defined(CONFIG_BOARD_EARLY_INIT_R) #if CONFIG_IS_ENABLED(BOARD_EARLY_INIT_R)
board_early_init_r, INITCALL(board_early_init_r);
#endif #endif
- INIT_FUNC_WATCHDOG_RESET - WATCHDOG_RESET();
#ifdef CONFIG_POST #if CONFIG_IS_ENABLED(POST)
post_output_backlog, INITCALL(post_output_backlog);
#endif #endif
- INIT_FUNC_WATCHDOG_RESET - WATCHDOG_RESET();
#if defined(CONFIG_PCI_INIT_R) && defined(CONFIG_SYS_EARLY_PCI_INIT) #if CONFIG_IS_ENABLED(PCI_INIT_R) && CONFIG_IS_ENABLED(SYS_EARLY_PCI_INIT)
/* /*
* Do early PCI configuration _before_ the flash gets initialised, * Do early PCI configuration _before_ the flash gets initialised,
@@ -708,7 +702,6 @@ static init_fnc_t init_sequence_r[] = { @@ -718,7 +712,6 @@ static void initcall_run_r(void)
#ifdef CONFIG_MTD_NOR_FLASH #if CONFIG_IS_ENABLED(MTD_NOR_FLASH)
initr_flash, INITCALL(initr_flash);
#endif #endif
- INIT_FUNC_WATCHDOG_RESET - WATCHDOG_RESET();
#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_X86) #if CONFIG_IS_ENABLED(PPC) || CONFIG_IS_ENABLED(M68K) || CONFIG_IS_ENABLED(X86)
/* initialize higher level parts of CPU like time base and timers */ /* initialize higher level parts of CPU like time base and timers */
cpu_init_r, INITCALL(cpu_init_r);
@@ -737,6 +730,10 @@ static init_fnc_t init_sequence_r[] = { @@ -744,6 +737,10 @@ static void initcall_run_r(void)
#ifdef CONFIG_PVBLOCK #if CONFIG_IS_ENABLED(PVBLOCK)
initr_pvblock, INITCALL(initr_pvblock);
#endif #endif
+#if CONFIG_IS_ENABLED(WDT) +#if CONFIG_IS_ENABLED(WDT)
+ initr_watchdog, + INITCALL(initr_watchdog);
+#endif +#endif
+ INIT_FUNC_WATCHDOG_RESET + WATCHDOG_RESET();
initr_env, INITCALL(initr_env);
#ifdef CONFIG_SYS_MALLOC_BOOTPARAMS #if CONFIG_IS_ENABLED(SYS_MALLOC_BOOTPARAMS)
initr_malloc_bootparams, INITCALL(initr_malloc_bootparams);