diff --git a/dummyflasher.c b/dummyflasher.c
index 3bda7a7..ba54206 100644
--- a/dummyflasher.c
+++ b/dummyflasher.c
@@ -30,59 +30,59 @@
 
 int dummy_init(void)
 {
-	printf("%s\n", __func__);
+	printf_debug("%s\n", __func__);
 	return 0; 
 }
 
 int dummy_shutdown(void)
 {
-	printf("%s\n", __func__);
+	printf_debug("%s\n", __func__);
 	return 0;
 }
 
 void *dummy_map(const char *descr, unsigned long phys_addr, size_t len)
 {
-	printf("%s: Mapping %s, 0x%lx bytes at 0x%08lx\n",
+	printf_debug("%s: Mapping %s, 0x%lx bytes at 0x%08lx\n",
 		__func__, descr, (unsigned long)len, phys_addr);
 	return (void *)phys_addr;
 }
 
 void dummy_unmap(void *virt_addr, size_t len)
 {
-	printf("%s: Unmapping 0x%lx bytes at %p\n",
+	printf_debug("%s: Unmapping 0x%lx bytes at %p\n",
 		__func__, (unsigned long)len, virt_addr);
 }
 
 void dummy_chip_writeb(uint8_t val, volatile void *addr)
 {
-	printf("%s: addr=%p, val=0x%02x\n", __func__, addr, val);
+	printf_debug("%s: addr=%p, val=0x%02x\n", __func__, addr, val);
 }
 
 void dummy_chip_writew(uint16_t val, volatile void *addr)
 {
-	printf("%s: addr=%p, val=0x%04x\n", __func__, addr, val);
+	printf_debug("%s: addr=%p, val=0x%04x\n", __func__, addr, val);
 }
 
 void dummy_chip_writel(uint32_t val, volatile void *addr)
 {
-	printf("%s: addr=%p, val=0x%08x\n", __func__, addr, val);
+	printf_debug("%s: addr=%p, val=0x%08x\n", __func__, addr, val);
 }
 
 uint8_t dummy_chip_readb(const volatile void *addr)
 {
-	printf("%s:  addr=%p\n", __func__, addr);
+	printf_debug("%s:  addr=%p, returning 0xff\n", __func__, addr);
 	return 0xff;
 }
 
 uint16_t dummy_chip_readw(const volatile void *addr)
 {
-	printf("%s:  addr=%p\n", __func__, addr);
+	printf_debug("%s:  addr=%p, returning 0xffff\n", __func__, addr);
 	return 0xffff;
 }
 
 uint32_t dummy_chip_readl(const volatile void *addr)
 {
-	printf("%s:  addr=%p\n", __func__, addr);
+	printf_debug("%s:  addr=%p, returning 0xffffffff\n", __func__, addr);
 	return 0xffffffff;
 }
 
diff --git a/flashrom.c b/flashrom.c
index e00789d..f76722a 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -38,29 +38,29 @@
 
 const struct programmer_entry programmer_table[] = {
 	{
-		.init		= internal_init,
-		.shutdown	= internal_shutdown,
+		.init			= internal_init,
+		.shutdown		= internal_shutdown,
 		.map_flash_region	= physmap,
 		.unmap_flash_region	= physunmap,
-		.chip_readb	= internal_chip_readb,
-		.chip_readw	= internal_chip_readw,
-		.chip_readl	= internal_chip_readl,
-		.chip_writeb	= internal_chip_writeb,
-		.chip_writew	= internal_chip_writew,
-		.chip_writel	= internal_chip_writel,
+		.chip_readb		= internal_chip_readb,
+		.chip_readw		= internal_chip_readw,
+		.chip_readl		= internal_chip_readl,
+		.chip_writeb		= internal_chip_writeb,
+		.chip_writew		= internal_chip_writew,
+		.chip_writel		= internal_chip_writel,
 	},
 
 	{
-		.init		= dummy_init,
-		.shutdown	= dummy_shutdown,
+		.init			= dummy_init,
+		.shutdown		= dummy_shutdown,
 		.map_flash_region	= dummy_map,
 		.unmap_flash_region	= dummy_unmap,
-		.chip_readb	= dummy_chip_readb,
-		.chip_readw	= dummy_chip_readw,
-		.chip_readl	= dummy_chip_readl,
-		.chip_writeb	= dummy_chip_writeb,
-		.chip_writew	= dummy_chip_writew,
-		.chip_writel	= dummy_chip_writel,
+		.chip_readb		= dummy_chip_readb,
+		.chip_readw		= dummy_chip_readw,
+		.chip_readl		= dummy_chip_readl,
+		.chip_writeb		= dummy_chip_writeb,
+		.chip_writew		= dummy_chip_writew,
+		.chip_writel		= dummy_chip_writel,
 	},
 
 	{},
