Patchwork mtd : print out the page size and oob size after parsing out the nand

login
register
mail settings
Submitter Huang Shijie
Date April 9, 2012, 3:41 a.m.
Message ID <1333942897-7392-1-git-send-email-b32955@freescale.com>
Download mbox | patch
Permalink /patch/151391/
State New
Headers show

Comments

Huang Shijie - April 9, 2012, 3:41 a.m.
Some not-supported nand chips may pass the current parsing code,
and get the wrong page size and oob size. Sometimes, it's hard to notice
that you get the wrong values, because there is no warning or error.

So it's useful to print out the page size and oob size in the end of
the parsing function. We can check these values with the datasheet of the nand
chip as soon as possible.

Signed-off-by: Huang Shijie <b32955@freescale.com>
---
 drivers/mtd/nand/nand_base.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)
Florian Fainelli - April 10, 2012, 10:28 a.m.
Hi Huang,

Le 04/09/12 05:41, Huang Shijie a écrit :
> Some not-supported nand chips may pass the current parsing code,
> and get the wrong page size and oob size. Sometimes, it's hard to notice
> that you get the wrong values, because there is no warning or error.
>
> So it's useful to print out the page size and oob size in the end of
> the parsing function. We can check these values with the datasheet of the nand
> chip as soon as possible.

Relying on the kernel to print something to assert the correctness of 
the NAND detection is really weak, you'd better query these properties 
in userland. Also, I am afraid everyone adds a new NAND property print-out.

>
> Signed-off-by: Huang Shijie<b32955@freescale.com>
> ---
>   drivers/mtd/nand/nand_base.c |    7 ++++---
>   1 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> index 47b19c0..6315b94 100644
> --- a/drivers/mtd/nand/nand_base.c
> +++ b/drivers/mtd/nand/nand_base.c
> @@ -3155,9 +3155,10 @@ ident_done:
>   		chip->cmdfunc = nand_command_lp;
>
>   	pr_info("NAND device: Manufacturer ID:"
> -		" 0x%02x, Chip ID: 0x%02x (%s %s)\n", *maf_id, *dev_id,
> -		nand_manuf_ids[maf_idx].name,
> -		chip->onfi_version ? chip->onfi_params.model : type->name);
> +		" 0x%02x, Chip ID: 0x%02x (%s %s), pagesize: %d, oobsize: %d\n",
> +		*maf_id, *dev_id, nand_manuf_ids[maf_idx].name,
> +		chip->onfi_version ? chip->onfi_params.model : type->name,
> +		mtd->writesize, mtd->oobsize);
>
>   	return type;
>   }
Huang Shijie - April 11, 2012, 2:01 a.m.
Hi,
> Relying on the kernel to print something to assert the correctness of 
> the NAND detection is really weak, you'd better query these properties 
> in userland. Also, I am afraid everyone adds a new NAND property 
> print-out.
thanks.

If no one like this patch, just ignore it.

Huang Shijie
Artem Bityutskiy - April 21, 2012, 2:21 p.m.
On Wed, 2012-04-11 at 10:01 +0800, Huang Shijie wrote:
> Hi,
> > Relying on the kernel to print something to assert the correctness of 
> > the NAND detection is really weak, you'd better query these properties 
> > in userland. Also, I am afraid everyone adds a new NAND property 
> > print-out.
> thanks.
> 
> If no one like this patch, just ignore it.

Yeah, relying on printks is not reliable, but printing the basic
geometry information very useful, I think.
Artem Bityutskiy - April 22, 2012, 5:15 a.m.
On Mon, 2012-04-09 at 11:41 +0800, Huang Shijie wrote:
>  	pr_info("NAND device: Manufacturer ID:"
> -		" 0x%02x, Chip ID: 0x%02x (%s %s)\n", *maf_id, *dev_id,
> -		nand_manuf_ids[maf_idx].name,
> -		chip->onfi_version ? chip->onfi_params.model : type->name);
> +		" 0x%02x, Chip ID: 0x%02x (%s %s), pagesize: %d, oobsize: %d\n",
> +		*maf_id, *dev_id, nand_manuf_ids[maf_idx].name,
> +		chip->onfi_version ? chip->onfi_params.model : type->name,
> +		mtd->writesize, mtd->oobsize);

I've amended this to print "page size" and "OOB size" instead, because
this is a bit more user-friendly, and pushed to l2-mtd.git, thanks.

Patch

diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 47b19c0..6315b94 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -3155,9 +3155,10 @@  ident_done:
 		chip->cmdfunc = nand_command_lp;
 
 	pr_info("NAND device: Manufacturer ID:"
-		" 0x%02x, Chip ID: 0x%02x (%s %s)\n", *maf_id, *dev_id,
-		nand_manuf_ids[maf_idx].name,
-		chip->onfi_version ? chip->onfi_params.model : type->name);
+		" 0x%02x, Chip ID: 0x%02x (%s %s), pagesize: %d, oobsize: %d\n",
+		*maf_id, *dev_id, nand_manuf_ids[maf_idx].name,
+		chip->onfi_version ? chip->onfi_params.model : type->name,
+		mtd->writesize, mtd->oobsize);
 
 	return type;
 }