Commit 87ace663 authored by Stefan Reinauer's avatar Stefan Reinauer Committed by Stefan Tauner
Browse files

CID1130000: Unchecked return value in default_spi_write_aai()


Also, try to always disable WRDI because else the user is stuck
with a chip in AAI mode that won't return by itself w/o a reset.

Corresponding to flashrom svn r1779.
Signed-off-by: default avatarStefan Reinauer <stefan.reinauer@coreboot.org>
Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
parent 1838591b
...@@ -1128,13 +1128,9 @@ int default_spi_write_aai(struct flashctx *flash, uint8_t *buf, unsigned int sta ...@@ -1128,13 +1128,9 @@ int default_spi_write_aai(struct flashctx *flash, uint8_t *buf, unsigned int sta
result = spi_send_multicommand(flash, cmds); result = spi_send_multicommand(flash, cmds);
if (result) { if (result != 0) {
msg_cerr("%s failed during start command execution\n", msg_cerr("%s failed during start command execution: %d\n", __func__, result);
__func__); goto bailout;
/* FIXME: Should we send WRDI here as well to make sure the chip
* is not in AAI mode?
*/
return result;
} }
while (spi_read_status_register(flash) & SPI_SR_WIP) while (spi_read_status_register(flash) & SPI_SR_WIP)
programmer_delay(10); programmer_delay(10);
...@@ -1146,8 +1142,11 @@ int default_spi_write_aai(struct flashctx *flash, uint8_t *buf, unsigned int sta ...@@ -1146,8 +1142,11 @@ int default_spi_write_aai(struct flashctx *flash, uint8_t *buf, unsigned int sta
while (pos < start + len - 1) { while (pos < start + len - 1) {
cmd[1] = buf[pos++ - start]; cmd[1] = buf[pos++ - start];
cmd[2] = buf[pos++ - start]; cmd[2] = buf[pos++ - start];
spi_send_command(flash, JEDEC_AAI_WORD_PROGRAM_CONT_OUTSIZE, 0, result = spi_send_command(flash, JEDEC_AAI_WORD_PROGRAM_CONT_OUTSIZE, 0, cmd, NULL);
cmd, NULL); if (result != 0) {
msg_cerr("%s failed during followup AAI command execution: %d\n", __func__, result);
goto bailout;
}
while (spi_read_status_register(flash) & SPI_SR_WIP) while (spi_read_status_register(flash) & SPI_SR_WIP)
programmer_delay(10); programmer_delay(10);
} }
...@@ -1165,4 +1164,8 @@ int default_spi_write_aai(struct flashctx *flash, uint8_t *buf, unsigned int sta ...@@ -1165,4 +1164,8 @@ int default_spi_write_aai(struct flashctx *flash, uint8_t *buf, unsigned int sta
} }
return 0; return 0;
bailout:
spi_write_disable(flash);
return SPI_GENERIC_ERROR;
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment