Re: [PATCH] AT91RM9200 NAND support

Savin Zlobec
2006-06-20T10:40:44Z

Thomas Gleixner wrote:

>On Tue, 2006-06-20 at 11:07 +0200, Savin Zlobec wrote:
>
>
>>I've put the kernel with latest mtd on my board and got the following:
>>
>>Nand is recognized as 'NAND device: Manufacturer ID: 0x98, Chip ID: 0x75
>>(Toshiba NAND 32MiB 3,3V 8-bit)',
>>should be 'NAND device: Manufacturer ID: 0xec, Chip ID: 0x75 (Samsung
>>NAND 32MiB 3,3V 8-bit)'.
>>
>>No bad blocks are detected at initial nand scan, but when running
>>flash_eraseall all blocks are found bad.
>>
>>
>
>Hmm. The interface has not changed, AFAICT. What version of
>flash_eraseall are you using and which commandline options ?
>
>Can you verify with the latest mtd-utils from
>
>http://git.infradead.org/?p=mtd-utils.git;a=summary
>
>
I did the following modifications to nand_base.c :

--- drivers/mtd/nand/nand_base.c.orig 2006-06-20 12:19:10.000000000 +0200
+++ drivers/mtd/nand/nand_base.c 2006-06-20 12:18:51.000000000 +0200
@@ -1134,10 +1134,6 @@
else
buf += ops->ooblen;

- readlen -= ops->ooblen;
- if (!readlen)
- break;
-
if (!(chip->options & NAND_NO_READRDY)) {
/*
* Apply delay or wait for ready/busy pin. Do this
@@ -1151,6 +1147,10 @@
nand_wait_ready(mtd);
}

+ readlen -= ops->ooblen;
+ if (!readlen)
+ break;
+
/* Increment page address */
realpage++;

And managed to erase the nand flash and mount JFFS2 on it, but writting
still
didn't work - got errors like :

Data CRC d507eb40 != calculated CRC 2e617dde for node at 00e4f700

The I put a call to nand_wait_ready at the top of nand_command function and
as far as I could test everything worked (exept that the flash is still
recognized
as Toshiba (0x98) not Samsung (0xec)).

It looks (to me) that there are still some parts of the code that should
wait for
nand to get ready before sending commands.

savin