1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-07-02 06:23:18 +02:00

Use generic unlocking infrastructure for SPI chips

Actually check if the unlock worked instead of just assuming it worked.

Corresponding to flashrom svn r1082.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
This commit is contained in:
Carl-Daniel Hailfinger
2010-07-14 20:21:22 +00:00
parent ca812d40d4
commit 29a1c66a23
11 changed files with 104 additions and 24 deletions

21
spi25.c
View File

@ -436,12 +436,6 @@ int spi_chip_erase_60(struct flashchip *flash)
.readarr = NULL,
}};
result = spi_disable_blockprotect();
if (result) {
msg_cerr("spi_disable_blockprotect failed\n");
return result;
}
result = spi_send_multicommand(cmds);
if (result) {
msg_cerr("%s failed during command execution\n",
@ -482,12 +476,6 @@ int spi_chip_erase_c7(struct flashchip *flash)
.readarr = NULL,
}};
result = spi_disable_blockprotect();
if (result) {
msg_cerr("spi_disable_blockprotect failed\n");
return result;
}
result = spi_send_multicommand(cmds);
if (result) {
msg_cerr("%s failed during command execution\n", __func__);
@ -841,7 +829,7 @@ int spi_nbyte_program(int addr, uint8_t *bytes, int len)
return result;
}
int spi_disable_blockprotect(void)
int spi_disable_blockprotect(struct flashchip *flash)
{
uint8_t status;
int result;
@ -855,6 +843,11 @@ int spi_disable_blockprotect(void)
msg_cerr("spi_write_status_register failed\n");
return result;
}
status = spi_read_status_register();
if ((status & 0x3c) != 0) {
msg_cerr("Block protection could not be disabled!\n");
return 1;
}
}
return 0;
}
@ -970,7 +963,6 @@ int spi_chip_write_1_new(struct flashchip *flash, uint8_t *buf, int start, int l
{
int i, result = 0;
spi_disable_blockprotect();
for (i = start; i < start + len; i++) {
result = spi_byte_program(i, buf[i]);
if (result)
@ -984,7 +976,6 @@ int spi_chip_write_1_new(struct flashchip *flash, uint8_t *buf, int start, int l
int spi_chip_write_1(struct flashchip *flash, uint8_t *buf)
{
spi_disable_blockprotect();
/* Erase first */
msg_cinfo("Erasing flash before programming... ");
if (erase_flash(flash)) {