[flashrom] [PATCH] Kill hardcoded block erase on ICH SPI

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Mon Nov 23 03:20:10 CET 2009


Kill hardcoded block erase on ICH SPI.
The existing code does not work for all SPI chips, and it just was a
band-aid to cope with locked down chipsets back in a time when there was
no eraseblock infrastructure.
Basically, this unbreaks a few SPI chips on ICH.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

Index: flashrom-ich_spi_no_hardcoded_block_erase/ichspi.c
===================================================================
--- flashrom-ich_spi_no_hardcoded_block_erase/ichspi.c	(Revision 769)
+++ flashrom-ich_spi_no_hardcoded_block_erase/ichspi.c	(Arbeitskopie)
@@ -658,20 +658,16 @@
 	int maxdata = 64;
 
 	spi_disable_blockprotect();
+	/* Erase first */
+	printf("Erasing flash before programming... ");
+	if (erase_flash(flash)) {
+		fprintf(stderr, "ERASE FAILED!\n");
+		return -1;
+	}
+	printf("done.\n");
 
 	printf("Programming page: \n");
-
 	for (i = 0; i < total_size / erase_size; i++) {
-		/* FIMXE: call the chip-specific spi_block_erase_XX instead.
-		 * For this, we need to add a block erase function to
-		 * struct flashchip.
-		 */
-		rc = spi_block_erase_d8(flash, i * erase_size, erase_size);
-		if (rc) {
-			printf("Error erasing block at 0x%x\n", i);
-			break;
-		}
-
 		if (spi_controller == SPI_CONTROLLER_VIA)
 			maxdata = 16;
 


-- 
Developer quote of the month: 
"We are juggling too many chainsaws and flaming arrows and tigers."





More information about the flashrom mailing list