[PATCH 0/2] mtd: nand: raw: atmel: R/B gpio on sam9x60

Mihai.Sain at microchip.com Mihai.Sain at microchip.com
Tue Aug 8 15:40:26 CEST 2023

Hi Alex,

Please find bellow my answer:


Added Mihai who tested this a lot at some point in time


On 8/8/23 16:02, Alexander Dahl wrote:
> Hello everyone,
> this is a patch series wtih some real fixes _and_ a question or some 
> kind of support request in the cover letter.  I would be happy if 
> anyone could read the cover letter carefully and answer to that one 
> what might be the problem I see. O:-)
> I'm currently working on the sam9x60-curiosity board and especially 
> trying to get it booting from onboard raw NAND flash.  As reported in 
> my last series I got the flash recognized already.  However 
> interacting with it was terribly slow, because nand_wait_ready() 
> calling
> atmel_nand_dev_ready() ran into a 400ms timeout in several occasions, 
> especially when reading from the device.  Reading a single block 
> triggered that timeout two times per page, which summed up to over 50 
> seconds for 64 × 4096 = 256k Bytes!
> (You can have U-Boot print that warning from nand_wait_ready() by 
> increasing the console log level to at least "warn".)
> Note: the dts from atmel/next seems correct to me, I double checked 
> that again.  My own debug log messages showed the GPIO is accessed, 
> and if you add enough debug messages sometimes the timeout is not 
> reached, so I'm sure the NAND chip eventually switches that R/B line 
> and the code correctly sees that, that line level change however takes 
> ages, something between 400ms and 500ms most of the times.
> I vaguely remembered on SAMA5D2 the old atmel raw nand driver is used 
> which does not support reading the R/B signal, but nevertheless works.
> I'm not familiar in detail with those raw NAND flash chips, but as far 
> as I can understand, there are other ways to determine if the chip is 
> ready or busy.  So after I removed that rb-gpio parameter from 
> 'at91-sam9x60_curiosity.dts' I ran into the bug fixed by patch 2.
> With that patch applied _and_ rb-gpio still removed from dts, raw NAND 
> access is reasonably fast on sam9x60-curiosity board.  (You might want 
> to rebase to atmel/next for testing this.)  Not sure if I should send 
> a patch for that dts change, because I suppose it's a workaround only 
> and not addressing the actual cause?
> I think the fix is correct in itself, I tested different combinations 
> and compared with the driver in Linux, however …
> Can anyone explain to me, why flash access is sooo slow if the R/B 
> gpio is used?  Especially in comparision to Linux, where I don't need 
> to remove that thing from dts and it works reasonably fast?

// I'm sorry for quoting (email is sent from Outlook)
# Please add in your board dts: atmel,rb = <0>
# nand at 3 {
#			reg = <0x3 0x0 0x800000>;
#			atmel,rb = <0>;
#			cs-gpios = <&pioD 4 GPIO_ACTIVE_HIGH>;
#			rb-gpios = <&pioD 5 GPIO_ACTIVE_HIGH>;
#			nand-bus-width = <8>;
#			nand-ecc-mode = "hw";
#			nand-ecc-strength = <8>;
#			nand-ecc-step-size = <512>;
#			nand-on-flash-bbt;>

> The actual flash chip is a Macronix MX30LF4G28AD, 512 MiB, SLC, erase
> size: 256 KiB, page size: 4096, OOB size: 256.
> Greets
> Alex
> P.S.: although not returned by get_maintainer.pl I added Eugen to Cc 
> because he is maintainer of the at91 and might have some insight if it 
> is a general problem of the nand controller in at91 socs?
> Alexander Dahl (2):
>    mtd: nand: raw: atmel: Remove duplicate line
>    mtd: nand: raw: atmel: Add error handling when rb-gpios missing
>   drivers/mtd/nand/raw/atmel/nand-controller.c | 12 +++++++-----
>   1 file changed, 7 insertions(+), 5 deletions(-)
> base-commit: a169438411f9277cc689c14078151aa1d1caae3c

More information about the U-Boot mailing list