From: Shashi Rao Date: Wed, 28 Mar 2007 22:56:28 +0000 (-0700) Subject: [MTD] Fix fwh_lock locking X-Git-Tag: v2.6.22-rc1~1116^2~20 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=e6be133b68ae2c8f89d46da25ed7b31b84793e7e;p=karo-tx-linux.git [MTD] Fix fwh_lock locking This is on a custom board with a mapping driver access to an ST M50LPW080 chip. This chip is probed successfully with do_map_probe("jedec_probe",...). If I use the mtdchar interface to perform unlock->erase->program->lock on any of the 16 eraseblocks in the chip, the chip is left in FL_STATUS mode while the data structures believe that the chip is in FL_READY mode. Hence, any subsequent reads to any flash byte results in 0x80 being read. Signed-off-by: Shashi Rao Signed-off-by: David Woodhouse --- diff --git a/drivers/mtd/chips/fwh_lock.h b/drivers/mtd/chips/fwh_lock.h index 77303ce5dcf1..ab44f2b996f8 100644 --- a/drivers/mtd/chips/fwh_lock.h +++ b/drivers/mtd/chips/fwh_lock.h @@ -65,11 +65,12 @@ static int fwh_xxlock_oneblock(struct map_info *map, struct flchip *chip, return ret; } + chip->oldstate = chip->state; chip->state = xxlt->state; map_write(map, CMD(xxlt->val), adr); /* Done and happy. */ - chip->state = FL_READY; + chip->state = chip->oldstate; put_chip(map, chip, adr); spin_unlock(chip->mutex); return 0;