Commit 1db7a448 authored by Helge Wagner's avatar Helge Wagner Committed by Carl-Daniel Hailfinger
Browse files

Massive speedups for SST25VF032B and SST25VF064C


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.

Corresponding to flashrom svn r1194.
Signed-off-by: default avatarHelge Wagner <helge.wagner@ge.com>
Acked-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
parent 738e2521
......@@ -63,7 +63,8 @@ int spi_nbyte_program(int addr, uint8_t *bytes, int len);
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);
......
......@@ -4860,7 +4860,7 @@ struct flashchip flashchips[] = {
.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 @@ struct flashchip flashchips[] = {
},
},
.unlock = spi_disable_blockprotect,
.write = spi_chip_write_1,
.write = spi_aai_write,
.read = spi_chip_read,
},
......@@ -4918,7 +4918,7 @@ struct flashchip flashchips[] = {
},
},
.unlock = spi_disable_blockprotect,
.write = spi_chip_write_1,
.write = spi_chip_write_256,
.read = spi_chip_read,
},
......
......@@ -1300,7 +1300,7 @@ int spi_chip_write_1(struct flashchip *flash, uint8_t *buf)
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 @@ int spi_aai_write(struct flashchip *flash, uint8_t *buf, int start, int len)
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);
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment