[PATCH v2] mtd: spi-nor: remove unused NO_OP_CHIP_ERASE flag

tkuw584924
2026-04-17T07:18:25Z

From: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>

NO_OP_CHIP_ERASE flag is no longer used.
Remove definition and references of the flag in core and debugfs.

Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano@infineon.com>
---
Changes in v2:
- Collect R-b from Tudor
- Just drop NO_OP_CHIP_ERASE and leave the rest of bit assignment as is
- Copy to <linux-kernel@vger.kernel.org>
---
drivers/mtd/spi-nor/core.c | 3 +--
drivers/mtd/spi-nor/core.h | 6 ++++--
drivers/mtd/spi-nor/debugfs.c | 7 ++-----
3 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
index e6c1fda61f57..278b3fd0996e 100644
--- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c
@@ -1787,8 +1787,7 @@ static int spi_nor_erase(struct mtd_info *mtd, struct erase_info *instr)
return ret;

/* chip (die) erase? */
- if ((len == mtd->size && !(nor->flags & SNOR_F_NO_OP_CHIP_ERASE)) ||
- multi_die_erase) {
+ if (len == mtd->size || multi_die_erase) {
ret = spi_nor_erase_dice(nor, addr, len, die_size);
if (ret)
goto erase_err;
diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h
index e838c40a2589..fd9475ca4530 100644
--- a/drivers/mtd/spi-nor/core.h
+++ b/drivers/mtd/spi-nor/core.h
@@ -121,10 +121,12 @@
SPI_MEM_OP_NO_ADDR, \
SPI_MEM_OP_NO_DATA)

-/* Keep these in sync with the list in debugfs.c */
+/*
+ * This could contain holes, if adding a new flag use the first free spot.
+ * Keep the flags in sync with the list in debugfs.c
+ */
enum spi_nor_option_flags {
SNOR_F_HAS_SR_TB = BIT(0),
- SNOR_F_NO_OP_CHIP_ERASE = BIT(1),
SNOR_F_BROKEN_RESET = BIT(2),
SNOR_F_4B_OPCODES = BIT(3),
SNOR_F_HAS_4BAIT = BIT(4),
diff --git a/drivers/mtd/spi-nor/debugfs.c b/drivers/mtd/spi-nor/debugfs.c
index fa6956144d2e..7505cbab75d6 100644
--- a/drivers/mtd/spi-nor/debugfs.c
+++ b/drivers/mtd/spi-nor/debugfs.c
@@ -12,7 +12,6 @@
#define SNOR_F_NAME(name) [ilog2(SNOR_F_##name)] = #name
static const char *const snor_f_names[] = {
SNOR_F_NAME(HAS_SR_TB),
- SNOR_F_NAME(NO_OP_CHIP_ERASE),
SNOR_F_NAME(BROKEN_RESET),
SNOR_F_NAME(4B_OPCODES),
SNOR_F_NAME(HAS_4BAIT),
@@ -136,10 +135,8 @@ static int spi_nor_params_show(struct seq_file *s, void *data)
}
}

- if (!(nor->flags & SNOR_F_NO_OP_CHIP_ERASE)) {
- string_get_size(params->size, 1, STRING_UNITS_2, buf, sizeof(buf));
- seq_printf(s, " %02x (%s)\n", nor->params->die_erase_opcode, buf);
- }
+ string_get_size(params->size, 1, STRING_UNITS_2, buf, sizeof(buf));
+ seq_printf(s, " %02x (%s)\n", nor->params->die_erase_opcode, buf);

seq_puts(s, "\nsector map\n");
seq_puts(s, " region (in hex) | erase mask | overlaid\n");

---
base-commit: ed7f4ffeda2d93a97bdfd11f5c9b2d3fe9c3e837
change-id: 20260416-die-erase-fix-e35a5221fdb0

Best regards,
--
Takahiro Kuwano <takahiro.kuwano@infineon.com>