Author: hailfinger
Date: Tue Nov 23 22:28:16 2010
New Revision: 1235
URL: http://flashrom.org/trac/flashrom/changeset/1235

Log:
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.

Signed-off-by: Carl-Daniel Hailfinger <[email protected]>
Acked-by: Richard A. Smith  <[email protected]>
Acked-by: Mathias Krause <[email protected]>

Modified:
   trunk/dediprog.c
   trunk/programmer.h
   trunk/spi.c

Modified: trunk/dediprog.c
==============================================================================
--- trunk/dediprog.c    Tue Nov 16 22:25:29 2010        (r1234)
+++ trunk/dediprog.c    Tue Nov 23 22:28:16 2010        (r1235)
@@ -238,6 +238,12 @@
        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 @@
 
        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;
        }

Modified: trunk/programmer.h
==============================================================================
--- trunk/programmer.h  Tue Nov 16 22:25:29 2010        (r1234)
+++ trunk/programmer.h  Tue Nov 23 22:28:16 2010        (r1235)
@@ -472,6 +472,7 @@
 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 {

Modified: trunk/spi.c
==============================================================================
--- trunk/spi.c Tue Nov 16 22:25:29 2010        (r1234)
+++ trunk/spi.c Tue Nov 23 22:28:16 2010        (r1235)
@@ -124,7 +124,7 @@
                .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
 

_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to