This patch combines two identical block and chip erase functions respectively: - Merge block_erase_m29f400bt and block_erase_en29lv640b into erase_block_shifted_jedec. - Merge block_erase_chip_m29f400bt and block_erase_chip_en29lv640b into erase_chip_block_shifted_jedec.
Leave their implementations in en29lv640b.c for now.
Signed-off-by: Stefan Tauner stefan.tauner@alumni.tuwien.ac.at --- chipdrivers.h | 6 ++---- en29lv640b.c | 10 ++++------ flashchips.c | 28 ++++++++++++++-------------- m29f400bt.c | 51 --------------------------------------------------- 4 files changed, 20 insertions(+), 75 deletions(-)
diff --git a/chipdrivers.h b/chipdrivers.h index 7fe3202..ee86f83 100644 --- a/chipdrivers.h +++ b/chipdrivers.h @@ -147,8 +147,6 @@ int erase_chip_block_jedec(struct flashctx *flash, unsigned int page, unsigned i
/* m29f400bt.c */ int probe_m29f400bt(struct flashctx *flash); -int block_erase_m29f400bt(struct flashctx *flash, unsigned int start, unsigned int len); -int block_erase_chip_m29f400bt(struct flashctx *flash, unsigned int start, unsigned int len); int write_m29f400bt(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len); void protect_m29f400bt(struct flashctx *flash, chipaddr bios);
@@ -199,8 +197,8 @@ int unlock_stm50_nonuniform(struct flashctx *flash);
/* en29lv640b.c */ int probe_en29lv640b(struct flashctx *flash); -int block_erase_en29lv640b(struct flashctx *flash, unsigned int start, unsigned int len); -int block_erase_chip_en29lv640b(struct flashctx *flash, unsigned int start, unsigned int len); +int erase_block_shifted_jedec(struct flashctx *flash, unsigned int start, unsigned int len); +int erase_chip_block_shifted_jedec(struct flashctx *flash, unsigned int start, unsigned int len); int write_en29lv640b(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
#endif /* !__CHIPDRIVERS_H__ */ diff --git a/en29lv640b.c b/en29lv640b.c index 110aa18..a274f62 100644 --- a/en29lv640b.c +++ b/en29lv640b.c @@ -86,7 +86,7 @@ int probe_en29lv640b(struct flashctx *flash) return 0; }
-int erase_en29lv640b(struct flashctx *flash) +static int erase_chip_shifted_jedec(struct flashctx *flash) { chipaddr bios = flash->virtual_memory;
@@ -105,8 +105,7 @@ int erase_en29lv640b(struct flashctx *flash) return 0; }
-int block_erase_en29lv640b(struct flashctx *flash, unsigned int start, - unsigned int len) +int erase_block_shifted_jedec(struct flashctx *flash, unsigned int start, unsigned int len) { chipaddr bios = flash->virtual_memory; chipaddr dst = bios + start; @@ -126,12 +125,11 @@ int block_erase_en29lv640b(struct flashctx *flash, unsigned int start, return 0; }
-int block_erase_chip_en29lv640b(struct flashctx *flash, unsigned int address, - unsigned int blocklen) +int erase_chip_block_shifted_jedec(struct flashctx *flash, unsigned int address, unsigned int blocklen) { if ((address != 0) || (blocklen != flash->chip->total_size * 1024)) { msg_cerr("%s called with incorrect arguments\n", __func__); return -1; } - return erase_en29lv640b(flash); + return erase_chip_shifted_jedec(flash); } diff --git a/flashchips.c b/flashchips.c index 78c18ca..4a1e9f6 100644 --- a/flashchips.c +++ b/flashchips.c @@ -4730,10 +4730,10 @@ const struct flashchip flashchips[] = { {8 * 1024, 8}, {64 * 1024, 127}, }, - .block_erase = block_erase_en29lv640b, + .block_erase = erase_block_shifted_jedec, }, { .eraseblocks = { {8 * 1024 * 1024, 1} }, - .block_erase = block_erase_chip_en29lv640b, + .block_erase = erase_chip_block_shifted_jedec, }, }, .write = write_en29lv640b, @@ -4827,10 +4827,10 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 7}, }, - .block_erase = block_erase_m29f400bt, + .block_erase = erase_block_shifted_jedec, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = block_erase_chip_m29f400bt, + .block_erase = erase_chip_block_shifted_jedec, }, }, .write = write_m29f400bt, @@ -4859,10 +4859,10 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = block_erase_m29f400bt, + .block_erase = erase_block_shifted_jedec, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = block_erase_chip_m29f400bt, + .block_erase = erase_chip_block_shifted_jedec, }, }, .write = write_m29f400bt, @@ -4891,10 +4891,10 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 31}, }, - .block_erase = block_erase_m29f400bt, + .block_erase = erase_block_shifted_jedec, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = block_erase_chip_m29f400bt, + .block_erase = erase_chip_block_shifted_jedec, }, }, .write = write_m29f400bt, /* Supports a fast mode too */ @@ -4923,10 +4923,10 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = block_erase_m29f400bt, + .block_erase = erase_block_shifted_jedec, }, { .eraseblocks = { {2048 * 1024, 1} }, - .block_erase = block_erase_chip_m29f400bt, + .block_erase = erase_chip_block_shifted_jedec, }, }, .write = write_m29f400bt, /* Supports a fast mode too */ @@ -11292,10 +11292,10 @@ const struct flashchip flashchips[] = { {32 * 1024, 1}, {64 * 1024, 7}, }, - .block_erase = block_erase_m29f400bt, + .block_erase = erase_block_shifted_jedec, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = block_erase_chip_m29f400bt, + .block_erase = erase_chip_block_shifted_jedec, } }, .write = write_m29f400bt, @@ -11324,10 +11324,10 @@ const struct flashchip flashchips[] = { {8 * 1024, 2}, {16 * 1024, 1}, }, - .block_erase = block_erase_m29f400bt, + .block_erase = erase_block_shifted_jedec, }, { .eraseblocks = { {512 * 1024, 1} }, - .block_erase = block_erase_chip_m29f400bt, + .block_erase = erase_chip_block_shifted_jedec, } }, .write = write_m29f400bt, diff --git a/m29f400bt.c b/m29f400bt.c index c2236e5..399a7e0 100644 --- a/m29f400bt.c +++ b/m29f400bt.c @@ -85,54 +85,3 @@ int probe_m29f400bt(struct flashctx *flash)
return 0; } - -int erase_m29f400bt(struct flashctx *flash) -{ - chipaddr bios = flash->virtual_memory; - - chip_writeb(flash, 0xAA, bios + 0xAAA); - chip_writeb(flash, 0x55, bios + 0x555); - chip_writeb(flash, 0x80, bios + 0xAAA); - - chip_writeb(flash, 0xAA, bios + 0xAAA); - chip_writeb(flash, 0x55, bios + 0x555); - chip_writeb(flash, 0x10, bios + 0xAAA); - - programmer_delay(10); - toggle_ready_jedec(flash, bios); - - /* FIXME: Check the status register for errors. */ - return 0; -} - -int block_erase_m29f400bt(struct flashctx *flash, unsigned int start, - unsigned int len) -{ - chipaddr bios = flash->virtual_memory; - chipaddr dst = bios + start; - - chip_writeb(flash, 0xAA, bios + 0xAAA); - chip_writeb(flash, 0x55, bios + 0x555); - chip_writeb(flash, 0x80, bios + 0xAAA); - - chip_writeb(flash, 0xAA, bios + 0xAAA); - chip_writeb(flash, 0x55, bios + 0x555); - chip_writeb(flash, 0x30, dst); - - programmer_delay(10); - toggle_ready_jedec(flash, bios); - - /* FIXME: Check the status register for errors. */ - return 0; -} - -int block_erase_chip_m29f400bt(struct flashctx *flash, unsigned int address, - unsigned int blocklen) -{ - if ((address != 0) || (blocklen != flash->chip->total_size * 1024)) { - msg_cerr("%s called with incorrect arguments\n", - __func__); - return -1; - } - return erase_m29f400bt(flash); -}