summaryrefslogtreecommitdiff
path: root/ft2232_spi.c
diff options
context:
space:
mode:
authorhailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2009-08-10 02:29:21 +0000
committerhailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2009-08-10 02:29:21 +0000
commitfd5a86499851f61f7ff7a265d328a3903e5d7bc9 (patch)
treee82fbd5e39ffa638a9f56d93e90f0f520d392a53 /ft2232_spi.c
parentb81877b999571d71c72676241722856fceaec249 (diff)
downloadflashrom-fd5a86499851f61f7ff7a265d328a3903e5d7bc9.tar.gz
Some SPI chip drivers and the generic 1-byte SPI chip write functions
didn't include the automatic erase present in other chip drivers. Since the majority is definitely auto-erase, change the remaining explicit-erase cases to be auto-erase as well. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Carlos Arnau Perez <cemede@gmail.com> git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@673 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'ft2232_spi.c')
-rw-r--r--ft2232_spi.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/ft2232_spi.c b/ft2232_spi.c
index 5d229b3..955bc56 100644
--- a/ft2232_spi.c
+++ b/ft2232_spi.c
@@ -271,6 +271,14 @@ int ft2232_spi_write_256(struct flashchip *flash, uint8_t *buf)
int total_size = 1024 * flash->total_size;
int i;
+ spi_disable_blockprotect();
+ /* Erase first */
+ printf("Erasing flash before programming... ");
+ if (flash->erase(flash)) {
+ fprintf(stderr, "ERASE FAILED!\n");
+ return -1;
+ }
+ printf("done.\n");
printf_debug("total_size is %d\n", total_size);
for (i = 0; i < total_size; i += 256) {
int l, r;
@@ -281,14 +289,12 @@ int ft2232_spi_write_256(struct flashchip *flash, uint8_t *buf)
if ((r = spi_nbyte_program(i, &buf[i], l))) {
fprintf(stderr, "%s: write fail %d\n", __FUNCTION__, r);
- // spi_write_disable(); chip does this for us
return 1;
}
while (spi_read_status_register() & JEDEC_RDSR_BIT_WIP)
/* loop */;
}
- // spi_write_disable(); chip does this for us
return 0;
}