* [PATCH 0/4] mtd: spinand: winbond: Fix chip descriptions
@ 2024-10-09 12:49 Miquel Raynal
2024-10-09 12:49 ` [PATCH 1/4] mtd: spi-nand: winbond: Fix 512GW and 02JW OOB layout Miquel Raynal
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Miquel Raynal @ 2024-10-09 12:49 UTC (permalink / raw)
To: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus,
Pratyush Yadav, Michael Walle, linux-mtd
Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N,
Miquel Raynal
Commit 6a804fb72de5 ("mtd: spinand: winbond: add support for serial NAND flash")
is surprisingly wrong, as 4 out of the 5 chip descriptions are
incorrect. Any bitflip on these devices will lead to a kernel WARN() and
jffs2 (or any use of the OOB area) is totally broken for half of the chips.
First two patches are real fixes, the two last patches are just improvements.
Miquel Raynal (4):
mtd: spi-nand: winbond: Fix 512GW and 02JW OOB layout
mtd: spi-nand: winbond: Fix 512GW, 01GW, 01JW and 02JW ECC information
mtd: spi-nand: winbond: Ignore the last ID characters
mtd: spi-nand: winbond: Sort the devices
drivers/mtd/nand/spi/winbond.c | 114 +++++++++++++++++----------------
1 file changed, 59 insertions(+), 55 deletions(-)
--
2.43.0
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
^ permalink raw reply [flat|nested] 13+ messages in thread* [PATCH 1/4] mtd: spi-nand: winbond: Fix 512GW and 02JW OOB layout 2024-10-09 12:49 [PATCH 0/4] mtd: spinand: winbond: Fix chip descriptions Miquel Raynal @ 2024-10-09 12:49 ` Miquel Raynal 2024-10-09 13:16 ` Frieder Schrempf 2024-10-21 10:02 ` Miquel Raynal 2024-10-09 12:50 ` [PATCH 2/4] mtd: spi-nand: winbond: Fix 512GW, 01GW, 01JW and 02JW ECC information Miquel Raynal ` (2 subsequent siblings) 3 siblings, 2 replies; 13+ messages in thread From: Miquel Raynal @ 2024-10-09 12:49 UTC (permalink / raw) To: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N, Miquel Raynal, stable Both W25N512GW and W25N02JW chips have 64 bytes of OOB and thus cannot use the layout for 128 bytes OOB. Reference the correct layout instead. Fixes: 6a804fb72de5 ("mtd: spinand: winbond: add support for serial NAND flash") Cc: stable@vger.kernel.org Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> --- drivers/mtd/nand/spi/winbond.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/nand/spi/winbond.c b/drivers/mtd/nand/spi/winbond.c index 6b520b68407e..4e765cec0a3b 100644 --- a/drivers/mtd/nand/spi/winbond.c +++ b/drivers/mtd/nand/spi/winbond.c @@ -189,7 +189,7 @@ static const struct spinand_info winbond_spinand_table[] = { &write_cache_variants, &update_cache_variants), 0, - SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), + SPINAND_ECCINFO(&w25m02gv_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), @@ -198,7 +198,7 @@ static const struct spinand_info winbond_spinand_table[] = { &write_cache_variants, &update_cache_variants), 0, - SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), + SPINAND_ECCINFO(&w25m02gv_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), -- 2.43.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/4] mtd: spi-nand: winbond: Fix 512GW and 02JW OOB layout 2024-10-09 12:49 ` [PATCH 1/4] mtd: spi-nand: winbond: Fix 512GW and 02JW OOB layout Miquel Raynal @ 2024-10-09 13:16 ` Frieder Schrempf 2024-10-21 10:02 ` Miquel Raynal 1 sibling, 0 replies; 13+ messages in thread From: Frieder Schrempf @ 2024-10-09 13:16 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N, stable On 09.10.24 2:49 PM, Miquel Raynal wrote: > Both W25N512GW and W25N02JW chips have 64 bytes of OOB and thus cannot > use the layout for 128 bytes OOB. Reference the correct layout instead. > > Fixes: 6a804fb72de5 ("mtd: spinand: winbond: add support for serial NAND flash") > Cc: stable@vger.kernel.org > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de> ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/4] mtd: spi-nand: winbond: Fix 512GW and 02JW OOB layout 2024-10-09 12:49 ` [PATCH 1/4] mtd: spi-nand: winbond: Fix 512GW and 02JW OOB layout Miquel Raynal 2024-10-09 13:16 ` Frieder Schrempf @ 2024-10-21 10:02 ` Miquel Raynal 1 sibling, 0 replies; 13+ messages in thread From: Miquel Raynal @ 2024-10-21 10:02 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N, stable On Wed, 2024-10-09 at 12:49:59 UTC, Miquel Raynal wrote: > Both W25N512GW and W25N02JW chips have 64 bytes of OOB and thus cannot > use the layout for 128 bytes OOB. Reference the correct layout instead. > > Fixes: 6a804fb72de5 ("mtd: spinand: winbond: add support for serial NAND flash") > Cc: stable@vger.kernel.org > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next. Miquel ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/4] mtd: spi-nand: winbond: Fix 512GW, 01GW, 01JW and 02JW ECC information 2024-10-09 12:49 [PATCH 0/4] mtd: spinand: winbond: Fix chip descriptions Miquel Raynal 2024-10-09 12:49 ` [PATCH 1/4] mtd: spi-nand: winbond: Fix 512GW and 02JW OOB layout Miquel Raynal @ 2024-10-09 12:50 ` Miquel Raynal 2024-10-09 13:33 ` Frieder Schrempf 2024-10-21 10:02 ` Miquel Raynal 2024-10-09 12:50 ` [PATCH 3/4] mtd: spi-nand: winbond: Ignore the last ID characters Miquel Raynal 2024-10-09 12:50 ` [PATCH 4/4] mtd: spi-nand: winbond: Sort the devices Miquel Raynal 3 siblings, 2 replies; 13+ messages in thread From: Miquel Raynal @ 2024-10-09 12:50 UTC (permalink / raw) To: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N, Miquel Raynal, stable These four chips: * W25N512GW * W25N01GW * W25N01JW * W25N02JW all require a single bit of ECC strength and thus feature an on-die Hamming-like ECC engine. There is no point in filling a ->get_status() callback for them because the main ECC status bytes are located in standard places, and retrieving the number of bitflips in case of corrected chunk is both useless and unsupported (if there are bitflips, then there is 1 at most, so no need to query the chip for that). Without this change, a kernel warning triggers every time a bit flips. Fixes: 6a804fb72de5 ("mtd: spinand: winbond: add support for serial NAND flash") Cc: stable@vger.kernel.org Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> --- drivers/mtd/nand/spi/winbond.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/mtd/nand/spi/winbond.c b/drivers/mtd/nand/spi/winbond.c index 4e765cec0a3b..9b611bf7e8f0 100644 --- a/drivers/mtd/nand/spi/winbond.c +++ b/drivers/mtd/nand/spi/winbond.c @@ -175,30 +175,30 @@ static const struct spinand_info winbond_spinand_table[] = { 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), + NAND_ECCREQ(1, 512), SPINAND_INFO_OP_VARIANTS(&read_cache_variants, &write_cache_variants, &update_cache_variants), 0, - SPINAND_ECCINFO(&w25m02gv_ooblayout, w25n02kv_ecc_get_status)), + SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), 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), + NAND_ECCREQ(1, 512), SPINAND_INFO_OP_VARIANTS(&read_cache_variants, &write_cache_variants, &update_cache_variants), 0, - SPINAND_ECCINFO(&w25m02gv_ooblayout, w25n02kv_ecc_get_status)), + SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), 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), + NAND_ECCREQ(1, 512), SPINAND_INFO_OP_VARIANTS(&read_cache_variants, &write_cache_variants, &update_cache_variants), 0, - SPINAND_ECCINFO(&w25m02gv_ooblayout, w25n02kv_ecc_get_status)), + SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), SPINAND_INFO("W25N02KWZEIR", SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x22), NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1), @@ -220,12 +220,12 @@ static const struct spinand_info winbond_spinand_table[] = { 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), + NAND_ECCREQ(1, 512), SPINAND_INFO_OP_VARIANTS(&read_cache_variants, &write_cache_variants, &update_cache_variants), 0, - SPINAND_ECCINFO(&w25m02gv_ooblayout, w25n02kv_ecc_get_status)), + SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), SPINAND_INFO("W25N04KV", SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x23), NAND_MEMORG(1, 2048, 128, 64, 4096, 40, 2, 1, 1), -- 2.43.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] mtd: spi-nand: winbond: Fix 512GW, 01GW, 01JW and 02JW ECC information 2024-10-09 12:50 ` [PATCH 2/4] mtd: spi-nand: winbond: Fix 512GW, 01GW, 01JW and 02JW ECC information Miquel Raynal @ 2024-10-09 13:33 ` Frieder Schrempf 2024-10-09 14:47 ` Miquel Raynal 2024-10-21 10:02 ` Miquel Raynal 1 sibling, 1 reply; 13+ messages in thread From: Frieder Schrempf @ 2024-10-09 13:33 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N, stable On 09.10.24 2:50 PM, Miquel Raynal wrote: > These four chips: > * W25N512GW > * W25N01GW > * W25N01JW > * W25N02JW > all require a single bit of ECC strength and thus feature an on-die > Hamming-like ECC engine. There is no point in filling a ->get_status() > callback for them because the main ECC status bytes are located in > standard places, and retrieving the number of bitflips in case of > corrected chunk is both useless and unsupported (if there are bitflips, > then there is 1 at most, so no need to query the chip for that). > > Without this change, a kernel warning triggers every time a bit flips. > > Fixes: 6a804fb72de5 ("mtd: spinand: winbond: add support for serial NAND flash") > Cc: stable@vger.kernel.org > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> I had a quick look at the datasheets and this seems correct to me. Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de> ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] mtd: spi-nand: winbond: Fix 512GW, 01GW, 01JW and 02JW ECC information 2024-10-09 13:33 ` Frieder Schrempf @ 2024-10-09 14:47 ` Miquel Raynal 0 siblings, 0 replies; 13+ messages in thread From: Miquel Raynal @ 2024-10-09 14:47 UTC (permalink / raw) To: Frieder Schrempf Cc: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd, Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N, stable Hi Frieder, frieder.schrempf@kontron.de wrote on Wed, 9 Oct 2024 15:33:11 +0200: > On 09.10.24 2:50 PM, Miquel Raynal wrote: > > These four chips: > > * W25N512GW > > * W25N01GW > > * W25N01JW > > * W25N02JW > > all require a single bit of ECC strength and thus feature an on-die > > Hamming-like ECC engine. There is no point in filling a ->get_status() > > callback for them because the main ECC status bytes are located in > > standard places, and retrieving the number of bitflips in case of > > corrected chunk is both useless and unsupported (if there are bitflips, > > then there is 1 at most, so no need to query the chip for that). > > > > Without this change, a kernel warning triggers every time a bit flips. > > > > Fixes: 6a804fb72de5 ("mtd: spinand: winbond: add support for serial NAND flash") > > Cc: stable@vger.kernel.org > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > > I had a quick look at the datasheets and this seems correct to me. Thanks a lot for the rapid review! > Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de> Thanks, Miquèl ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] mtd: spi-nand: winbond: Fix 512GW, 01GW, 01JW and 02JW ECC information 2024-10-09 12:50 ` [PATCH 2/4] mtd: spi-nand: winbond: Fix 512GW, 01GW, 01JW and 02JW ECC information Miquel Raynal 2024-10-09 13:33 ` Frieder Schrempf @ 2024-10-21 10:02 ` Miquel Raynal 1 sibling, 0 replies; 13+ messages in thread From: Miquel Raynal @ 2024-10-21 10:02 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N, stable On Wed, 2024-10-09 at 12:50:00 UTC, Miquel Raynal wrote: > These four chips: > * W25N512GW > * W25N01GW > * W25N01JW > * W25N02JW > all require a single bit of ECC strength and thus feature an on-die > Hamming-like ECC engine. There is no point in filling a ->get_status() > callback for them because the main ECC status bytes are located in > standard places, and retrieving the number of bitflips in case of > corrected chunk is both useless and unsupported (if there are bitflips, > then there is 1 at most, so no need to query the chip for that). > > Without this change, a kernel warning triggers every time a bit flips. > > Fixes: 6a804fb72de5 ("mtd: spinand: winbond: add support for serial NAND flash") > Cc: stable@vger.kernel.org > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next. Miquel ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 3/4] mtd: spi-nand: winbond: Ignore the last ID characters 2024-10-09 12:49 [PATCH 0/4] mtd: spinand: winbond: Fix chip descriptions Miquel Raynal 2024-10-09 12:49 ` [PATCH 1/4] mtd: spi-nand: winbond: Fix 512GW and 02JW OOB layout Miquel Raynal 2024-10-09 12:50 ` [PATCH 2/4] mtd: spi-nand: winbond: Fix 512GW, 01GW, 01JW and 02JW ECC information Miquel Raynal @ 2024-10-09 12:50 ` Miquel Raynal 2024-10-09 13:33 ` Frieder Schrempf 2024-10-21 10:02 ` Miquel Raynal 2024-10-09 12:50 ` [PATCH 4/4] mtd: spi-nand: winbond: Sort the devices Miquel Raynal 3 siblings, 2 replies; 13+ messages in thread From: Miquel Raynal @ 2024-10-09 12:50 UTC (permalink / raw) To: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N, Miquel Raynal The last 4 characters in Winbond's branding indicate: - the package type (ZE/SF/TB), - the temperature grade (I/J), - special options, typically the continuous read vs. page read feature support and its default (G/T/F/R), None of these information impact us, at the software level (well, the continuous read mode by default is impacting, but is already handled gracefully by disabling it in the initialization phase), so let's get rid of it. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> --- drivers/mtd/nand/spi/winbond.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/mtd/nand/spi/winbond.c b/drivers/mtd/nand/spi/winbond.c index 9b611bf7e8f0..a987df1755c6 100644 --- a/drivers/mtd/nand/spi/winbond.c +++ b/drivers/mtd/nand/spi/winbond.c @@ -181,7 +181,7 @@ static const struct spinand_info winbond_spinand_table[] = { &update_cache_variants), 0, SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), - SPINAND_INFO("W25N02JWZEIF", + SPINAND_INFO("W25N02JW", SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xbf, 0x22), NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 2, 1), NAND_ECCREQ(1, 512), @@ -199,7 +199,7 @@ static const struct spinand_info winbond_spinand_table[] = { &update_cache_variants), 0, SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), - SPINAND_INFO("W25N02KWZEIR", + SPINAND_INFO("W25N02KW", SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x22), NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1), NAND_ECCREQ(8, 512), @@ -217,7 +217,7 @@ static const struct spinand_info winbond_spinand_table[] = { &update_cache_variants), 0, SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), - SPINAND_INFO("W25N01GWZEIG", + SPINAND_INFO("W25N01GW", SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x21), NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), NAND_ECCREQ(1, 512), -- 2.43.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 3/4] mtd: spi-nand: winbond: Ignore the last ID characters 2024-10-09 12:50 ` [PATCH 3/4] mtd: spi-nand: winbond: Ignore the last ID characters Miquel Raynal @ 2024-10-09 13:33 ` Frieder Schrempf 2024-10-21 10:02 ` Miquel Raynal 1 sibling, 0 replies; 13+ messages in thread From: Frieder Schrempf @ 2024-10-09 13:33 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N On 09.10.24 2:50 PM, Miquel Raynal wrote: > The last 4 characters in Winbond's branding indicate: > - the package type (ZE/SF/TB), > - the temperature grade (I/J), > - special options, typically the continuous read vs. page read feature > support and its default (G/T/F/R), > > None of these information impact us, at the software level (well, the > continuous read mode by default is impacting, but is already handled > gracefully by disabling it in the initialization phase), so let's get > rid of it. > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de> ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/4] mtd: spi-nand: winbond: Ignore the last ID characters 2024-10-09 12:50 ` [PATCH 3/4] mtd: spi-nand: winbond: Ignore the last ID characters Miquel Raynal 2024-10-09 13:33 ` Frieder Schrempf @ 2024-10-21 10:02 ` Miquel Raynal 1 sibling, 0 replies; 13+ messages in thread From: Miquel Raynal @ 2024-10-21 10:02 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N On Wed, 2024-10-09 at 12:50:01 UTC, Miquel Raynal wrote: > The last 4 characters in Winbond's branding indicate: > - the package type (ZE/SF/TB), > - the temperature grade (I/J), > - special options, typically the continuous read vs. page read feature > support and its default (G/T/F/R), > > None of these information impact us, at the software level (well, the > continuous read mode by default is impacting, but is already handled > gracefully by disabling it in the initialization phase), so let's get > rid of it. > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next. Miquel ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 4/4] mtd: spi-nand: winbond: Sort the devices 2024-10-09 12:49 [PATCH 0/4] mtd: spinand: winbond: Fix chip descriptions Miquel Raynal ` (2 preceding siblings ...) 2024-10-09 12:50 ` [PATCH 3/4] mtd: spi-nand: winbond: Ignore the last ID characters Miquel Raynal @ 2024-10-09 12:50 ` Miquel Raynal 2024-10-09 13:36 ` Frieder Schrempf 3 siblings, 1 reply; 13+ messages in thread From: Miquel Raynal @ 2024-10-09 12:50 UTC (permalink / raw) To: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N, Miquel Raynal Use alphabetical order, not because it's pretty, but because it makes sense. This way the devices are listed by density, and then by hardware feature set. Add comments to make the list more understandable. There is no intended functional change. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> --- drivers/mtd/nand/spi/winbond.c | 112 +++++++++++++++++---------------- 1 file changed, 58 insertions(+), 54 deletions(-) diff --git a/drivers/mtd/nand/spi/winbond.c b/drivers/mtd/nand/spi/winbond.c index a987df1755c6..e472d0f692c2 100644 --- a/drivers/mtd/nand/spi/winbond.c +++ b/drivers/mtd/nand/spi/winbond.c @@ -144,7 +144,46 @@ static int w25n02kv_ecc_get_status(struct spinand_device *spinand, } static const struct spinand_info winbond_spinand_table[] = { - SPINAND_INFO("W25M02GV", + /* 512M-bit densities */ + SPINAND_INFO("W25N512GW", /* 1.8V */ + SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x20), + NAND_MEMORG(1, 2048, 64, 64, 512, 10, 1, 1, 1), + NAND_ECCREQ(1, 512), + SPINAND_INFO_OP_VARIANTS(&read_cache_variants, + &write_cache_variants, + &update_cache_variants), + 0, + SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), + /* 1G-bit densities */ + SPINAND_INFO("W25N01GV", /* 3.3V */ + SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x21), + NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), + NAND_ECCREQ(1, 512), + SPINAND_INFO_OP_VARIANTS(&read_cache_variants, + &write_cache_variants, + &update_cache_variants), + 0, + SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), + SPINAND_INFO("W25N01GW", /* 1.8V */ + SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x21), + NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), + NAND_ECCREQ(1, 512), + SPINAND_INFO_OP_VARIANTS(&read_cache_variants, + &write_cache_variants, + &update_cache_variants), + 0, + SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), + SPINAND_INFO("W25N01JW", /* high-speed 1.8V */ + SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xbc, 0x21), + NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), + NAND_ECCREQ(1, 512), + SPINAND_INFO_OP_VARIANTS(&read_cache_variants, + &write_cache_variants, + &update_cache_variants), + 0, + SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), + /* 2G-bit densities */ + SPINAND_INFO("W25M02GV", /* 2x1G-bit 3.3V */ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xab, 0x21), NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 2), NAND_ECCREQ(1, 512), @@ -154,34 +193,7 @@ static const struct spinand_info winbond_spinand_table[] = { 0, SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL), SPINAND_SELECT_TARGET(w25m02gv_select_target)), - SPINAND_INFO("W25N01GV", - SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x21), - NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), - NAND_ECCREQ(1, 512), - SPINAND_INFO_OP_VARIANTS(&read_cache_variants, - &write_cache_variants, - &update_cache_variants), - 0, - SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), - SPINAND_INFO("W25N02KV", - SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 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("W25N01JW", - SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xbc, 0x21), - NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), - NAND_ECCREQ(1, 512), - SPINAND_INFO_OP_VARIANTS(&read_cache_variants, - &write_cache_variants, - &update_cache_variants), - 0, - SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), - SPINAND_INFO("W25N02JW", + SPINAND_INFO("W25N02JW", /* high-speed 1.8V */ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xbf, 0x22), NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 2, 1), NAND_ECCREQ(1, 512), @@ -190,16 +202,16 @@ static const struct spinand_info winbond_spinand_table[] = { &update_cache_variants), 0, SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), - 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(1, 512), + SPINAND_INFO("W25N02KV", /* 3.3V */ + SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 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(&w25m02gv_ooblayout, NULL)), - SPINAND_INFO("W25N02KW", + SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), + SPINAND_INFO("W25N02KW", /* 1.8V */ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x22), NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1), NAND_ECCREQ(8, 512), @@ -208,25 +220,8 @@ static const struct spinand_info winbond_spinand_table[] = { &update_cache_variants), 0, SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), - SPINAND_INFO("W25N04KW", - SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x23), - NAND_MEMORG(1, 2048, 128, 64, 4096, 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("W25N01GW", - SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x21), - NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), - NAND_ECCREQ(1, 512), - SPINAND_INFO_OP_VARIANTS(&read_cache_variants, - &write_cache_variants, - &update_cache_variants), - 0, - SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), - SPINAND_INFO("W25N04KV", + /* 4G-bit densities */ + SPINAND_INFO("W25N04KV", /* 3.3V */ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x23), NAND_MEMORG(1, 2048, 128, 64, 4096, 40, 2, 1, 1), NAND_ECCREQ(8, 512), @@ -235,6 +230,15 @@ static const struct spinand_info winbond_spinand_table[] = { &update_cache_variants), 0, SPINAND_ECCINFO(&w25n02kv_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), + 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) -- 2.43.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] mtd: spi-nand: winbond: Sort the devices 2024-10-09 12:50 ` [PATCH 4/4] mtd: spi-nand: winbond: Sort the devices Miquel Raynal @ 2024-10-09 13:36 ` Frieder Schrempf 0 siblings, 0 replies; 13+ messages in thread From: Frieder Schrempf @ 2024-10-09 13:36 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: Steam Lin, Thomas Petazzoni, Md Sadre Alam, Sridharan S N On 09.10.24 2:50 PM, Miquel Raynal wrote: > Use alphabetical order, not because it's pretty, but because it makes > sense. This way the devices are listed by density, and then by hardware > feature set. Add comments to make the list more understandable. > > There is no intended functional change. > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de> ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2024-10-21 10:04 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-10-09 12:49 [PATCH 0/4] mtd: spinand: winbond: Fix chip descriptions Miquel Raynal 2024-10-09 12:49 ` [PATCH 1/4] mtd: spi-nand: winbond: Fix 512GW and 02JW OOB layout Miquel Raynal 2024-10-09 13:16 ` Frieder Schrempf 2024-10-21 10:02 ` Miquel Raynal 2024-10-09 12:50 ` [PATCH 2/4] mtd: spi-nand: winbond: Fix 512GW, 01GW, 01JW and 02JW ECC information Miquel Raynal 2024-10-09 13:33 ` Frieder Schrempf 2024-10-09 14:47 ` Miquel Raynal 2024-10-21 10:02 ` Miquel Raynal 2024-10-09 12:50 ` [PATCH 3/4] mtd: spi-nand: winbond: Ignore the last ID characters Miquel Raynal 2024-10-09 13:33 ` Frieder Schrempf 2024-10-21 10:02 ` Miquel Raynal 2024-10-09 12:50 ` [PATCH 4/4] mtd: spi-nand: winbond: Sort the devices Miquel Raynal 2024-10-09 13:36 ` Frieder Schrempf
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox