summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiquel Raynal <miquel.raynal@bootlin.com>2026-09-04 20:12:53 +0200
committerMichael Walle <mwalle@kernel.org>2026-09-07 09:45:21 +0200
commit8d3298fd1d75011c2fa30e813cd280856ea86a2e (patch)
treea17b8206f9602034b46ce0a7b54d970f46440d36
parent4da2d59f3a6cc217399b7c106c36c2f3655106a7 (diff)
downloadlinux-next-8d3298fd1d75011c2fa30e813cd280856ea86a2e.tar.gz
linux-next-8d3298fd1d75011c2fa30e813cd280856ea86a2e.zip
mtd: spi-nor: winbond: Add support for W25Q02RV-Q/N
There is an ID collision with the chip of same density from the JV family. Both chips are very similar in practice, it is mostly a matter of electrical differences (mostly power consumption being lower). As a significant difference, RV chips identify themselves as supporting the new SFDP (rev F) field which forces an alternate write SR2 opcode (0x31). Reviewed-by: Takahiro Kuwano <takahiro.kuwano@infineon.com> Reviewed-by: Michael Walle <mwalle@kernel.org> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Signed-off-by: Michael Walle <mwalle@kernel.org>
-rw-r--r--drivers/mtd/spi-nor/winbond.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/mtd/spi-nor/winbond.c b/drivers/mtd/spi-nor/winbond.c
index 4a6d4292fdb2..cd20622916b7 100644
--- a/drivers/mtd/spi-nor/winbond.c
+++ b/drivers/mtd/spi-nor/winbond.c
@@ -296,6 +296,11 @@ static const struct flash_info winbond_nor_parts[] = {
.flags = SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB | SPI_NOR_TB_SR_BIT6 |
SPI_NOR_4BIT_BP | SPI_NOR_HAS_CMP,
}, {
+ /* W25Q02RV-Q/N */
+ .id = SNOR_ID(0xef, 0x40, 0x22),
+ .flags = SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB | SPI_NOR_TB_SR_BIT6 |
+ SPI_NOR_4BIT_BP | SPI_NOR_HAS_CMP,
+ }, {
.id = SNOR_ID(0xef, 0x50, 0x12),
.name = "w25q20bw",
.size = SZ_256K,
@@ -611,6 +616,8 @@ static const struct spi_nor_fixup winbond_fixups[] = {
.fixups = &winbond_nor_partname_fixups },
{ .id = SNOR_ID(0xef, 0x40, 0x21), .match = winbond_jv_match,
.fixups = &winbond_nor_multi_die_fixups },
+ { .id = SNOR_ID(0xef, 0x40, 0x22), .match = winbond_jv_match,
+ .fixups = &winbond_nor_multi_die_fixups },
{ .id = SNOR_ID(0xef, 0x70, 0x21), .match = winbond_jv_match,
.fixups = &winbond_nor_multi_die_fixups },
{ .id = SNOR_ID(0xef, 0x70, 0x22), .match = winbond_jv_match,