diff --git a/at25.c b/at25.c
index 8891e2b..817e769 100644
--- a/at25.c
+++ b/at25.c
@@ -164,7 +164,7 @@
 	if ((status & (3 << 2)) == 0)
 		return 0;
 
-	msg_cdbg("Some block protection in effect, disabling\n");
+	msg_cdbg("Some block protection in effect, disabling... ");
 	if (status & (1 << 7)) {
 		msg_cdbg("Need to disable Sector Protection Register Lock\n");
 		if ((status & (1 << 4)) == 0) {
@@ -175,7 +175,7 @@
 		/* All bits except bit 7 (SPRL) are readonly. */
 		result = spi_write_status_register(flash, status & ~(1 << 7));
 		if (result) {
-			msg_cerr("spi_write_status_register failed\n");
+			msg_cerr("spi_write_status_register failed.\n");
 			return result;
 		}
 		
@@ -183,7 +183,7 @@
 	/* Global unprotect. Make sure to mask SPRL as well. */
 	result = spi_write_status_register(flash, status & ~0xbc);
 	if (result) {
-		msg_cerr("spi_write_status_register failed\n");
+		msg_cerr("spi_write_status_register failed.\n");
 		return result;
 	}
 	status = spi_read_status_register(flash);
@@ -191,6 +191,7 @@
 		msg_cerr("Block protection could not be disabled!\n");
 		return 1;
 	}
+	msg_cdbg("done.\n");
 	return 0;
 }
 
@@ -219,20 +220,20 @@
 	if ((status & 0x6c) == 0)
 		return 0;
 
-	msg_cdbg("Some block protection in effect, disabling\n");
+	msg_cdbg("Some block protection in effect, disabling... ");
 	if (status & (1 << 7)) {
 		msg_cdbg("Need to disable Status Register Write Protect\n");
 		/* Clear bit 7 (WPEN). */
 		result = spi_write_status_register(flash, status & ~(1 << 7));
 		if (result) {
-			msg_cerr("spi_write_status_register failed\n");
+			msg_cerr("spi_write_status_register failed.\n");
 			return result;
 		}
 	}
 	/* Global unprotect. Make sure to mask WPEN as well. */
 	result = spi_write_status_register(flash, status & ~0xec);
 	if (result) {
-		msg_cerr("spi_write_status_register failed\n");
+		msg_cerr("spi_write_status_register failed.\n");
 		return result;
 	}
 	status = spi_read_status_register(flash);
@@ -240,6 +241,7 @@
 		msg_cerr("Block protection could not be disabled!\n");
 		return 1;
 	}
+	msg_cdbg("done.\n");
 	return 0;
 }
 
@@ -253,20 +255,20 @@
 	if ((status & 0x7c) == 0)
 		return 0;
 
-	msg_cdbg("Some block protection in effect, disabling\n");
+	msg_cdbg("Some block protection in effect, disabling... ");
 	if (status & (1 << 7)) {
 		msg_cdbg("Need to disable Status Register Write Protect\n");
 		/* Clear bit 7 (WPEN). */
 		result = spi_write_status_register(flash, status & ~(1 << 7));
 		if (result) {
-			msg_cerr("spi_write_status_register failed\n");
+			msg_cerr("spi_write_status_register failed.\n");
 			return result;
 		}
 	}
 	/* Global unprotect. Make sure to mask WPEN as well. */
 	result = spi_write_status_register(flash, status & ~0xfc);
 	if (result) {
-		msg_cerr("spi_write_status_register failed\n");
+		msg_cerr("spi_write_status_register failed.\n");
 		return result;
 	}
 	status = spi_read_status_register(flash);
@@ -274,5 +276,6 @@
 		msg_cerr("Block protection could not be disabled!\n");
 		return 1;
 	}
+	msg_cdbg("done.\n");
 	return 0;
 }
diff --git a/spi25.c b/spi25.c
index 3693783..900df9c 100644
--- a/spi25.c
+++ b/spi25.c
@@ -933,10 +933,10 @@
 	if ((status & 0x3c) == 0)
 		return 0;
 
-	msg_cdbg("Some block protection in effect, disabling\n");
+	msg_cdbg("Some block protection in effect, disabling... ");
 	result = spi_write_status_register(flash, status & ~0x3c);
 	if (result) {
-		msg_cerr("spi_write_status_register failed\n");
+		msg_cerr("spi_write_status_register failed.\n");
 		return result;
 	}
 	status = spi_read_status_register(flash);
@@ -944,6 +944,7 @@
 		msg_cerr("Block protection could not be disabled!\n");
 		return 1;
 	}
+	msg_cdbg("done.\n");
 	return 0;
 }
 
