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:
parent
1181ee251a
commit
f2756fa240
@ -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__ */
|
||||||
|
10
en29lv640b.c
10
en29lv640b.c
@ -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);
|
||||||
}
|
}
|
||||||
|
28
flashchips.c
28
flashchips.c
@ -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,
|
||||||
|
51
m29f400bt.c
51
m29f400bt.c
@ -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);
|
|
||||||
}
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user