[flashrom] [commit] r723 - trunk

svn at flashrom.org svn at flashrom.org
Wed Sep 16 10:26:59 CEST 2009


Author: stepan
Date: 2009-09-16 10:26:59 +0200 (Wed, 16 Sep 2009)
New Revision: 723

Modified:
   trunk/82802ab.c
   trunk/ft2232_spi.c
   trunk/sb600spi.c
Log:
This patch cleans up flashrom so that it passes LLVM/clang's scan-build
without warnings.

Signed-off-by: Stefan Reinauer <stepan at coresystems.de>
Acked-by: Ronald G. Minnich <rminnich at gmail.com>



Modified: trunk/82802ab.c
===================================================================
--- trunk/82802ab.c	2009-09-16 08:18:08 UTC (rev 722)
+++ trunk/82802ab.c	2009-09-16 08:26:59 UTC (rev 723)
@@ -33,13 +33,13 @@
 // I need that Berkeley bit-map printer
 void print_82802ab_status(uint8_t status)
 {
-	printf("%s", status & 0x80 ? "Ready:" : "Busy:");
-	printf("%s", status & 0x40 ? "BE SUSPEND:" : "BE RUN/FINISH:");
-	printf("%s", status & 0x20 ? "BE ERROR:" : "BE OK:");
-	printf("%s", status & 0x10 ? "PROG ERR:" : "PROG OK:");
-	printf("%s", status & 0x8 ? "VP ERR:" : "VPP OK:");
-	printf("%s", status & 0x4 ? "PROG SUSPEND:" : "PROG RUN/FINISH:");
-	printf("%s", status & 0x2 ? "WP|TBL#|WP#,ABORT:" : "UNLOCK:");
+	printf_debug("%s", status & 0x80 ? "Ready:" : "Busy:");
+	printf_debug("%s", status & 0x40 ? "BE SUSPEND:" : "BE RUN/FINISH:");
+	printf_debug("%s", status & 0x20 ? "BE ERROR:" : "BE OK:");
+	printf_debug("%s", status & 0x10 ? "PROG ERR:" : "PROG OK:");
+	printf_debug("%s", status & 0x8 ? "VP ERR:" : "VPP OK:");
+	printf_debug("%s", status & 0x4 ? "PROG SUSPEND:" : "PROG RUN/FINISH:");
+	printf_debug("%s", status & 0x2 ? "WP|TBL#|WP#,ABORT:" : "UNLOCK:");
 }
 
 int probe_82802ab(struct flashchip *flash)
@@ -98,20 +98,19 @@
 
 	// clear status register
 	chip_writeb(0x50, bios);
-	//printf("Erase at %p\n", bios);
+
 	// clear write protect
-	//printf("write protect is at %p\n", (wrprotect));
-	//printf("write protect is 0x%x\n", *(wrprotect));
 	chip_writeb(0, wrprotect);
-	//printf("write protect is 0x%x\n", *(wrprotect));
 
 	// now start it
 	chip_writeb(0x20, bios);
 	chip_writeb(0xd0, bios);
 	programmer_delay(10);
+
 	// now let's see what the register is
 	status = wait_82802ab(flash->virtual_memory);
-	//print_82802ab_status(status);
+	print_82802ab_status(status);
+
 	if (check_erased_range(flash, offset, flash->page_size)) {
 		fprintf(stderr, "ERASE FAILED!\n");
 		return -1;

Modified: trunk/ft2232_spi.c
===================================================================
--- trunk/ft2232_spi.c	2009-09-16 08:18:08 UTC (rev 722)
+++ trunk/ft2232_spi.c	2009-09-16 08:26:59 UTC (rev 723)
@@ -70,7 +70,6 @@
 	int f;
 	struct ftdi_context *ftdic = &ftdic_context;
 	unsigned char buf[512];
-	unsigned char port_val = 0;
 	char *portpos = NULL;
 	int ft2232_type = FTDI_FT4232H;
 	enum ftdi_interface ft2232_interface = INTERFACE_B;
@@ -175,9 +174,8 @@
 	 *    dir: 0x0b  CS=output, DI=input, DO=output, SK=output
 	 */
 #define CS_BIT 0x08
-
 	buf[0] = SET_BITS_LOW;
-	buf[1] = (port_val = CS_BIT);
+	buf[1] = CS_BIT;
 	buf[2] = 0x0b;
 	if (send_buf(ftdic, buf, 3))
 		return -1;
@@ -195,7 +193,6 @@
 {
 	struct ftdi_context *ftdic = &ftdic_context;
 	static unsigned char *buf = NULL;
-	unsigned char port_val = 0;
 	int i, ret = 0;
 
 	if (writecnt > 65536 || readcnt > 65536)
@@ -213,10 +210,11 @@
 	 * as possible together.  if we're not expecting to
 	 * read, we can assert CS, write, and deassert CS all
 	 * in one shot.  if reading, we do three separate
-	 * operations. */
+	 * operations.
+	 */
 	printf_debug("Assert CS#\n");
 	buf[i++] = SET_BITS_LOW;
-	buf[i++] = (port_val &= ~CS_BIT);
+	buf[i++] = 0 & ~CS_BIT; /* assertive */
 	buf[i++] = 0x0b;
 
 	if (writecnt) {
@@ -236,20 +234,19 @@
 		buf[i++] = ((readcnt - 1) >> 8) & 0xff;
 		ret = send_buf(ftdic, buf, i);
 		i = 0;
-		if (ret) goto deassert_cs;
+		if (ret == 0) {
+			/* FIXME: This is unreliable. There's no guarantee that we read
+			 * the response directly after sending the read command.
+			 * We may be scheduled out etc.
+			 */
+			ret = get_buf(ftdic, readarr, readcnt);
+		}
 
-		/* FIXME: This is unreliable. There's no guarantee that we read
-		 * the response directly after sending the read command.
-		 * We may be scheduled out etc.
-		 */
-		ret = get_buf(ftdic, readarr, readcnt);
-
 	}
 
-deassert_cs:
 	printf_debug("De-assert CS#\n");
 	buf[i++] = SET_BITS_LOW;
-	buf[i++] = (port_val |= CS_BIT);
+	buf[i++] = CS_BIT;
 	buf[i++] = 0x0b;
 	if (send_buf(ftdic, buf, i))
 		return -1;

Modified: trunk/sb600spi.c
===================================================================
--- trunk/sb600spi.c	2009-09-16 08:18:08 UTC (rev 722)
+++ trunk/sb600spi.c	2009-09-16 08:26:59 UTC (rev 723)
@@ -64,6 +64,11 @@
 	printf("Programming flash");
 	for (i = 0; i < total_size; i++, buf++) {
 		result = spi_byte_program(i, *buf);
+		if (result) {
+			// spi_byte_program reported the error for us already
+			printf_debug("... continuing anyway.\n");
+		}
+
 		/* wait program complete. */
 		if (i % 0x8000 == 0)
 			printf(".");





More information about the flashrom mailing list