cfi_cmdset_0001.c: Excessive erase suspends

Alexey Korolev akorolev at
Thu Apr 24 10:34:24 EDT 2008

Hi Anders,

Could you please try this patch on your platform. 
It should solve the issue. 
As I said before we also have a case which reproduces the issue.
After applying it the issue is not seen on test items which usually
fails. (However to prove that it is Ok
we need to execute whole bunch. It will be completed on next day)

diff -aurp linux-2.6.24-a/drivers/mtd/chips/cfi_cmdset_0001.c linux-2.6.24-b/drivers/mtd/chips/cfi_cmdset_0001.c
--- linux-2.6.24-a/drivers/mtd/chips/cfi_cmdset_0001.c	2008-02-11 08:51:11.000000000 +0300
+++ linux-2.6.24-b/drivers/mtd/chips/cfi_cmdset_0001.c	2008-04-24 18:13:00.000000000 +0400
@@ -874,6 +874,10 @@ static void put_chip(struct map_info *ma
 		   do. */
 		map_write(map, CMD(0xd0), adr);
 		map_write(map, CMD(0x70), adr);
+		/* According to recomendations from h/w experts adding wait  
+		   of 100us just after resume solves the erase suspend issues   
+		   seen on some NOR parts. */
+		udelay(100);
 		chip->oldstate = FL_READY;
 		chip->state = FL_ERASING;


More information about the linux-mtd mailing list