diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2009-08-10 02:29:21 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2009-08-10 02:29:21 +0000 |
commit | 116081a224c3b36a4a7d940cfdb1dac1ba35fc75 (patch) | |
tree | e82fbd5e39ffa638a9f56d93e90f0f520d392a53 /ft2232_spi.c | |
parent | db41c59e3ba625659e397675384b08b4ec967fe6 (diff) | |
download | flashrom-116081a224c3b36a4a7d940cfdb1dac1ba35fc75.tar.gz flashrom-116081a224c3b36a4a7d940cfdb1dac1ba35fc75.tar.bz2 flashrom-116081a224c3b36a4a7d940cfdb1dac1ba35fc75.zip |
Replace remaining explicit erases in SPI programmer drivers with auto-erases
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.
Corresponding to flashrom svn r673.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Carlos Arnau Perez <cemede@gmail.com>
Diffstat (limited to 'ft2232_spi.c')
-rw-r--r-- | ft2232_spi.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/ft2232_spi.c b/ft2232_spi.c index 5d229b3c3..955bc564b 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; } |