diff --git a/flash.h b/flash.h
index 611450f..56c0b4f 100644
--- a/flash.h
+++ b/flash.h
@@ -120,8 +120,8 @@
 #define FEATURE_OTP		(1 << 8)
 #define FEATURE_QPI		(1 << 9)
 /* Feature bits used for 4-bytes addressing mode */
-#define FEATURE_4BA_SUPPORT		(1 << 10)
-#define FEATURE_4BA_ONLY 		(1 << 11)
+#define FEATURE_4BA_SUPPORT	(1 << 10)
+#define FEATURE_4BA_ONLY 	(1 << 11)
 
 enum test_state {
 	OK = 0,
diff --git a/spi4ba.c b/spi4ba.c
index 72df874..bf0cf97 100644
--- a/spi4ba.c
+++ b/spi4ba.c
@@ -43,7 +43,7 @@
 
 	msg_trace("-> %s\n", __func__);
 
-	/* Switch to 4-bytes addressing mode  */
+	/* Switch to 4-bytes addressing mode */
 	return spi_send_command(flash, sizeof(cmd), 0, cmd, NULL);
 }
 
@@ -71,17 +71,15 @@
 
 	msg_trace("-> %s\n", __func__);
 
-	/* Switch to 4-bytes addressing mode  */
+	/* Switch to 4-bytes addressing mode */
 	result = spi_send_multicommand(flash, cmds);
-	if (result) {
+	if (result)
 		msg_cerr("%s failed during command execution\n", __func__);
-	}
 	return result;
 }
 
 /* Program one flash byte from 4-bytes addressing mode */
-int spi_byte_program_4ba(struct flashctx *flash, unsigned int addr,
-				 uint8_t databyte)
+int spi_byte_program_4ba(struct flashctx *flash, unsigned int addr, uint8_t databyte)
 {
 	int result;
 	struct spi_command cmds[] = {
@@ -112,16 +110,13 @@
 	msg_trace("-> %s (0x%08X)\n", __func__, addr);
 
 	result = spi_send_multicommand(flash, cmds);
-	if (result) {
-		msg_cerr("%s failed during command execution at address 0x%x\n",
-			__func__, addr);
-	}
+	if (result)
+		msg_cerr("%s failed during command execution at address 0x%x\n", __func__, addr);
 	return result;
 }
 
 /* Program flash bytes from 4-bytes addressing mode */
-int spi_nbyte_program_4ba(struct flashctx *flash, unsigned int addr,
-			  const uint8_t *bytes, unsigned int len)
+int spi_nbyte_program_4ba(struct flashctx *flash, unsigned int addr, const uint8_t *bytes, unsigned int len)
 {
 	int result;
 	unsigned char cmd[(JEDEC_BYTE_PROGRAM_OUTSIZE + 1) - 1 + 256] = {
@@ -171,8 +166,7 @@
 }
 
 /* Read flash bytes from 4-bytes addressing mode */
-int spi_nbyte_read_4ba(struct flashctx *flash, unsigned int addr,
-		   uint8_t *bytes, unsigned int len)
+int spi_nbyte_read_4ba(struct flashctx *flash, unsigned int addr, uint8_t *bytes, unsigned int len)
 {
 	const unsigned char cmd[JEDEC_READ_OUTSIZE + 1] = {
 		JEDEC_READ,
@@ -188,9 +182,8 @@
 	return spi_send_command(flash, sizeof(cmd), len, cmd, bytes);
 }
 
-/* Erases 4 KB of flash from 4-bytes addressing mode */
-int spi_block_erase_20_4ba(struct flashctx *flash, unsigned int addr,
-		       unsigned int blocklen)
+/* Erase one sector of flash from 4-bytes addressing mode */
+int spi_block_erase_20_4ba(struct flashctx *flash, unsigned int addr, unsigned int blocklen)
 {
 	int result;
 	struct spi_command cmds[] = {
@@ -234,9 +227,8 @@
 	return 0;
 }
 
-/* Erases 32 KB of flash from 4-bytes addressing mode */
-int spi_block_erase_52_4ba(struct flashctx *flash, unsigned int addr,
-		       unsigned int blocklen)
+/* Erase one sector of flash from 4-bytes addressing mode */
+int spi_block_erase_52_4ba(struct flashctx *flash, unsigned int addr, unsigned int blocklen)
 {
 	int result;
 	struct spi_command cmds[] = {
@@ -280,7 +272,7 @@
 	return 0;
 }
 
-/* Erases 64 KB of flash from 4-bytes addressing mode */
+/* Erase one sector of flash from 4-bytes addressing mode */
 int spi_block_erase_d8_4ba(struct flashctx *flash, unsigned int addr,
 		       unsigned int blocklen)
 {
