[1/1] mtd: rawnand: add support for TH58NYG3S0HBAI4 NAND flash

Message ID 20231021150212.20509-1-amadeus@jmu.edu.cn
State New
Headers
Series [1/1] mtd: rawnand: add support for TH58NYG3S0HBAI4 NAND flash |

Commit Message

Chukun Pan Oct. 21, 2023, 3:02 p.m. UTC
  The Toshiba TH58NYG3S0HBAI4 is detected with 128 byte OOB while the flash
has 256 bytes OOB. This adds a static NAND ID entry to correct this.

Tested on Arcadyan AW1000 flashed with OpenWrt.

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
---
 drivers/mtd/nand/raw/nand_ids.c | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

Miquel Raynal Oct. 23, 2023, 7:54 a.m. UTC | #1
Hi Chukun,

amadeus@jmu.edu.cn wrote on Sat, 21 Oct 2023 23:02:12 +0800:

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

Any way you can detect this and fix the parameter page at run time
instead?

> Tested on Arcadyan AW1000 flashed with OpenWrt.
> 
> Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
> ---
>  drivers/mtd/nand/raw/nand_ids.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/mtd/nand/raw/nand_ids.c b/drivers/mtd/nand/raw/nand_ids.c
> index 650351c62af6..2b871dfd1d09 100644
> --- a/drivers/mtd/nand/raw/nand_ids.c
> +++ b/drivers/mtd/nand/raw/nand_ids.c
> @@ -58,6 +58,9 @@ struct nand_flash_dev nand_flash_ids[] = {
>  		{ .id = {0xad, 0xde, 0x14, 0xa7, 0x42, 0x4a} },
>  		  SZ_16K, SZ_8K, SZ_4M, NAND_NEED_SCRAMBLING, 6, 1664,
>  		  NAND_ECC_INFO(40, SZ_1K) },
> +	{"TH58NYG3S0HBAI4 8G 1.8V 8-bit",
> +		{ .id = {0x98, 0xa3, 0x91, 0x26, 0x76} },
> +		  SZ_4K, SZ_1K, SZ_256K, 0, 4, 256, NAND_ECC_INFO(8, SZ_512) },
>  	{"TH58NVG2S3HBAI4 4G 3.3V 8-bit",
>  		{ .id = {0x98, 0xdc, 0x91, 0x15, 0x76} },
>  		  SZ_2K, SZ_512, SZ_128K, 0, 5, 128, NAND_ECC_INFO(8, SZ_512) },


Thanks,
Miquèl
  
Chukun Pan Oct. 29, 2023, 7:20 a.m. UTC | #2
Hi Miquel,

> Any way you can detect this and fix the parameter page at run time
> instead?

Sorry but I don't know, I know very little about this.

Thanks,
Chukun
  
Miquel Raynal Oct. 29, 2023, 1:48 p.m. UTC | #3
Hi Chukun,

amadeus@jmu.edu.cn wrote on Sun, 29 Oct 2023 15:20:05 +0800:

> Hi Miquel,
> 
> > Any way you can detect this and fix the parameter page at run time
> > instead?  
> 
> Sorry but I don't know, I know very little about this.
> 
> Thanks,
> Chukun
> 

It's more like a request than a question. Please fix the parameter page
at run time by registering a ->.fixup_onfi_param_page() hook in
Toshiba's nand_manufacturer_ops structure.

Thanks,
Miquèl
  
Chukun Pan Nov. 14, 2023, 12:30 p.m. UTC | #4
Hi Miquel,

> It's more like a request than a question. Please fix the parameter page
> at run time by registering a ->.fixup_onfi_param_page() hook in
> Toshiba's nand_manufacturer_ops structure.

Sorry for the late reply. This flash is not ONFI compliant NAND,
so onfi fixup can't work. Datasheet available at:
https://europe.kioxia.com/content/dam/kioxia/newidr/productinfo/datasheet/201910/DST_TH58NYG3S0HBAI4-TDE_EN_31565.pdf

Thanks,
Chukun
  
Chukun Pan Nov. 15, 2023, 2 p.m. UTC | #5
However, the NAND ID of this flash is {0x98, 0xa3, 0x91, 0x26},
the last ID bytes is missing. Maybe this patch should be put in
OpenWrt as a hack.

Thanks,
Chukun
  
Miquel Raynal Nov. 16, 2023, 3:46 p.m. UTC | #6
Hi Chukun,

amadeus@jmu.edu.cn wrote on Tue, 14 Nov 2023 20:30:08 +0800:

> Hi Miquel,
> 
> > It's more like a request than a question. Please fix the parameter page
> > at run time by registering a ->.fixup_onfi_param_page() hook in
> > Toshiba's nand_manufacturer_ops structure.  
> 
> Sorry for the late reply. This flash is not ONFI compliant NAND,
> so onfi fixup can't work. Datasheet available at:
> https://europe.kioxia.com/content/dam/kioxia/newidr/productinfo/datasheet/201910/DST_TH58NYG3S0HBAI4-TDE_EN_31565.pdf

You said in your commit log that this flash was detected with a smaller
(or bigger, I don't remember) OOB size than it really has. This number
comes from somewhere? Is it an existing ID? Is it an auto-discovery
mechanism?

If it's an ID then why not adding a new entry. Otherwise you can I
guess make some changes in the device geometry in the manufacturer init
operation as well if the fixup-onfi hook does no apply.

Thanks,
Miquèl
  

Patch

diff --git a/drivers/mtd/nand/raw/nand_ids.c b/drivers/mtd/nand/raw/nand_ids.c
index 650351c62af6..2b871dfd1d09 100644
--- a/drivers/mtd/nand/raw/nand_ids.c
+++ b/drivers/mtd/nand/raw/nand_ids.c
@@ -58,6 +58,9 @@  struct nand_flash_dev nand_flash_ids[] = {
 		{ .id = {0xad, 0xde, 0x14, 0xa7, 0x42, 0x4a} },
 		  SZ_16K, SZ_8K, SZ_4M, NAND_NEED_SCRAMBLING, 6, 1664,
 		  NAND_ECC_INFO(40, SZ_1K) },
+	{"TH58NYG3S0HBAI4 8G 1.8V 8-bit",
+		{ .id = {0x98, 0xa3, 0x91, 0x26, 0x76} },
+		  SZ_4K, SZ_1K, SZ_256K, 0, 4, 256, NAND_ECC_INFO(8, SZ_512) },
 	{"TH58NVG2S3HBAI4 4G 3.3V 8-bit",
 		{ .id = {0x98, 0xdc, 0x91, 0x15, 0x76} },
 		  SZ_2K, SZ_512, SZ_128K, 0, 5, 128, NAND_ECC_INFO(8, SZ_512) },