summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/chips
diff options
context:
space:
mode:
authorNicolas Pitre <nico@cam.org>2006-03-30 00:31:42 +0200
committerDavid Woodhouse <dwmw2@infradead.org>2006-05-17 02:22:23 +0200
commit6e7a6809c555aeb7cb98544df4d446fbd6f123ec (patch)
tree15b9d84d7350396fc08541f54ec42842fd2187ef /drivers/mtd/chips
parentCHIPS: Fix potential starvation in cfi_cmdset_0001 (diff)
downloadlinux-6e7a6809c555aeb7cb98544df4d446fbd6f123ec.tar.xz
linux-6e7a6809c555aeb7cb98544df4d446fbd6f123ec.zip
cfi-cmdset-0001: always update the chip status
... otherwise xip_enable() won't do the right thing. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'drivers/mtd/chips')
-rw-r--r--drivers/mtd/chips/cfi_cmdset_0001.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c
index e797752f7c0b..ab3888f5e464 100644
--- a/drivers/mtd/chips/cfi_cmdset_0001.c
+++ b/drivers/mtd/chips/cfi_cmdset_0001.c
@@ -1479,8 +1479,10 @@ static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
[...], the device will not accept any more Write to Buffer commands".
So we must check here and reset those bits if they're set. Otherwise
we're just pissing in the wind */
- if (chip->state != FL_STATUS)
+ if (chip->state != FL_STATUS) {
map_write(map, CMD(0x70), cmd_adr);
+ chip->state = FL_STATUS;
+ }
status = map_read(map, cmd_adr);
if (map_word_bitsset(map, status, CMD(0x30))) {
xip_enable(map, chip, cmd_adr);