last commit breaks the AMD NOR flash functionality?

Vitaly Wool vwool at ru.mvista.com
Tue May 24 10:37:41 EDT 2005


Greetings,

the latest commit for cfi_cmdset_0002.c:

>Index: cfi_cmdset_0002.c
>===================================================================
>RCS file: /home/cvs/mtd/drivers/mtd/chips/cfi_cmdset_0002.c,v
>retrieving revision 1.115
>retrieving revision 1.116
>diff -u -r1.115 -r1.116
>--- cfi_cmdset_0002.c	20 May 2005 03:28:23 -0000	1.115
>+++ cfi_cmdset_0002.c	24 May 2005 13:29:42 -0000	1.116
>@@ -1320,7 +1320,7 @@
> 		cfi_spin_lock(chip->mutex);
> 	}
> 	/* Did we succeed? */
>-	if (chip_good(map, adr, map_word_ff(map))) {
>+	if (!chip_good(map, adr, map_word_ff(map))) {
> 		/* reset on all failures. */
> 		map_write( map, CMD(0xF0), chip->start );
> 		/* FIXME - should have reset delay before continuing */
>
resulted in the following behavior for my AMD NOR flash:

# flash_eraseall /dev/mtd/3
Erasing 64 Kibyte @ 0 --  0 % complete.
flash_eraseall: /dev/mtd/3: MTD Erase failure: Input/output error
Erasing 64 Kibyte @ 10000 -- 25 % complete.
flash_eraseall: /dev/mtd/3: MTD Erase failure: Input/output error
Erasing 64 Kibyte @ 20000 -- 50 % complete.
flash_eraseall: /dev/mtd/3: MTD Erase failure: Input/output error
Erasing 64 Kibyte @ 30000 -- 75 % complete.
flash_eraseall: /dev/mtd/3: MTD Erase failure: Input/output error

If I roll it back, it starts working.
I also suspected something strange with 'if(chip_good(...)) ...' instead 
of 'if(!chip_good(...)) ...' but it worked before and it doesn't work 
now. Can anyone elaborate this a bit?

Best regards,
   Vitaly




More information about the linux-mtd mailing list