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:
21
spi25.c
21
spi25.c
@ -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)) {
|
||||
|
Reference in New Issue
Block a user