[flashrom] [commit] r739 - trunk

svn at flashrom.org svn at flashrom.org
Thu Oct 1 15:16:32 CEST 2009


Author: hailfinger
Date: 2009-10-01 15:16:32 +0200 (Thu, 01 Oct 2009)
New Revision: 739

Modified:
   trunk/sb600spi.c
   trunk/spi.c
Log:
Introduce proper error checking for SPI programming.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Acked-by: Stefan Reinauer <stepan at coresystems.de>


Modified: trunk/sb600spi.c
===================================================================
--- trunk/sb600spi.c	2009-10-01 13:15:01 UTC (rev 738)
+++ trunk/sb600spi.c	2009-10-01 13:16:32 UTC (rev 739)
@@ -48,9 +48,9 @@
 /* FIXME: SB600 can write 5 bytes per transaction. */
 int sb600_spi_write_1(struct flashchip *flash, uint8_t *buf)
 {
-	int rc = 0, i;
+	int i;
 	int total_size = flash->total_size * 1024;
-	int result;
+	int result = 0;
 
 	spi_disable_blockprotect();
 	/* Erase first */
@@ -63,10 +63,10 @@
 
 	printf("Programming flash");
 	for (i = 0; i < total_size; i++, buf++) {
-		result = spi_byte_program(i, *buf);
+		result = spi_nbyte_program(i, buf, 1);
 		if (result) {
-			// spi_byte_program reported the error for us already
-			printf_debug("... continuing anyway.\n");
+			fprintf(stderr, "Write error!\n");
+			return result;
 		}
 
 		/* wait program complete. */
@@ -76,7 +76,7 @@
 			;
 	}
 	printf(" done.\n");
-	return rc;
+	return result;
 }
 
 static void reset_internal_fifo_pointer(void)

Modified: trunk/spi.c
===================================================================
--- trunk/spi.c	2009-10-01 13:15:01 UTC (rev 738)
+++ trunk/spi.c	2009-10-01 13:16:32 UTC (rev 739)
@@ -970,7 +970,7 @@
 int spi_chip_write_1(struct flashchip *flash, uint8_t *buf)
 {
 	int total_size = 1024 * flash->total_size;
-	int i;
+	int i, result = 0;
 
 	spi_disable_blockprotect();
 	/* Erase first */
@@ -981,7 +981,9 @@
 	}
 	printf("done.\n");
 	for (i = 0; i < total_size; i++) {
-		spi_byte_program(i, buf[i]);
+		result = spi_byte_program(i, buf[i]);
+		if (result)
+			return 1;
 		while (spi_read_status_register() & JEDEC_RDSR_BIT_WIP)
 			programmer_delay(10);
 	}





More information about the flashrom mailing list