From: Huasin Liao <huasinliao@gmail.com>
To: miquel.raynal@bootlin.com, vigneshr@ti.com
Cc: richard@nod.at, tudor.ambarus@linaro.org,
linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
huasin.liao@airoha.com, Huasin Liao <huasinliao@gmail.com>
Subject: [PATCH] mtd: spinand: winbond: add support for W25N04LV
Date: Sun, 16 Aug 2026 17:31:24 +0800 [thread overview]
Message-ID: <20260816093124.12325-1-huasinliao@gmail.com> (raw)
Add support for the Winbond W25N04LV. Tested on an Airoha
AN7581-based board with the on-board W25N04LV, verified
erase/read/write.
Link: https://www.winbond.com/hq/product/code-storage-flash-memory/qspinand-flash/?__locale=en&partNo=W25N04LV
Cc: huasin.liao@airoha.com
Signed-off-by: Huasin Liao <huasinliao@gmail.com>
---
drivers/mtd/nand/spi/winbond.c | 38 ++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/drivers/mtd/nand/spi/winbond.c b/drivers/mtd/nand/spi/winbond.c
index 9b78c1e6cbc9..892220a12b22 100644
--- a/drivers/mtd/nand/spi/winbond.c
+++ b/drivers/mtd/nand/spi/winbond.c
@@ -345,6 +345,35 @@ static const struct mtd_ooblayout_ops w25n02kv_ooblayout = {
.free = w25n02kv_ooblayout_free,
};
+static int w25n04lv_ooblayout_ecc(struct mtd_info *mtd, int section,
+ struct mtd_oob_region *region)
+{
+ if (section > 7)
+ return -ERANGE;
+
+ region->offset = 128 + (16 * section);
+ region->length = 13;
+
+ return 0;
+}
+
+static int w25n04lv_ooblayout_free(struct mtd_info *mtd, int section,
+ struct mtd_oob_region *region)
+{
+ if (section > 7)
+ return -ERANGE;
+
+ region->offset = (16 * section) + 2;
+ region->length = 14;
+
+ return 0;
+}
+
+static const struct mtd_ooblayout_ops w25n04lv_ooblayout = {
+ .ecc = w25n04lv_ooblayout_ecc,
+ .free = w25n04lv_ooblayout_free,
+};
+
static int w25n01jw_ooblayout_ecc(struct mtd_info *mtd, int section,
struct mtd_oob_region *region)
{
@@ -759,6 +788,15 @@ static const struct spinand_info winbond_spinand_table[] = {
&update_cache_variants),
0,
SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)),
+ SPINAND_INFO("W25N04LV", /* 3.3V */
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x8b, 0x23),
+ NAND_MEMORG(1, 4096, 256, 64, 2048, 40, 1, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
+ &write_cache_variants,
+ &update_cache_variants),
+ 0,
+ SPINAND_ECCINFO(&w25n04lv_ooblayout, w25n02kv_ecc_get_status)),
SPINAND_INFO("W25N04KW", /* 1.8V */
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x23),
NAND_MEMORG(1, 2048, 128, 64, 4096, 40, 1, 1, 1),
--
2.39.3 (Apple Git-146)
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
WARNING: multiple messages have this Message-ID (diff)
From: Huasin Liao <huasinliao@gmail.com>
To: miquel.raynal@bootlin.com, vigneshr@ti.com
Cc: richard@nod.at, tudor.ambarus@linaro.org,
linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
huasin.liao@airoha.com, Huasin Liao <huasinliao@gmail.com>
Subject: [PATCH] mtd: spinand: winbond: add support for W25N04LV
Date: Sun, 16 Aug 2026 17:31:24 +0800 [thread overview]
Message-ID: <20260816093124.12325-1-huasinliao@gmail.com> (raw)
Add support for the Winbond W25N04LV. Tested on an Airoha
AN7581-based board with the on-board W25N04LV, verified
erase/read/write.
Link: https://www.winbond.com/hq/product/code-storage-flash-memory/qspinand-flash/?__locale=en&partNo=W25N04LV
Cc: huasin.liao@airoha.com
Signed-off-by: Huasin Liao <huasinliao@gmail.com>
---
drivers/mtd/nand/spi/winbond.c | 38 ++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/drivers/mtd/nand/spi/winbond.c b/drivers/mtd/nand/spi/winbond.c
index 9b78c1e6cbc9..892220a12b22 100644
--- a/drivers/mtd/nand/spi/winbond.c
+++ b/drivers/mtd/nand/spi/winbond.c
@@ -345,6 +345,35 @@ static const struct mtd_ooblayout_ops w25n02kv_ooblayout = {
.free = w25n02kv_ooblayout_free,
};
+static int w25n04lv_ooblayout_ecc(struct mtd_info *mtd, int section,
+ struct mtd_oob_region *region)
+{
+ if (section > 7)
+ return -ERANGE;
+
+ region->offset = 128 + (16 * section);
+ region->length = 13;
+
+ return 0;
+}
+
+static int w25n04lv_ooblayout_free(struct mtd_info *mtd, int section,
+ struct mtd_oob_region *region)
+{
+ if (section > 7)
+ return -ERANGE;
+
+ region->offset = (16 * section) + 2;
+ region->length = 14;
+
+ return 0;
+}
+
+static const struct mtd_ooblayout_ops w25n04lv_ooblayout = {
+ .ecc = w25n04lv_ooblayout_ecc,
+ .free = w25n04lv_ooblayout_free,
+};
+
static int w25n01jw_ooblayout_ecc(struct mtd_info *mtd, int section,
struct mtd_oob_region *region)
{
@@ -759,6 +788,15 @@ static const struct spinand_info winbond_spinand_table[] = {
&update_cache_variants),
0,
SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)),
+ SPINAND_INFO("W25N04LV", /* 3.3V */
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x8b, 0x23),
+ NAND_MEMORG(1, 4096, 256, 64, 2048, 40, 1, 1, 1),
+ NAND_ECCREQ(8, 512),
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
+ &write_cache_variants,
+ &update_cache_variants),
+ 0,
+ SPINAND_ECCINFO(&w25n04lv_ooblayout, w25n02kv_ecc_get_status)),
SPINAND_INFO("W25N04KW", /* 1.8V */
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x23),
NAND_MEMORG(1, 2048, 128, 64, 4096, 40, 1, 1, 1),
--
2.39.3 (Apple Git-146)
next reply other threads:[~2026-08-16 9:31 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-16 9:31 Huasin Liao [this message]
2026-08-16 9:31 ` [PATCH] mtd: spinand: winbond: add support for W25N04LV Huasin Liao
2026-08-16 11:19 ` Dominique Martinet
2026-08-16 11:19 ` Dominique Martinet
2026-08-16 16:56 ` Huasin Liao
2026-08-16 16:56 ` Huasin Liao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260816093124.12325-1-huasinliao@gmail.com \
--to=huasinliao@gmail.com \
--cc=huasin.liao@airoha.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=miquel.raynal@bootlin.com \
--cc=richard@nod.at \
--cc=tudor.ambarus@linaro.org \
--cc=vigneshr@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.