mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH] nand_base: detect more ONFI flash
@ 2013-04-10  9:29 Eric Bénard
  2013-04-10 15:22 ` Eric Bénard
  0 siblings, 1 reply; 4+ messages in thread
From: Eric Bénard @ 2013-04-10  9:29 UTC (permalink / raw)
  To: barebox

if the flash has a known type, the ONFI detection won't occur
and thus we may not detect the right parameters.
By testing both namd and pagesize, as done in the kernel, we
can detect ONFI flash with know IDs.

As an example on an i.MX53 board :
- without the patch :
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xd3
(Micron NAND 1GiB 3,3V 8-bit), page size: 4096, OOB size: 128

- with the patch :
ONFI flash detected ... ONFI param page 0 valid
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xd3
(Micron MT29F8G08ABACAWP), page size: 4096, OOB size: 224

in the first case the OOB size is wrong.

Signed-off-by: Eric Bénard <eric@eukrea.com>
---
 drivers/mtd/nand/nand_base.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index fa10d95..5a4a52d 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -1188,7 +1188,7 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
 	}
 
 	chip->onfi_version = 0;
-	if (!type) {
+	if (!type->name || !type->pagesize) {
 		/* Check is chip is ONFI compliant */
 		ret = nand_flash_detect_onfi(mtd, chip, &busw);
 		if (ret)
-- 
1.7.11.7


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] nand_base: detect more ONFI flash
  2013-04-10  9:29 [PATCH] nand_base: detect more ONFI flash Eric Bénard
@ 2013-04-10 15:22 ` Eric Bénard
  2013-04-10 16:04   ` [PATCH v2] " Eric Bénard
  0 siblings, 1 reply; 4+ messages in thread
From: Eric Bénard @ 2013-04-10 15:22 UTC (permalink / raw)
  To: barebox

Hi Sascha,

Le Wed, 10 Apr 2013 11:29:18 +0200,
Eric Bénard <eric@eukrea.com> a écrit :

> if the flash has a known type, the ONFI detection won't occur
> and thus we may not detect the right parameters.
> By testing both namd and pagesize, as done in the kernel, we
> can detect ONFI flash with know IDs.
> 
> As an example on an i.MX53 board :
> - without the patch :
> NAND device: Manufacturer ID: 0x2c, Chip ID: 0xd3
> (Micron NAND 1GiB 3,3V 8-bit), page size: 4096, OOB size: 128
> 
> - with the patch :
> ONFI flash detected ... ONFI param page 0 valid
> NAND device: Manufacturer ID: 0x2c, Chip ID: 0xd3
> (Micron MT29F8G08ABACAWP), page size: 4096, OOB size: 224
> 
> in the first case the OOB size is wrong.
> 
> Signed-off-by: Eric Bénard <eric@eukrea.com>
> ---
>  drivers/mtd/nand/nand_base.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
> index fa10d95..5a4a52d 100644
> --- a/drivers/mtd/nand/nand_base.c
> +++ b/drivers/mtd/nand/nand_base.c
> @@ -1188,7 +1188,7 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
>  	}
>  
>  	chip->onfi_version = 0;
> -	if (!type) {
> +	if (!type->name || !type->pagesize) {
>  		/* Check is chip is ONFI compliant */
>  		ret = nand_flash_detect_onfi(mtd, chip, &busw);
>  		if (ret)

please dont apply this patch as it breaks the support with an ONFI flash
not listed in the id tables. I'm reworking it right now.

Eric

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2] nand_base: detect more ONFI flash
  2013-04-10 15:22 ` Eric Bénard
@ 2013-04-10 16:04   ` Eric Bénard
  2013-04-11  8:47     ` Sascha Hauer
  0 siblings, 1 reply; 4+ messages in thread
From: Eric Bénard @ 2013-04-10 16:04 UTC (permalink / raw)
  To: barebox

if the flash has a known type, the ONFI detection won't occur
and thus we may not detect the right parameters.
By testing both namd and pagesize, as done in the kernel, we
can detect ONFI flash with know IDs.

As an example on an i.MX53 board :
- without the patch :
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xd3
(Micron NAND 1GiB 3,3V 8-bit), page size: 4096, OOB size: 128

- with the patch :
ONFI flash detected ... ONFI param page 0 valid
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xd3
(Micron MT29F8G08ABACAWP), page size: 4096, OOB size: 224

in the first case the OOB size is wrong.

Signed-off-by: Eric Bénard <eric@eukrea.com>
---
v2: correctly integrate the kernel change so that if the flash ID
is not known (when the flash in a recent ONFI one), we don't get
a NULL pointer for type and thus a crash.

 drivers/mtd/nand/nand_base.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index fa10d95..c63aaf9 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -1179,16 +1179,15 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
 		return ERR_PTR(-ENODEV);
 	}
 
-	/* Lookup the flash id */
-	for (i = 0; nand_flash_ids[i].name != NULL; i++) {
-		if (dev_id == nand_flash_ids[i].id) {
-			type =  &nand_flash_ids[i];
+	if (!type)
+		type = nand_flash_ids;
+
+	for (; type->name != NULL; type++)
+		if (dev_id == type->id)
 			break;
-		}
-	}
 
 	chip->onfi_version = 0;
-	if (!type) {
+	if (!type->name || !type->pagesize) {
 		/* Check is chip is ONFI compliant */
 		ret = nand_flash_detect_onfi(mtd, chip, &busw);
 		if (ret)
-- 
1.7.11.7


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] nand_base: detect more ONFI flash
  2013-04-10 16:04   ` [PATCH v2] " Eric Bénard
@ 2013-04-11  8:47     ` Sascha Hauer
  0 siblings, 0 replies; 4+ messages in thread
From: Sascha Hauer @ 2013-04-11  8:47 UTC (permalink / raw)
  To: Eric Bénard; +Cc: barebox

On Wed, Apr 10, 2013 at 06:04:52PM +0200, Eric Bénard wrote:
> if the flash has a known type, the ONFI detection won't occur
> and thus we may not detect the right parameters.
> By testing both namd and pagesize, as done in the kernel, we
> can detect ONFI flash with know IDs.
> 
> As an example on an i.MX53 board :
> - without the patch :
> NAND device: Manufacturer ID: 0x2c, Chip ID: 0xd3
> (Micron NAND 1GiB 3,3V 8-bit), page size: 4096, OOB size: 128
> 
> - with the patch :
> ONFI flash detected ... ONFI param page 0 valid
> NAND device: Manufacturer ID: 0x2c, Chip ID: 0xd3
> (Micron MT29F8G08ABACAWP), page size: 4096, OOB size: 224
> 
> in the first case the OOB size is wrong.
> 
> Signed-off-by: Eric Bénard <eric@eukrea.com>

Applied, thanks

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-04-11  8:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-10  9:29 [PATCH] nand_base: detect more ONFI flash Eric Bénard
2013-04-10 15:22 ` Eric Bénard
2013-04-10 16:04   ` [PATCH v2] " Eric Bénard
2013-04-11  8:47     ` Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox