[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