[coreboot] r3070 - trunk/util/flashrom

svn at coreboot.org svn at coreboot.org
Tue Jan 22 16:19:01 CET 2008


Author: hailfinger
Date: 2008-01-22 16:19:01 +0100 (Tue, 22 Jan 2008)
New Revision: 3070

Modified:
   trunk/util/flashrom/flashrom.c
Log:
Flashrom did not use the read function for verifying, it used direct memory
access instead. That fails if the flash chip is not mapped completely.
If the read function is set in struct flashchip, use it for verification
as well.

This fixes verification of all SPI flash chips >512 kByte behind an
IT8716F flash translation chip.

"MX25L8005 found at physical address 0xfff00000.
Flash part is MX25L8005 (1024 KB).
Flash image seems to be a legacy BIOS. Disabling checks.
Verifying flash... VERIFIED."

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Acked-by: Harald Gutmann <harald.gutmann at gmx.net>


Modified: trunk/util/flashrom/flashrom.c
===================================================================
--- trunk/util/flashrom/flashrom.c	2008-01-22 14:37:31 UTC (rev 3069)
+++ trunk/util/flashrom/flashrom.c	2008-01-22 15:19:01 UTC (rev 3070)
@@ -159,7 +159,11 @@
 {
 	int idx;
 	int total_size = flash->total_size * 1024;
-	volatile uint8_t *bios = flash->virtual_memory;
+	uint8_t *buf2 = (uint8_t *) calloc(total_size, sizeof(char));
+	if (flash->read == NULL)
+		memcpy(buf2, (const char *)flash->virtual_memory, total_size);
+	else
+		flash->read(flash, buf2);
 
 	printf("Verifying flash... ");
 
@@ -170,7 +174,7 @@
 		if (verbose && ((idx & 0xfff) == 0xfff))
 			printf("0x%08x", idx);
 
-		if (*(bios + idx) != *(buf + idx)) {
+		if (*(buf2 + idx) != *(buf + idx)) {
 			if (verbose) {
 				printf("0x%08x ", idx);
 			}





More information about the coreboot mailing list