mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 15:12:36 +02:00
Introduce proper error checking for SPI programming
Corresponding to flashrom svn r739. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Stefan Reinauer <stepan@coresystems.de>
This commit is contained in:
parent
4010712033
commit
de75a5ed7f
12
sb600spi.c
12
sb600spi.c
@ -48,9 +48,9 @@ int sb600_spi_read(struct flashchip *flash, uint8_t *buf, int start, int len)
|
|||||||
/* FIXME: SB600 can write 5 bytes per transaction. */
|
/* FIXME: SB600 can write 5 bytes per transaction. */
|
||||||
int sb600_spi_write_1(struct flashchip *flash, uint8_t *buf)
|
int sb600_spi_write_1(struct flashchip *flash, uint8_t *buf)
|
||||||
{
|
{
|
||||||
int rc = 0, i;
|
int i;
|
||||||
int total_size = flash->total_size * 1024;
|
int total_size = flash->total_size * 1024;
|
||||||
int result;
|
int result = 0;
|
||||||
|
|
||||||
spi_disable_blockprotect();
|
spi_disable_blockprotect();
|
||||||
/* Erase first */
|
/* Erase first */
|
||||||
@ -63,10 +63,10 @@ int sb600_spi_write_1(struct flashchip *flash, uint8_t *buf)
|
|||||||
|
|
||||||
printf("Programming flash");
|
printf("Programming flash");
|
||||||
for (i = 0; i < total_size; i++, buf++) {
|
for (i = 0; i < total_size; i++, buf++) {
|
||||||
result = spi_byte_program(i, *buf);
|
result = spi_nbyte_program(i, buf, 1);
|
||||||
if (result) {
|
if (result) {
|
||||||
// spi_byte_program reported the error for us already
|
fprintf(stderr, "Write error!\n");
|
||||||
printf_debug("... continuing anyway.\n");
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* wait program complete. */
|
/* wait program complete. */
|
||||||
@ -76,7 +76,7 @@ int sb600_spi_write_1(struct flashchip *flash, uint8_t *buf)
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
printf(" done.\n");
|
printf(" done.\n");
|
||||||
return rc;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void reset_internal_fifo_pointer(void)
|
static void reset_internal_fifo_pointer(void)
|
||||||
|
6
spi.c
6
spi.c
@ -970,7 +970,7 @@ int spi_chip_read(struct flashchip *flash, uint8_t *buf, int start, int len)
|
|||||||
int spi_chip_write_1(struct flashchip *flash, uint8_t *buf)
|
int spi_chip_write_1(struct flashchip *flash, uint8_t *buf)
|
||||||
{
|
{
|
||||||
int total_size = 1024 * flash->total_size;
|
int total_size = 1024 * flash->total_size;
|
||||||
int i;
|
int i, result = 0;
|
||||||
|
|
||||||
spi_disable_blockprotect();
|
spi_disable_blockprotect();
|
||||||
/* Erase first */
|
/* Erase first */
|
||||||
@ -981,7 +981,9 @@ int spi_chip_write_1(struct flashchip *flash, uint8_t *buf)
|
|||||||
}
|
}
|
||||||
printf("done.\n");
|
printf("done.\n");
|
||||||
for (i = 0; i < total_size; i++) {
|
for (i = 0; i < total_size; i++) {
|
||||||
spi_byte_program(i, buf[i]);
|
result = spi_byte_program(i, buf[i]);
|
||||||
|
if (result)
|
||||||
|
return 1;
|
||||||
while (spi_read_status_register() & JEDEC_RDSR_BIT_WIP)
|
while (spi_read_status_register() & JEDEC_RDSR_BIT_WIP)
|
||||||
programmer_delay(10);
|
programmer_delay(10);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user