1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-26 22:52:34 +02:00

Combine block_erase*_en29lv640b and block_erase*_m29f400bt respectively

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.

Corresponding to flashrom svn r1808.

Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
This commit is contained in:
Stefan Tauner 2014-06-01 02:21:02 +00:00
parent 1181ee251a
commit f2756fa240
4 changed files with 20 additions and 75 deletions

View File

@ -147,8 +147,6 @@ int erase_chip_block_jedec(struct flashctx *flash, unsigned int page, unsigned i
/* m29f400bt.c */ /* m29f400bt.c */
int probe_m29f400bt(struct flashctx *flash); 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); int write_m29f400bt(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
void protect_m29f400bt(struct flashctx *flash, chipaddr bios); void protect_m29f400bt(struct flashctx *flash, chipaddr bios);
@ -199,8 +197,8 @@ int unlock_stm50_nonuniform(struct flashctx *flash);
/* en29lv640b.c */ /* en29lv640b.c */
int probe_en29lv640b(struct flashctx *flash); int probe_en29lv640b(struct flashctx *flash);
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);
int block_erase_chip_en29lv640b(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); int write_en29lv640b(struct flashctx *flash, const uint8_t *buf, unsigned int start, unsigned int len);
#endif /* !__CHIPDRIVERS_H__ */ #endif /* !__CHIPDRIVERS_H__ */

View File

@ -86,7 +86,7 @@ int probe_en29lv640b(struct flashctx *flash)
return 0; return 0;
} }
int erase_en29lv640b(struct flashctx *flash) static int erase_chip_shifted_jedec(struct flashctx *flash)
{ {
chipaddr bios = flash->virtual_memory; chipaddr bios = flash->virtual_memory;
@ -105,8 +105,7 @@ int erase_en29lv640b(struct flashctx *flash)
return 0; return 0;
} }
int block_erase_en29lv640b(struct flashctx *flash, unsigned int start, int erase_block_shifted_jedec(struct flashctx *flash, unsigned int start, unsigned int len)
unsigned int len)
{ {
chipaddr bios = flash->virtual_memory; chipaddr bios = flash->virtual_memory;
chipaddr dst = bios + start; chipaddr dst = bios + start;
@ -126,12 +125,11 @@ int block_erase_en29lv640b(struct flashctx *flash, unsigned int start,
return 0; return 0;
} }
int block_erase_chip_en29lv640b(struct flashctx *flash, unsigned int address, int erase_chip_block_shifted_jedec(struct flashctx *flash, unsigned int address, unsigned int blocklen)
unsigned int blocklen)
{ {
if ((address != 0) || (blocklen != flash->chip->total_size * 1024)) { if ((address != 0) || (blocklen != flash->chip->total_size * 1024)) {
msg_cerr("%s called with incorrect arguments\n", __func__); msg_cerr("%s called with incorrect arguments\n", __func__);
return -1; return -1;
} }
return erase_en29lv640b(flash); return erase_chip_shifted_jedec(flash);
} }

View File

@ -4730,10 +4730,10 @@ const struct flashchip flashchips[] = {
{8 * 1024, 8}, {8 * 1024, 8},
{64 * 1024, 127}, {64 * 1024, 127},
}, },
.block_erase = block_erase_en29lv640b, .block_erase = erase_block_shifted_jedec,
}, { }, {
.eraseblocks = { {8 * 1024 * 1024, 1} }, .eraseblocks = { {8 * 1024 * 1024, 1} },
.block_erase = block_erase_chip_en29lv640b, .block_erase = erase_chip_block_shifted_jedec,
}, },
}, },
.write = write_en29lv640b, .write = write_en29lv640b,
@ -4827,10 +4827,10 @@ const struct flashchip flashchips[] = {
{32 * 1024, 1}, {32 * 1024, 1},
{64 * 1024, 7}, {64 * 1024, 7},
}, },
.block_erase = block_erase_m29f400bt, .block_erase = erase_block_shifted_jedec,
}, { }, {
.eraseblocks = { {512 * 1024, 1} }, .eraseblocks = { {512 * 1024, 1} },
.block_erase = block_erase_chip_m29f400bt, .block_erase = erase_chip_block_shifted_jedec,
}, },
}, },
.write = write_m29f400bt, .write = write_m29f400bt,
@ -4859,10 +4859,10 @@ const struct flashchip flashchips[] = {
{8 * 1024, 2}, {8 * 1024, 2},
{16 * 1024, 1}, {16 * 1024, 1},
}, },
.block_erase = block_erase_m29f400bt, .block_erase = erase_block_shifted_jedec,
}, { }, {
.eraseblocks = { {512 * 1024, 1} }, .eraseblocks = { {512 * 1024, 1} },
.block_erase = block_erase_chip_m29f400bt, .block_erase = erase_chip_block_shifted_jedec,
}, },
}, },
.write = write_m29f400bt, .write = write_m29f400bt,
@ -4891,10 +4891,10 @@ const struct flashchip flashchips[] = {
{32 * 1024, 1}, {32 * 1024, 1},
{64 * 1024, 31}, {64 * 1024, 31},
}, },
.block_erase = block_erase_m29f400bt, .block_erase = erase_block_shifted_jedec,
}, { }, {
.eraseblocks = { {2048 * 1024, 1} }, .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 */ .write = write_m29f400bt, /* Supports a fast mode too */
@ -4923,10 +4923,10 @@ const struct flashchip flashchips[] = {
{8 * 1024, 2}, {8 * 1024, 2},
{16 * 1024, 1}, {16 * 1024, 1},
}, },
.block_erase = block_erase_m29f400bt, .block_erase = erase_block_shifted_jedec,
}, { }, {
.eraseblocks = { {2048 * 1024, 1} }, .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 */ .write = write_m29f400bt, /* Supports a fast mode too */
@ -11292,10 +11292,10 @@ const struct flashchip flashchips[] = {
{32 * 1024, 1}, {32 * 1024, 1},
{64 * 1024, 7}, {64 * 1024, 7},
}, },
.block_erase = block_erase_m29f400bt, .block_erase = erase_block_shifted_jedec,
}, { }, {
.eraseblocks = { {512 * 1024, 1} }, .eraseblocks = { {512 * 1024, 1} },
.block_erase = block_erase_chip_m29f400bt, .block_erase = erase_chip_block_shifted_jedec,
} }
}, },
.write = write_m29f400bt, .write = write_m29f400bt,
@ -11324,10 +11324,10 @@ const struct flashchip flashchips[] = {
{8 * 1024, 2}, {8 * 1024, 2},
{16 * 1024, 1}, {16 * 1024, 1},
}, },
.block_erase = block_erase_m29f400bt, .block_erase = erase_block_shifted_jedec,
}, { }, {
.eraseblocks = { {512 * 1024, 1} }, .eraseblocks = { {512 * 1024, 1} },
.block_erase = block_erase_chip_m29f400bt, .block_erase = erase_chip_block_shifted_jedec,
} }
}, },
.write = write_m29f400bt, .write = write_m29f400bt,

View File

@ -85,54 +85,3 @@ int probe_m29f400bt(struct flashctx *flash)
return 0; 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);
}