Hi Helge,
I'm very sorry, it seems that the patch repeatedly slipped through the cracks because patchwork didn't pick it up (application/octet-stream for the attachment may have been the reason, but that is fixed now).
On 06.08.2010 15:28, Wagner, Helge (GE Intelligent Platforms) wrote:
I have tested both SST 25VF032B and SST 25VF064C on a QM57 (IbexPeak) system and found that the reprogramming of these chips is very slow.
So i have changed the programming engine for the 25VF064C from "spi_chip_write_1" to "spi_chip_write_256". I have tested the 25VF064C with the new engine and it works fine.
For the 25VF032B i have changed the programming engine from "spi_chip_write_1" to "spi_aai_write". I have tested this engine, too, and found it working (speedup was from 228 to 113 seconds).
While testing i found that some commands needed by some of the algorithms are not in the OPCODE table. So i have implemented the on-the-fly reprogramming of the OPCODE table (in the ICH engine).
Signed-off-by: Helge Wagner helge.wagner@ge.com
Speedup for new 25VF032B programming algorithm: from 3091 [sic!] to 123 seconds
This patch is a huge step forward for many Intel chipsets. Thank you!
diff -urN flashrom-0.9.2/ichspi.c flashrom/ichspi.c --- flashrom-0.9.2/ichspi.c 2010-07-28 00:41:39.000000000 +0200 +++ flashrom/ichspi.c 2010-08-06 14:46:47.000000000 +0200 @@ -708,11 +777,11 @@ /* find cmd in opcodes-table */ opcode_index = find_opcode(curopcodes, cmd); if (opcode_index == -1) {
/* FIXME: Reprogram opcodes if possible. Autodetect type of
* opcode by checking readcnt/writecnt.
*/
msg_pdbg("Invalid OPCODE 0x%02x\n", cmd);
return SPI_INVALID_OPCODE;
opcode_index = reprogram_opcode_on_the_fly(cmd, writecnt, readcnt);
This line should be conditional on !ichspi_lock. I have changed that in the commit.
if (opcode_index == -1) {
msg_pdbg("Invalid OPCODE 0x%02x\n", cmd);
return SPI_INVALID_OPCODE;
}
}
opcode = &(curopcodes->opcode[opcode_index]);
Acked-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
ICH dynamic opcode reprogramming patch committed in r1193. AAI write for SST25VF032B and page write for SST25VF064C committed in r1194.
Regards, Carl-Daniel