-
Notifications
You must be signed in to change notification settings - Fork 19.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
generic: mtd: winbond: more serial NAND flash types
Add support for W25N01JW, W25N02JWZEIF, W25N512GW, W25N02KWZEIR and W25N01GWZEIG. Add support for W25N04KV. Signed-off-by: Mieczyslaw Nalewaj <[email protected]> Signed-off-by: Hauke Mehrtens <[email protected]>
- Loading branch information
Showing
3 changed files
with
131 additions
and
3 deletions.
There are no files selected for viewing
75 changes: 75 additions & 0 deletions
75
...generic/backport-6.6/898-v6.7-mtd-spinand-winbond-add-support-for-serial-NAND-flash.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
From 6a804fb72de56d6a99b799f565ae45f2cec7cd55 Mon Sep 17 00:00:00 2001 | ||
From: Sridharan S N <[email protected]> | ||
Date: Thu, 12 Oct 2023 12:11:34 +0530 | ||
Subject: mtd: spinand: winbond: add support for serial NAND flash | ||
|
||
Add support for W25N01JW, W25N02JWZEIF, W25N512GW, | ||
W25N02KWZEIR and W25N01GWZEIG. | ||
|
||
W25N02KWZEIR has 8b/512b on-die ECC capability and other | ||
four has 4b/512b on-die ECC capability. | ||
|
||
Signed-off-by: Sridharan S N <[email protected]> | ||
Signed-off-by: Md Sadre Alam <[email protected]> | ||
Signed-off-by: Miquel Raynal <[email protected]> | ||
Link: https://lore.kernel.org/linux-mtd/[email protected] | ||
--- | ||
drivers/mtd/nand/spi/winbond.c | 45 ++++++++++++++++++++++++++++++++++++++++++ | ||
1 file changed, 45 insertions(+) | ||
|
||
(limited to 'drivers/mtd/nand/spi/winbond.c') | ||
|
||
--- a/drivers/mtd/nand/spi/winbond.c | ||
+++ b/drivers/mtd/nand/spi/winbond.c | ||
@@ -169,6 +169,51 @@ static const struct spinand_info winbond | ||
&update_cache_variants), | ||
0, | ||
SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), | ||
+ SPINAND_INFO("W25N01JW", | ||
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xbc, 0x21), | ||
+ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), | ||
+ NAND_ECCREQ(4, 512), | ||
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, | ||
+ &write_cache_variants, | ||
+ &update_cache_variants), | ||
+ 0, | ||
+ SPINAND_ECCINFO(&w25m02gv_ooblayout, w25n02kv_ecc_get_status)), | ||
+ SPINAND_INFO("W25N02JWZEIF", | ||
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xbf, 0x22), | ||
+ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 2, 1), | ||
+ NAND_ECCREQ(4, 512), | ||
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, | ||
+ &write_cache_variants, | ||
+ &update_cache_variants), | ||
+ 0, | ||
+ SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), | ||
+ SPINAND_INFO("W25N512GW", | ||
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x20), | ||
+ NAND_MEMORG(1, 2048, 64, 64, 512, 10, 1, 1, 1), | ||
+ NAND_ECCREQ(4, 512), | ||
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, | ||
+ &write_cache_variants, | ||
+ &update_cache_variants), | ||
+ 0, | ||
+ SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), | ||
+ SPINAND_INFO("W25N02KWZEIR", | ||
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x22), | ||
+ NAND_MEMORG(1, 2048, 128, 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(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), | ||
+ SPINAND_INFO("W25N01GWZEIG", | ||
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x21), | ||
+ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), | ||
+ NAND_ECCREQ(4, 512), | ||
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, | ||
+ &write_cache_variants, | ||
+ &update_cache_variants), | ||
+ 0, | ||
+ SPINAND_ECCINFO(&w25m02gv_ooblayout, w25n02kv_ecc_get_status)), | ||
}; | ||
|
||
static int winbond_spinand_init(struct spinand_device *spinand) |
53 changes: 53 additions & 0 deletions
53
target/linux/generic/backport-6.6/899-v6.9-mtd-spinand-winbond-add-W25N04KV.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
From e0ccf861b80698a5cc6f97c89bf8d5761f465fce Mon Sep 17 00:00:00 2001 | ||
From: Zhi-Jun You <[email protected]> | ||
Date: Sun, 7 Jan 2024 14:41:20 +0000 | ||
Subject: mtd: spinand: winbond: add support for W25N04KV | ||
|
||
Add support for W25N04KV. | ||
|
||
W25N04KV has 8-bit on-die ECC. | ||
|
||
Signed-off-by: Zhi-Jun You <[email protected]> | ||
Signed-off-by: Miquel Raynal <[email protected]> | ||
Link: https://lore.kernel.org/linux-mtd/[email protected] | ||
--- | ||
drivers/mtd/nand/spi/winbond.c | 12 ++++++++++++ | ||
1 file changed, 12 insertions(+) | ||
|
||
(limited to 'drivers/mtd/nand/spi/winbond.c') | ||
|
||
--- a/drivers/mtd/nand/spi/winbond.c | ||
+++ b/drivers/mtd/nand/spi/winbond.c | ||
@@ -15,6 +15,8 @@ | ||
|
||
#define WINBOND_CFG_BUF_READ BIT(3) | ||
|
||
+#define W25N04KV_STATUS_ECC_5_8_BITFLIPS (3 << 4) | ||
+ | ||
static SPINAND_OP_VARIANTS(read_cache_variants, | ||
SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0), | ||
SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0), | ||
@@ -118,6 +120,7 @@ static int w25n02kv_ecc_get_status(struc | ||
return -EBADMSG; | ||
|
||
case STATUS_ECC_HAS_BITFLIPS: | ||
+ case W25N04KV_STATUS_ECC_5_8_BITFLIPS: | ||
/* | ||
* Let's try to retrieve the real maximum number of bitflips | ||
* in order to avoid forcing the wear-leveling layer to move | ||
@@ -214,6 +217,15 @@ static const struct spinand_info winbond | ||
&update_cache_variants), | ||
0, | ||
SPINAND_ECCINFO(&w25m02gv_ooblayout, w25n02kv_ecc_get_status)), | ||
+ SPINAND_INFO("W25N04KV", | ||
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x23), | ||
+ NAND_MEMORG(1, 2048, 128, 64, 4096, 40, 2, 1, 1), | ||
+ NAND_ECCREQ(8, 512), | ||
+ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, | ||
+ &write_cache_variants, | ||
+ &update_cache_variants), | ||
+ 0, | ||
+ SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), | ||
}; | ||
|
||
static int winbond_spinand_init(struct spinand_device *spinand) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,7 +14,7 @@ Signed-off-by: Robert Marko <[email protected]> | |
|
||
--- a/drivers/mtd/nand/spi/winbond.c | ||
+++ b/drivers/mtd/nand/spi/winbond.c | ||
@@ -74,6 +74,18 @@ static int w25m02gv_select_target(struct | ||
@@ -76,6 +76,18 @@ static int w25m02gv_select_target(struct | ||
return spi_mem_exec_op(spinand->spimem, &op); | ||
} | ||
|
||
|
@@ -33,7 +33,7 @@ Signed-off-by: Robert Marko <[email protected]> | |
static int w25n02kv_ooblayout_ecc(struct mtd_info *mtd, int section, | ||
struct mtd_oob_region *region) | ||
{ | ||
@@ -98,6 +110,11 @@ static int w25n02kv_ooblayout_free(struc | ||
@@ -100,6 +112,11 @@ static int w25n02kv_ooblayout_free(struc | ||
return 0; | ||
} | ||
|
||
|
@@ -45,7 +45,7 @@ Signed-off-by: Robert Marko <[email protected]> | |
static const struct mtd_ooblayout_ops w25n02kv_ooblayout = { | ||
.ecc = w25n02kv_ooblayout_ecc, | ||
.free = w25n02kv_ooblayout_free, | ||
@@ -160,6 +177,15 @@ static const struct spinand_info winbond | ||
@@ -163,6 +180,15 @@ static const struct spinand_info winbond | ||
&update_cache_variants), | ||
0, | ||
SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), | ||
|