Skip to contentSkip to conversation

mtd: rawnand: add support for Toshiba TC58NVG0S3HTA00 NAND flash

PATCH Applied Andreas Böhler 4 participants 9 messages Apr 20, 2022 – Jun 9, 2022

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mtd: rawnand: add support for Toshiba TC58NVG0S3HTA00 NAND flash

The Toshiba TC58NVG0S3HTA00 is detected with 64 byte OOB while the flash has 128 bytes OOB. This adds a static NAND ID entry to correct this.

Tested on FRITZ!Box 7530 flashed with OpenWrt.

---
 drivers/mtd/nand/raw/nand_ids.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/mtd/nand/raw/nand_ids.c +3 -0
index 6e41902be35f..d64adbd1ce6b 100644
@@ -29,6 +29,9 @@ struct nand_flash_dev nand_flash_ids[] = {
 	{"TC58NVG0S3E 1G 3.3V 8-bit",
 		{ .id = {0x98, 0xd1, 0x90, 0x15, 0x76, 0x14, 0x01, 0x00} },
 		  SZ_2K, SZ_128, SZ_128K, 0, 8, 64, NAND_ECC_INFO(1, SZ_512), },
+	{"TC58NVG0S3HTA00 1G 3.3V 8-bit",
+		{ .id = {0x98, 0xf1, 0x80, 0x15} },
+		  SZ_2K, SZ_128, SZ_128K, 0, 4, 128, NAND_ECC_INFO(8, SZ_512), },
 	{"TC58NVG2S0F 4G 3.3V 8-bit",
 		{ .id = {0x98, 0xdc, 0x90, 0x26, 0x76, 0x15, 0x01, 0x08} },
 		  SZ_4K, SZ_512, SZ_256K, 0, 8, 224, NAND_ECC_INFO(4, SZ_512) },
Signature · 6 lines
2.35.1


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
maintainer Applied
#1 lore raw
Quoted 6 lines · On Wed, 2022-04-20 at 10:40:34 UTC, =?utf-8?q?Andreas_B=C3=B6hler?= wrote:

The Toshiba TC58NVG0S3HTA00 is detected with 64 byte OOB while the flash has 128 bytes OOB. This adds a static NAND ID entry to correct this.

Tested on FRITZ!Box 7530 flashed with OpenWrt.

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks.

Miquel

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

#2 lore raw
In reply to Andreas Böhler

Hi,

Quoted 10 lines · Andreas Böhler

The Toshiba TC58NVG0S3HTA00 is detected with 64 byte OOB while the flash has 128 bytes OOB. This adds a static NAND ID entry to correct this.

Tested on FRITZ!Box 7530 flashed with OpenWrt.

---

drivers/mtd/nand/raw/nand_ids.c struct nand_flash_dev nand_flash_ids[] = { · line 34

Quoted 4 lines
drivers/mtd/nand/raw/nand_ids.c +3 -0
@@ -29,6 +29,9 @@ struct nand_flash_dev nand_flash_ids[] = {
[...]
+	{"TC58NVG0S3HTA00 1G 3.3V 8-bit",
+		{ .id = {0x98, 0xf1, 0x80, 0x15} },
+		  SZ_2K, SZ_128, SZ_128K, 0, 4, 128, NAND_ECC_INFO(8, SZ_512), },

@Minquel, there is more to this patch than it meets the eye.

It turned out this "4-byte" ID might have been an honest mistake. We have this documented in the OpenWrt Github issue #9962 [0] titled:
"Fritzbox memory chip misdetection since 0bc794a6 (master and 22.03)" (some parts of this are also in the openwrt forum. But there's a link to the thread in the github issue).

Regrettably, I do think that Andreas chip might have been a counterfeit or damaged (that should have ended up in the garbage bin instead of his router).

His chips reports just the first four bytes of the chip ID:
"98 f1 80 15 00 00 00 00". But according to Koxias/Toshiba's datasheet [1], there should have been at least another 5th non-zero byte in the ID. (I found a linux-mtd post [2] with the same chip and the OP reports:
"0x98 0xf1 0x80 0x15 0x72 0x16 0x08 0x00" for the full ID).

What to do in this situation? Because the patch as is is causing boot failures for devices with other Kioxia/Toshiba chips. This is because they also match the first four bytes but have different OOB sizes (64, instead of 128).

Andreas has proposed the following: update the id_len to 8, this will help fix the boot failures with other chips like the TC58BVG0S3HTA00, since it has different values for the chip-id after the 4th byte.|
|

|{"TC58NVG0S3HTA00 1G 3.3V 8-bit", { .id = {0x98, 0xf1, 0x80, 0x15} }, SZ_2K, SZ_128, SZ_128K, 0, 8, 128, NAND_ECC_INFO(8, SZ_512), },|

||Reverting would be an option, but if this is a counterfeit situation then similar "chips" could end up in other devices and we are just unlucky ones that are the first to report it :-( .
||

|Regards, Christian|

[0] <https://github.com/openwrt/openwrt/issues/9962>
[1] <https://media.digikey.com/pdf/Data%20Sheets/Toshiba%20PDFs/KIOXIA_TC58NVG0S3HTA00_Rev2.00_E191001C.pdf> page 35
[2] <https://linux-mtd.infradead.narkive.com/8DRxas2M/patch-mtd-nand-detect-oob-size-for-toshiba-24nm-raw-slc>

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

maintainer
#3 lore raw

Hi Christian,

[email protected] wrote on Sun, 5 Jun 2022 17:31:33 +0200:

Quoted 30 lines

Hi,

Quoted 10 lines · Andreas Böhler

The Toshiba TC58NVG0S3HTA00 is detected with 64 byte OOB while the flash has 128 bytes OOB. This adds a static NAND ID entry to correct this.

Tested on FRITZ!Box 7530 flashed with OpenWrt.

---

drivers/mtd/nand/raw/nand_ids.c struct nand_flash_dev nand_flash_ids[] = { · line 34

Quoted 4 lines
drivers/mtd/nand/raw/nand_ids.c +3 -0
@@ -29,6 +29,9 @@ struct nand_flash_dev nand_flash_ids[] = {
[...]
+	{"TC58NVG0S3HTA00 1G 3.3V 8-bit",
+		{ .id = {0x98, 0xf1, 0x80, 0x15} },
+		  SZ_2K, SZ_128, SZ_128K, 0, 4, 128, NAND_ECC_INFO(8, SZ_512), },  

@Minquel, there is more to this patch than it meets the eye.

It turned out this "4-byte" ID might have been an honest mistake. We have this documented in the OpenWrt Github issue #9962 [0] titled:
"Fritzbox memory chip misdetection since 0bc794a6 (master and 22.03)" (some parts of this are also in the openwrt forum. But there's a link to the thread in the github issue).

Regrettably, I do think that Andreas chip might have been a counterfeit or damaged (that should have ended up in the garbage bin instead of his router).

Quoted 5 lines

His chips reports just the first four bytes of the chip ID:
"98 f1 80 15 00 00 00 00". But according to Koxias/Toshiba's datasheet [1], there should have been at least another 5th non-zero byte in the ID. (I found a linux-mtd post [2] with the same chip and the OP reports:
"0x98 0xf1 0x80 0x15 0x72 0x16 0x08 0x00" for the full ID).

That's bad luck...

Quoted 9 lines

What to do in this situation? Because the patch as is is causing boot failures for devices with other Kioxia/Toshiba chips. This is because they also match the first four bytes but have different OOB sizes (64, instead of 128).

Andreas has proposed the following: update the id_len to 8, this will help fix the boot failures with other chips like the TC58BVG0S3HTA00, since it has different values for the chip-id after the 4th byte.|
|

Quoted 5 lines

|{"TC58NVG0S3HTA00 1G 3.3V 8-bit", { .id = {0x98, 0xf1, 0x80, 0x15} }, SZ_2K, SZ_128, SZ_128K, 0, 8, 128, NAND_ECC_INFO(8, SZ_512), },|

||Reverting would be an option, but if this is a counterfeit situation then similar "chips" could end up in other devices and we are just unlucky ones that are the first to report it :-( .

Do you have a way to probe the amount of affected devices among the community or perhaps by talking to the vendor?

Reverting seems the safest option here, not knowing how many devices have these damaged/counterfeit chips. If it is just a couple and only on Fritzboxes, as suggested in the Github issue this patch could be carried through OpenWRT and that would seem more future proof IMHO.

The second solution (enlarging the ID length) might work, but feels dirty, that's why I would go for reverting this immediately (I will send it through fixes), so that the support for this chip might just disappear "silently". Then we have another release to decide whether it is appropriate to use the 8-byte ID hack in the mainline kernel.

Can you please send a patch?

Quoted 8 lines

||

|Regards, Christian|

[0] <https://github.com/openwrt/openwrt/issues/9962>
[1] <https://media.digikey.com/pdf/Data%20Sheets/Toshiba%20PDFs/KIOXIA_TC58NVG0S3HTA00_Rev2.00_E191001C.pdf> page 35
[2] <https://linux-mtd.infradead.narkive.com/8DRxas2M/patch-mtd-nand-detect-oob-size-for-toshiba-24nm-raw-slc>

Thanks,
Miquèl

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

#4 lore raw

PATCH 1/1 Revert "mtd: rawnand: add support for Toshiba TC58NVG0S3HTA00 NAND flash"

This reverts commit 3380557fc7e28d9bce7607e16d98f123d36da4ca.

It turned out this "4-byte" ID might have been an honest mistake. Regrettably, the chip Andreas has might be a counterfeit or is damaged in some other way and shouldn't have ended up in a router.

Andreas reported his chip is returning just four bytes:
"98 f1 80 15 00 00 00 00".

However, according to Kioxia/Toshiba's datasheet, there should have been at least another byte that would have contained the correct OOB size that Andreas needed.

Thanks to Peter-vdL for reporting this issue and Hannu Nyman as well as neg2led who did the debugging.

---
 drivers/mtd/nand/raw/nand_ids.c | 3 ---
 1 file changed, 3 deletions(-)
drivers/mtd/nand/raw/nand_ids.c +0 -3
index 88c2440b47d8..dacc5529b3df 100644
@@ -29,9 +29,6 @@ struct nand_flash_dev nand_flash_ids[] = {
 	{"TC58NVG0S3E 1G 3.3V 8-bit",
 		{ .id = {0x98, 0xd1, 0x90, 0x15, 0x76, 0x14, 0x01, 0x00} },
 		  SZ_2K, SZ_128, SZ_128K, 0, 8, 64, NAND_ECC_INFO(1, SZ_512), },
-	{"TC58NVG0S3HTA00 1G 3.3V 8-bit",
-		{ .id = {0x98, 0xf1, 0x80, 0x15} },
-		  SZ_2K, SZ_128, SZ_128K, 0, 4, 128, NAND_ECC_INFO(8, SZ_512), },
 	{"TC58NVG2S0F 4G 3.3V 8-bit",
 		{ .id = {0x98, 0xdc, 0x90, 0x26, 0x76, 0x15, 0x01, 0x08} },
 		  SZ_4K, SZ_512, SZ_256K, 0, 8, 224, NAND_ECC_INFO(4, SZ_512) },
Signature · 6 lines
2.36.1


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
maintainer
#5 lore raw

Re: [PATCH] Revert "mtd: rawnand: add support for Toshiba TC58NVG0S3HTA00 NAND flash"

Hi Christian,

[email protected] wrote on Mon, 6 Jun 2022 21:29:52 +0200:

Quoted 6 lines

This reverts commit 3380557fc7e28d9bce7607e16d98f123d36da4ca.

It turned out this "4-byte" ID might have been an honest mistake. Regrettably, the chip Andreas has might be a counterfeit or is damaged in some other way and shouldn't have ended up in a router.

Quoted 6 lines

Andreas reported his chip is returning just four bytes:
"98 f1 80 15 00 00 00 00".

However, according to Kioxia/Toshiba's datasheet, there should have been at least another byte that would have contained the correct OOB size that Andreas needed.

Maybe here we should mention the other alternative and explain why we went for an immediate revert instead (knowing that we wnat to buy time to eventually properly fix it and possibly inventory the broken chips.

Quoted 2 lines

Thanks to Peter-vdL for reporting this issue and Hannu Nyman as well as neg2led who did the debugging.

Maybe you can refer here to OpenWRT tools otherwise the names do not mean anything?

Quoted 1 line
Cc Andreas B<C3><B6>hler <[email protected]>

Looks like there is an issue with Andreas' name, I can fix it inline if you don't know how to proceed, and if you give me the right character to put there.

Quoted 1 line
Link is enough :)
Quoted 10 lines
---
 drivers/mtd/nand/raw/nand_ids.c | 3 ---
 1 file changed, 3 deletions(-)
drivers/mtd/nand/raw/nand_ids.c +0 -0
index 88c2440b47d8..dacc5529b3df 100644

drivers/mtd/nand/raw/nand_ids.c struct nand_flash_dev nand_flash_ids[] = { · line 34

Quoted 9 lines
drivers/mtd/nand/raw/nand_ids.c +0 -3
@@ -29,9 +29,6 @@ struct nand_flash_dev nand_flash_ids[] = {
 	{"TC58NVG0S3E 1G 3.3V 8-bit",
 		{ .id = {0x98, 0xd1, 0x90, 0x15, 0x76, 0x14, 0x01, 0x00} },
 		  SZ_2K, SZ_128, SZ_128K, 0, 8, 64, NAND_ECC_INFO(1, SZ_512), },
-	{"TC58NVG0S3HTA00 1G 3.3V 8-bit",
-		{ .id = {0x98, 0xf1, 0x80, 0x15} },
-		  SZ_2K, SZ_128, SZ_128K, 0, 4, 128, NAND_ECC_INFO(8, SZ_512), },
 	{"TC58NVG2S0F 4G 3.3V 8-bit",
 		{ .id = {0x98, 0xdc, 0x90, 0x26, 0x76, 0x15, 0x01, 0x08} },
 		  SZ_4K, SZ_512, SZ_256K, 0, 8, 224, NAND_ECC_INFO(4, SZ_512) },

Thanks,
Miquèl

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

#6 lore raw

PATCH v2 1/1 Revert "mtd: rawnand: add support for Toshiba TC58NVG0S3HTA00 NAND flash"

This reverts commit 3380557fc7e28d9bce7607e16d98f123d36da4ca.

It turned out this "4-byte" ID might have been an honest mistake. Regrettably, the chip Andreas has might be a counterfeit or is damaged in some other way and shouldn't have ended up in a router.

Andreas reported his chip is returning just four bytes:
"98 f1 80 15 00 00 00 00".

However, according to Kioxia/Toshiba's datasheet, there should have been at least another byte that would have contained the correct OOB size that Andreas needed.

Miquel and Andreas are both favoring reverting the patch over further, possibly hacky modifications:
"[Reverting] is the safest option here. Apart from this device, we do not know how many devices have these damaged/counterfeit chips. If it is just a couple and only on Fritzboxes, as suggested in the Github issue the patch could be carried through OpenWrt[...]"

Thanks to several users on the openwrt forum and github issue, who stayed along for the ride:
- Peter-vdL for reporting the issue and testing patches.
- neg2led and Hannu Nyman who did all the
datasheet digging and debugging.

---

v1->v2
- replaced the o-umlaut in Andreas' last name with "oe"
<https://en.wikipedia.org/wiki/%C3%96>
"In other languages that do not have the letter as part of the regular alphabet or in limited character sets such as ASCII, o-umlaut is frequently replaced with the digraph oe"
- added note about why the revert option was taken
(If the shout-out at the end is a problem, please just drop it
then. I don't want to cause any privacy related stomage aches).

---
 drivers/mtd/nand/raw/nand_ids.c | 3 ---
 1 file changed, 3 deletions(-)
drivers/mtd/nand/raw/nand_ids.c +0 -3
index 88c2440b47d8..dacc5529b3df 100644
@@ -29,9 +29,6 @@ struct nand_flash_dev nand_flash_ids[] = {
 	{"TC58NVG0S3E 1G 3.3V 8-bit",
 		{ .id = {0x98, 0xd1, 0x90, 0x15, 0x76, 0x14, 0x01, 0x00} },
 		  SZ_2K, SZ_128, SZ_128K, 0, 8, 64, NAND_ECC_INFO(1, SZ_512), },
-	{"TC58NVG0S3HTA00 1G 3.3V 8-bit",
-		{ .id = {0x98, 0xf1, 0x80, 0x15} },
-		  SZ_2K, SZ_128, SZ_128K, 0, 4, 128, NAND_ECC_INFO(8, SZ_512), },
 	{"TC58NVG2S0F 4G 3.3V 8-bit",
 		{ .id = {0x98, 0xdc, 0x90, 0x26, 0x76, 0x15, 0x01, 0x08} },
 		  SZ_4K, SZ_512, SZ_256K, 0, 8, 224, NAND_ECC_INFO(4, SZ_512) },
Signature · 6 lines
2.36.1


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
maintainer Applied
#7 lore raw

Re: [PATCH v2] Revert "mtd: rawnand: add support for Toshiba TC58NVG0S3HTA00 NAND flash"

Quoted 26 lines · Christian Lamparter

This reverts commit 3380557fc7e28d9bce7607e16d98f123d36da4ca.

It turned out this "4-byte" ID might have been an honest mistake. Regrettably, the chip Andreas has might be a counterfeit or is damaged in some other way and shouldn't have ended up in a router.

Andreas reported his chip is returning just four bytes:
"98 f1 80 15 00 00 00 00".

However, according to Kioxia/Toshiba's datasheet, there should have been at least another byte that would have contained the correct OOB size that Andreas needed.

Miquel and Andreas are both favoring reverting the patch over further, possibly hacky modifications:
"[Reverting] is the safest option here. Apart from this device, we do not know how many devices have these damaged/counterfeit chips. If it is just a couple and only on Fritzboxes, as suggested in the Github issue the patch could be carried through OpenWrt[...]"

Thanks to several users on the openwrt forum and github issue, who stayed along for the ride:
- Peter-vdL for reporting the issue and testing patches.
- neg2led and Hannu Nyman who did all the
datasheet digging and debugging.

Quoted 5 lines

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/fixes, thanks.

Miquel

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

#8 lore raw
In reply to Miquel Raynal

Hi Miquèl,

Quoted 10 lines · Miquel Raynal

[email protected] wrote on Sun, 5 Jun 2022

Quoted 9 lines

What to do in this situation? Because the patch as is is causing boot failures for devices with other Kioxia/Toshiba chips. This is because they also match the first four bytes but have different OOB sizes (64, instead of 128).

Andreas has proposed the following: update the id_len to 8, this will help fix the boot failures with other chips like the TC58BVG0S3HTA00, since it has different values for the chip-id after the 4th byte.|
|

Quoted 8 lines
Quoted 5 lines

|{"TC58NVG0S3HTA00 1G 3.3V 8-bit", { .id = {0x98, 0xf1, 0x80, 0x15} }, SZ_2K, SZ_128, SZ_128K, 0, 8, 128, NAND_ECC_INFO(8, SZ_512), },|

||Reverting would be an option, but if this is a counterfeit situation then similar "chips" could end up in other devices and we are just unlucky ones that are the first to report it :-( .

Do you have a way to probe the amount of affected devices among the community or perhaps by talking to the vendor?

So far no. I just heard about the (new?) AVM FritzBox 7530 revisions. These were probably created because of shortages/price hikes? From what I can tell (being somewhat biased there) the Fritz!Box 7530 and their variants (there are cut-down 7520 and 7510 models) as well as rebranded models from various ISPs in Germany.

One thing I want to point out is that Andreas mentioned in the github issue:
"I also found out that AVM matches just the four-byte ID in its GPL source code."

No idea what to think about this? Could AVM know about this to some degree?

Is there a way to contact Toshiba/Kioxia? The e-mail address I found in a previous patch seems to be dead :(. Anyone?

(Kioxia seems to have a B2B website about this topic:
https://personal.kioxia.com/en-emea/support/parallel-import.html

Though, I don't think this is geared towards us, the end-users...)

Quoted 4 lines

Reverting seems the safest option here, not knowing how many devices have these damaged/counterfeit chips. If it is just a couple and only on Fritzboxes, as suggested in the Github issue this patch could be carried through OpenWRT and that would seem more future proof IMHO.

Ok, I'll move Andreas modified patch around and add it to the ipq40xx' device-support patch heap.

Quoted 7 lines

The second solution (enlarging the ID length) might work, but feels dirty, that's why I would go for reverting this immediately (I will send it through fixes), so that the support for this chip might just disappear "silently". Then we have another release to decide whether it is appropriate to use the 8-byte ID hack in the mainline kernel.

Can you please send a patch?

Yes, should be in your inbox.

Regards,
Christian

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/