--- c/drivers/mtd/chips/cfi_cmdset_0001.c 2006-02-22 20:58:05.869203280 +0300 +++ b/drivers/mtd/chips/cfi_cmdset_0001.c 2006-02-22 20:55:42.272033368 +0300 @@ -1571,6 +1571,7 @@ /* GO GO GO */ map_write(map, CMD(0xd0), cmd_adr); chip->state = FL_WRITING; + chip->write_suspended = 0; INVALIDATE_CACHE_UDELAY(map, chip, cmd_adr, adr, len, @@ -1592,6 +1593,12 @@ continue; } + /* Somebody suspended write. We should reset timeo. */ + if (chip->write_suspended) { + chip->write_suspended = 0; + timeo = jiffies + (HZ/2); + } + status = map_read(map, cmd_adr); if (map_word_andequal(map, status, status_OK, status_OK)) break;