summaryrefslogtreecommitdiff
path: root/drivers/mtd
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/Kconfig2
-rw-r--r--drivers/mtd/cfi_flash.c9
-rw-r--r--drivers/mtd/nand/raw/rockchip_nfc.c14
-rw-r--r--drivers/mtd/renesas_rpc_hf.c26
-rw-r--r--drivers/mtd/spi/Makefile5
-rw-r--r--drivers/mtd/spi/sf_probe.c8
-rw-r--r--drivers/mtd/ubi/part.c2
7 files changed, 30 insertions, 36 deletions
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index 38d6dd142dd..f6bd9f6f2e9 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -196,7 +196,7 @@ config ALTERA_QSPI
config RENESAS_RPC_HF
bool "Renesas R-Car Gen3 RPC HyperFlash driver"
- depends on RCAR_GEN3 && DM_MTD
+ depends on RCAR_64 && DM_MTD
help
This enables access to HyperFlash memory through the Renesas
R-Car Gen3 RPC controller.
diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index e50502824ac..cf52abf1554 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -2407,13 +2407,6 @@ unsigned long flash_init(void)
unsigned long size = 0;
int i;
-#ifdef CONFIG_SYS_FLASH_PROTECTION
- /* read environment from EEPROM */
- char s[64];
-
- env_get_f("unlock", s, sizeof(s));
-#endif
-
#ifdef CONFIG_CFI_FLASH /* for driver model */
cfi_flash_init_dm();
#endif
@@ -2438,7 +2431,7 @@ unsigned long flash_init(void)
#endif /* CONFIG_SYS_FLASH_QUIET_TEST */
}
#ifdef CONFIG_SYS_FLASH_PROTECTION
- else if (strcmp(s, "yes") == 0) {
+ else if (env_get_yesno("unlock")) {
/*
* Only the U-Boot image and it's environment
* is protected, all other sectors are
diff --git a/drivers/mtd/nand/raw/rockchip_nfc.c b/drivers/mtd/nand/raw/rockchip_nfc.c
index ea8e67d1a23..d23a651f369 100644
--- a/drivers/mtd/nand/raw/rockchip_nfc.c
+++ b/drivers/mtd/nand/raw/rockchip_nfc.c
@@ -440,7 +440,8 @@ static int rk_nfc_write_page_raw(struct mtd_info *mtd,
int i, pages_per_blk;
pages_per_blk = mtd->erasesize / mtd->writesize;
- if ((page < (pages_per_blk * rknand->boot_blks)) &&
+ if ((chip->options & NAND_IS_BOOT_MEDIUM) &&
+ (page < (pages_per_blk * rknand->boot_blks)) &&
rknand->boot_ecc != ecc->strength) {
/*
* There's currently no method to notify the MTD framework that
@@ -560,7 +561,8 @@ static int rk_nfc_write_page_hwecc(struct mtd_info *mtd,
*
* Configure the ECC algorithm supported by the boot ROM.
*/
- if (page < (pages_per_blk * rknand->boot_blks)) {
+ if ((page < (pages_per_blk * rknand->boot_blks)) &&
+ (chip->options & NAND_IS_BOOT_MEDIUM)) {
boot_rom_mode = 1;
if (rknand->boot_ecc != ecc->strength)
rk_nfc_hw_ecc_setup(chip, rknand->boot_ecc);
@@ -624,8 +626,8 @@ static int rk_nfc_read_page_raw(struct mtd_info *mtd,
int i, pages_per_blk;
pages_per_blk = mtd->erasesize / mtd->writesize;
- if ((page < (pages_per_blk * rknand->boot_blks)) &&
- nfc->selected_bank == 0 &&
+ if ((chip->options & NAND_IS_BOOT_MEDIUM) &&
+ (page < (pages_per_blk * rknand->boot_blks)) &&
rknand->boot_ecc != ecc->strength) {
/*
* There's currently no method to notify the MTD framework that
@@ -700,8 +702,8 @@ static int rk_nfc_read_page_hwecc(struct mtd_info *mtd,
* are used by the boot ROM.
* Configure the ECC algorithm supported by the boot ROM.
*/
- if (page < (pages_per_blk * rknand->boot_blks) &&
- nfc->selected_bank == 0) {
+ if ((page < (pages_per_blk * rknand->boot_blks)) &&
+ (chip->options & NAND_IS_BOOT_MEDIUM)) {
boot_rom_mode = 1;
if (rknand->boot_ecc != ecc->strength)
rk_nfc_hw_ecc_setup(chip, rknand->boot_ecc);
diff --git a/drivers/mtd/renesas_rpc_hf.c b/drivers/mtd/renesas_rpc_hf.c
index 9390c9e9ab3..c94a25fe6a1 100644
--- a/drivers/mtd/renesas_rpc_hf.c
+++ b/drivers/mtd/renesas_rpc_hf.c
@@ -344,21 +344,21 @@ static int rpc_hf_bind(struct udevice *parent)
static int rpc_hf_probe(struct udevice *dev)
{
- void *blob = (void *)gd->fdt_blob;
- const fdt32_t *cell;
- int node = dev_of_offset(dev);
- int parent, addrc, sizec, len, ret;
- struct clk clk;
phys_addr_t flash_base;
+ struct clk clk;
+ int ret;
- parent = fdt_parent_offset(blob, node);
- fdt_support_default_count_cells(blob, parent, &addrc, &sizec);
- cell = fdt_getprop(blob, node, "reg", &len);
- if (!cell)
- return -ENOENT;
+ rpc_base = dev_read_addr_name(dev, "regs");
+ if (rpc_base == FDT_ADDR_T_NONE) {
+ dev_err(dev, "Failed to get RPC control registers\n");
+ return -EINVAL;
+ }
- if (addrc != 2 || sizec != 2)
+ flash_base = dev_read_addr_name(dev, "dirmap");
+ if (flash_base == FDT_ADDR_T_NONE) {
+ dev_err(dev, "Failed to get RPC direct map registers\n");
return -EINVAL;
+ }
ret = clk_get_by_index(dev, 0, &clk);
if (ret < 0) {
@@ -372,9 +372,6 @@ static int rpc_hf_probe(struct udevice *dev)
return ret;
}
- rpc_base = fdt_translate_address(blob, node, cell);
- flash_base = fdt_translate_address(blob, node, cell + addrc + sizec);
-
flash_info[0].dev = dev;
flash_info[0].base = flash_base;
cfi_flash_num_flash_banks = 1;
@@ -387,6 +384,7 @@ static const struct udevice_id rpc_hf_ids[] = {
{ .compatible = "renesas,r7s72100-rpc-if" },
{ .compatible = "renesas,rcar-gen3-rpc-if" },
{ .compatible = "renesas,rcar-gen4-rpc-if" },
+ { .compatible = "renesas,rcar-gen5-rpc-if" },
{}
};
diff --git a/drivers/mtd/spi/Makefile b/drivers/mtd/spi/Makefile
index 44e67cd913a..9a96be11e6d 100644
--- a/drivers/mtd/spi/Makefile
+++ b/drivers/mtd/spi/Makefile
@@ -8,14 +8,13 @@ spi-nor-y := sf_probe.o spi-nor-ids.o
ifdef CONFIG_XPL_BUILD
obj-$(CONFIG_SPL_SPI_BOOT) += fsl_espi_spl.o
+endif
+
ifeq ($(CONFIG_$(PHASE_)SPI_FLASH_TINY),y)
spi-nor-y += spi-nor-tiny.o
else
spi-nor-y += spi-nor-core.o
endif
-else
-spi-nor-y += spi-nor-core.o
-endif
obj-$(CONFIG_SPI_FLASH) += spi-nor.o
obj-$(CONFIG_SPI_FLASH_DATAFLASH) += sf_dataflash.o
diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
index 7100b64bf22..dee03662d45 100644
--- a/drivers/mtd/spi/sf_probe.c
+++ b/drivers/mtd/spi/sf_probe.c
@@ -229,9 +229,11 @@ static int spi_flash_std_remove(struct udevice *dev)
spi_mem_dirmap_destroy(flash->dirmap.rdesc);
}
- ret = spi_nor_remove(flash);
- if (ret)
- return ret;
+ if (CONFIG_IS_ENABLED(SPI_FLASH_SOFT_RESET)) {
+ ret = spi_nor_remove(flash);
+ if (ret)
+ return ret;
+ }
if (CONFIG_IS_ENABLED(SPI_FLASH_MTD))
spi_flash_mtd_unregister(flash);
diff --git a/drivers/mtd/ubi/part.c b/drivers/mtd/ubi/part.c
index 6c017eb7299..aff0b109b70 100644
--- a/drivers/mtd/ubi/part.c
+++ b/drivers/mtd/ubi/part.c
@@ -49,7 +49,7 @@ static int __maybe_unused part_get_info_ubi(struct blk_desc *dev_desc, int part_
if (!vol)
return -ENOENT;
- snprintf(info->name, PART_NAME_LEN, vol->name);
+ snprintf(info->name, PART_NAME_LEN, "%s", vol->name);
info->start = 0;
info->size = (unsigned long)vol->used_bytes / dev_desc->blksz;