[flashrom] Speedup SST 25VF032B and 25VF064C programming
Carl-Daniel Hailfinger
c-d.hailfinger.devel.2006 at gmx.net
Wed Oct 6 00:40:28 CEST 2010
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 at 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 at 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
--
http://www.hailfinger.org/
More information about the flashrom
mailing list