Author: hailfinger
Date: Wed Oct  6 00:29:08 2010
New Revision: 1194
URL: http://flashrom.org/trac/flashrom/changeset/1194

Log:
Use AAI write for SST SST25VF032B.
Speedup from 228 to 113 seconds.

Use page (256 byte) write for SST SST25VF064C.
Speedup from 3091 to 123 seconds.

Signed-off-by: Helge Wagner <[email protected]>
Acked-by: Carl-Daniel Hailfinger <[email protected]>

Modified:
   trunk/chipdrivers.h
   trunk/flashchips.c
   trunk/spi25.c

Modified: trunk/chipdrivers.h
==============================================================================
--- trunk/chipdrivers.h Wed Oct  6 00:06:05 2010        (r1193)
+++ trunk/chipdrivers.h Wed Oct  6 00:29:08 2010        (r1194)
@@ -63,7 +63,8 @@
 int spi_nbyte_read(int addr, uint8_t *bytes, int len);
 int spi_read_chunked(struct flashchip *flash, uint8_t *buf, int start, int 
len, int chunksize);
 int spi_write_chunked(struct flashchip *flash, uint8_t *buf, int start, int 
len, int chunksize);
-int spi_aai_write(struct flashchip *flash, uint8_t *buf, int start, int len);
+int spi_aai_write_new(struct flashchip *flash, uint8_t *buf, int start, int 
len);
+int spi_aai_write(struct flashchip *flash, uint8_t *buf);
 
 /* 82802ab.c */
 uint8_t wait_82802ab(chipaddr bios);

Modified: trunk/flashchips.c
==============================================================================
--- trunk/flashchips.c  Wed Oct  6 00:06:05 2010        (r1193)
+++ trunk/flashchips.c  Wed Oct  6 00:29:08 2010        (r1194)
@@ -4860,7 +4860,7 @@
                .model_id       = SST_SST25VF032B,
                .total_size     = 4096,
                .page_size      = 256,
-               .tested         = TEST_OK_PRW,
+               .tested         = TEST_OK_PREW,
                .probe          = probe_spi_rdid,
                .probe_timing   = TIMING_ZERO,
                .block_erasers  =
@@ -4883,7 +4883,7 @@
                        },
                },
                .unlock         = spi_disable_blockprotect,
-               .write          = spi_chip_write_1,
+               .write          = spi_aai_write,
                .read           = spi_chip_read,
        },
 
@@ -4918,7 +4918,7 @@
                        },
                },
                .unlock         = spi_disable_blockprotect,
-               .write          = spi_chip_write_1,
+               .write          = spi_chip_write_256,
                .read           = spi_chip_read,
        },
 

Modified: trunk/spi25.c
==============================================================================
--- trunk/spi25.c       Wed Oct  6 00:06:05 2010        (r1193)
+++ trunk/spi25.c       Wed Oct  6 00:29:08 2010        (r1194)
@@ -1300,7 +1300,7 @@
        return spi_chip_write_1_new(flash, buf, 0, flash->total_size * 1024);
 }
 
-int spi_aai_write(struct flashchip *flash, uint8_t *buf, int start, int len)
+int spi_aai_write_new(struct flashchip *flash, uint8_t *buf, int start, int 
len)
 {
        uint32_t pos = start;
        int result;
@@ -1391,3 +1391,17 @@
        spi_write_disable();
        return 0;
 }
+
+int spi_aai_write(struct flashchip *flash, uint8_t *buf)
+{
+       /* Erase first */
+       msg_cinfo("Erasing flash before programming... ");
+       if (erase_flash(flash)) {
+               msg_cerr("ERASE FAILED!\n");
+               return -1;
+       }
+       msg_cinfo("done.\n");
+
+       return spi_aai_write_new(flash, buf, 0, flash->total_size * 1024);
+}
+

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

Reply via email to