diff --git a/flash.h b/flash.h
index 7086e01..5ce7e87 100644
--- a/flash.h
+++ b/flash.h
@@ -136,6 +136,8 @@
 			unsigned int size; /* Eraseblock size */
 			unsigned int count; /* Number of contiguous blocks with that size */
 		} eraseblocks[NUM_ERASEREGIONS];
+		/* a block_erase function should try to erase one block of size
+		 * 'blocklen' at address 'blockaddr' and return 0 on success. */
 		int (*block_erase) (struct flashchip *flash, unsigned int blockaddr, unsigned int blocklen);
 	} block_erasers[NUM_ERASEFUNCTIONS];
 
diff --git a/flashrom.c b/flashrom.c
index 14d5263..e9e6a77 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -1312,7 +1312,7 @@
 		goto out_free;
 	}
 
-	ret = write_buf_to_file(buf, flash->total_size * 1024, filename);
+	ret = write_buf_to_file(buf, size, filename);
 out_free:
 	free(buf);
 	msg_cinfo("%s.\n", ret ? "FAILED" : "done");
@@ -1489,13 +1489,13 @@
 	if (!eraser.block_erase && eraser.eraseblocks[0].count) {
 		if (log)
 			msg_cdbg("eraseblock layout is known, but matching "
-				"block erase function is not implemented. ");
+				 "block erase function is not implemented. ");
 		return 1;
 	}
 	if (eraser.block_erase && !eraser.eraseblocks[0].count) {
 		if (log)
 			msg_cdbg("block erase function found, but "
-				"eraseblock layout is not defined. ");
+				 "eraseblock layout is not defined. ");
 		return 1;
 	}
 	return 0;
diff --git a/ichspi.c b/ichspi.c
index 31945de..299cbf3 100644
--- a/ichspi.c
+++ b/ichspi.c
@@ -159,9 +159,9 @@
 	return mmio_readb(ich_spibar + X);
 }
 
-#define REGWRITE32(X,Y) mmio_writel(Y, ich_spibar+X)
-#define REGWRITE16(X,Y) mmio_writew(Y, ich_spibar+X)
-#define REGWRITE8(X,Y)  mmio_writeb(Y, ich_spibar+X)
+#define REGWRITE32(off,val) mmio_writel(val, ich_spibar+off)
+#define REGWRITE16(off,val) mmio_writew(val, ich_spibar+off)
+#define REGWRITE8(off,val)  mmio_writeb(val, ich_spibar+off)
 
 /* Common SPI functions */
 static int find_opcode(OPCODES *op, uint8_t opcode);
@@ -856,7 +856,8 @@
 		if (!ichspi_lock)
 			opcode_index = reprogram_opcode_on_the_fly(cmd, writecnt, readcnt);
 		if (opcode_index == -1) {
-			msg_pdbg("Invalid OPCODE 0x%02x\n", cmd);
+			msg_pdbg("Invalid OPCODE 0x%02x, will not execute.\n",
+				 cmd);
 			return SPI_INVALID_OPCODE;
 		}
 	}
diff --git a/print.c b/print.c
index c13272a..ac49e03 100644
--- a/print.c
+++ b/print.c
@@ -43,18 +43,18 @@
 		ret = strcat_realloc(ret, "Non-SPI,");
 	} else {
 		if (bustype & CHIP_BUSTYPE_PARALLEL)
-			ret = strcat_realloc(ret, "Parallel,");
+			ret = strcat_realloc(ret, "Parallel, ");
 		if (bustype & CHIP_BUSTYPE_LPC)
-			ret = strcat_realloc(ret, "LPC,");
+			ret = strcat_realloc(ret, "LPC, ");
 		if (bustype & CHIP_BUSTYPE_FWH)
-			ret = strcat_realloc(ret, "FWH,");
+			ret = strcat_realloc(ret, "FWH, ");
 		if (bustype & CHIP_BUSTYPE_SPI)
-			ret = strcat_realloc(ret, "SPI,");
+			ret = strcat_realloc(ret, "SPI, ");
 		if (bustype == CHIP_BUSTYPE_NONE)
-			ret = strcat_realloc(ret, "None,");
+			ret = strcat_realloc(ret, "None, ");
 	}
 	/* Kill last comma. */
-	ret[strlen(ret) - 1] = '\0';
+	ret[strlen(ret) - 2] = '\0';
 	ret = realloc(ret, strlen(ret) + 1);
 	return ret;
 }
diff --git a/spi25.c b/spi25.c
index ab272c9..0ba1994 100644
--- a/spi25.c
+++ b/spi25.c
@@ -119,8 +119,10 @@
 	uint32_t id1;
 	uint32_t id2;
 
-	if (spi_rdid(readarr, bytes))
+	if (spi_rdid(readarr, bytes)) {
+		msg_cdbg("\n");
 		return 0;
+	}
 
 	if (!oddparity(readarr[0]))
 		msg_cdbg("RDID byte 0 parity violation. ");
@@ -198,8 +200,10 @@
 	unsigned char readarr[JEDEC_REMS_INSIZE];
 	uint32_t id1, id2;
 
-	if (spi_rems(readarr))
+	if (spi_rems(readarr)) {
+		msg_cdbg("\n");
 		return 0;
+	}
 
 	id1 = readarr[0];
 	id2 = readarr[1];
@@ -254,15 +258,19 @@
 		return 0;
 	}
 
-	if (spi_res(readarr, 1))
+	if (spi_res(readarr, 1)) {
+		msg_cdbg("\n");
 		return 0;
+	}
 
 	id2 = readarr[0];
 
 	msg_cdbg("%s: id 0x%x\n", __func__, id2);
 
-	if (id2 != flash->model_id)
+	if (id2 != flash->model_id) {
+		msg_cdbg("\n");
 		return 0;
+	}
 
 	/* Print the status register to tell the
 	 * user about possible write protection.
@@ -276,8 +284,10 @@
 	unsigned char readarr[2];
 	uint32_t id1, id2;
 
-	if (spi_res(readarr, 2))
+	if (spi_res(readarr, 2)) {
+		msg_cdbg("\n");
 		return 0;
+	}
 
 	id1 = readarr[0];
 	id2 = readarr[1];
