put_chip() called with oldstate 1!! (linux 2.6.0-rmk2)
Lothar Wassmann
LW at KARO-electronics.de
Thu Jan 8 06:04:32 EST 2004
Hi,
I'm using the MTD driver with Intel flash chips on a PXA255 platform
with Redboot partitions. Whenever I write data to the flash and
subsequently unmount and remount the modified partition I get several
messages: 'put_chip() called with oldstate 1!!'.
The put_chip() routine has this switch statement:
| switch(chip->oldstate) {
| case FL_ERASING:
| chip->state = chip->oldstate;
| /* What if one interleaved chip has finished and the
| other hasn't? The old code would leave the finished
| one in READY mode. That's bad, and caused -EROFS
| errors to be returned from do_erase_oneblock because
| that's the only bit it checked for at the time.
| As the state machine appears to explicitly allow
| sending the 0x70 (Read Status) command to an erasing
| chip and expecting it to be ignored, that's what we
| do. */
| cfi_write(map, CMD(0xd0), adr);
| cfi_write(map, CMD(0x70), adr);
| chip->oldstate = FL_READY;
| chip->state = FL_ERASING;
| break;
|
| case FL_READY:
| /* We should really make set_vpp() count, rather than doing this */
| DISABLE_VPP(map);
| break;
| default:
| printk(KERN_ERR "put_chip() called with oldstate %d!!\n", chip->oldstate);
| }
Since I'm not familiar with the details of flash programming, I don't
know what to do with this error message. Should the case FL_STATUS:
(oldstate == 1) be added to the switch to silently ignore this case,
or is there something wrong with the driver or my flash chips?
Lothar Wassmann
More information about the linux-mtd
mailing list