diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2010-11-23 21:28:16 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2010-11-23 21:28:16 +0000 |
commit | 306b81875dc8c16b230f9b01f37138aa4768d116 (patch) | |
tree | 25a7b11b90f5f98c0638387d606c6680d0f71e5c | |
parent | 482e97443dac5158b6bf48af1b7636a9388debf6 (diff) | |
download | flashrom-306b81875dc8c16b230f9b01f37138aa4768d116.tar.gz flashrom-306b81875dc8c16b230f9b01f37138aa4768d116.tar.bz2 flashrom-306b81875dc8c16b230f9b01f37138aa4768d116.zip |
Add chunked write ability to the Dediprog SF100 driver
Please note that the write speedup only applies to chips which have SPI
page write (i.e. chips using spi_chip_write_256).
This is a quick fix for write speed until I get around to implementing
full bulk SPI write support.
Corresponding to flashrom svn r1235.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Richard A. Smith <richard@laptop.org>
Acked-by: Mathias Krause <mathias.krause@secunet.com>
-rw-r--r-- | dediprog.c | 8 | ||||
-rw-r--r-- | programmer.h | 1 | ||||
-rw-r--r-- | spi.c | 2 |
3 files changed, 9 insertions, 2 deletions
@@ -238,6 +238,12 @@ int dediprog_spi_read(struct flashchip *flash, uint8_t *buf, int start, int len) return 0; } +int dediprog_spi_write_256(struct flashchip *flash, uint8_t *buf, int start, int len) +{ + /* No idea about the real limit. Maybe 12, maybe more, maybe less. */ + return spi_write_chunked(flash, buf, start, len, 12); +} + int dediprog_spi_send_command(unsigned int writecnt, unsigned int readcnt, const unsigned char *writearr, unsigned char *readarr) { @@ -245,7 +251,7 @@ int dediprog_spi_send_command(unsigned int writecnt, unsigned int readcnt, msg_pspew("%s, writecnt=%i, readcnt=%i\n", __func__, writecnt, readcnt); /* Paranoid, but I don't want to be blamed if anything explodes. */ - if (writecnt > 5) { + if (writecnt > 16) { msg_perr("Untested writecnt=%i, aborting.\n", writecnt); return 1; } diff --git a/programmer.h b/programmer.h index ed9d0b22..a4470922 100644 --- a/programmer.h +++ b/programmer.h @@ -472,6 +472,7 @@ int dediprog_init(void); int dediprog_shutdown(void); int dediprog_spi_send_command(unsigned int writecnt, unsigned int readcnt, const unsigned char *writearr, unsigned char *readarr); int dediprog_spi_read(struct flashchip *flash, uint8_t *buf, int start, int len); +int dediprog_spi_write_256(struct flashchip *flash, uint8_t *buf, int start, int len); /* flashrom.c */ struct decode_sizes { @@ -124,7 +124,7 @@ const struct spi_programmer spi_programmer[] = { .command = dediprog_spi_send_command, .multicommand = default_spi_send_multicommand, .read = dediprog_spi_read, - .write_256 = spi_chip_write_1, + .write_256 = dediprog_spi_write_256, }, #endif |