diff --git a/board/incaip/flash.c b/board/incaip/flash.c
index e7fd540..686f2e9 100644
--- a/board/incaip/flash.c
+++ b/board/incaip/flash.c
@@ -85,14 +85,14 @@
 		memset(&flash_info[i], 0, sizeof(flash_info_t));
 #endif
 
-		flash_info[i].size = 
+		flash_info[i].size =
 			flash_get_size((FPW *)flashbase, &flash_info[i]);
 
 		if (flash_info[i].flash_id == FLASH_UNKNOWN) {
 			printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx\n",
 			i, flash_info[i].size);
 		}
-		
+
 		size += flash_info[i].size;
 	}
 
@@ -172,13 +172,13 @@
 {
 	int i;
 	flash_info_t * info;
-	
+
 	for (i = 0; i < CFG_MAX_FLASH_BANKS; i ++) {
 		info = & flash_info[i];
 		if (info->start[0] <= base && base < info->start[0] + info->size)
 			break;
 	}
-	
+
 	return i == CFG_MAX_FLASH_BANKS ? 0 : info;
 }
 
@@ -225,32 +225,32 @@
 	case FLASH_AM640U:
 		fmt = "29LV641D (64 Mbit, uniform sectors)\n";
 		break;
-        case FLASH_28F800C3B:
-        case FLASH_28F800C3T:
+	case FLASH_28F800C3B:
+	case FLASH_28F800C3T:
 		fmt = "28F800C3%s (8 Mbit, %s)\n";
 		break;
 	case FLASH_INTEL800B:
 	case FLASH_INTEL800T:
 		fmt = "28F800B3%s (8 Mbit, %s)\n";
 		break;
-        case FLASH_28F160C3B:
-        case FLASH_28F160C3T:
+	case FLASH_28F160C3B:
+	case FLASH_28F160C3T:
 		fmt = "28F160C3%s (16 Mbit, %s)\n";
 		break;
 	case FLASH_INTEL160B:
 	case FLASH_INTEL160T:
 		fmt = "28F160B3%s (16 Mbit, %s)\n";
 		break;
-        case FLASH_28F320C3B:
-        case FLASH_28F320C3T:
+	case FLASH_28F320C3B:
+	case FLASH_28F320C3T:
 		fmt = "28F320C3%s (32 Mbit, %s)\n";
 		break;
 	case FLASH_INTEL320B:
 	case FLASH_INTEL320T:
 		fmt = "28F320B3%s (32 Mbit, %s)\n";
 		break;
-        case FLASH_28F640C3B:
-        case FLASH_28F640C3T:
+	case FLASH_28F640C3B:
+	case FLASH_28F640C3T:
 		fmt = "28F640C3%s (64 Mbit, %s)\n";
 		break;
 	case FLASH_INTEL640B:
@@ -534,15 +534,15 @@
 	 left > 0 && res == 0;
 	 addr += sizeof(data), left -= sizeof(data) - bytes) {
 
-        bytes = addr & (sizeof(data) - 1);
-        addr &= ~(sizeof(data) - 1);
+	bytes = addr & (sizeof(data) - 1);
+	addr &= ~(sizeof(data) - 1);
 
 	/* combine source and destination data so can program
 	 * an entire word of 16 or 32 bits
 	 */
-        for (i = 0; i < sizeof(data); i++) {
-            data <<= 8;
-            if (i < bytes || i - bytes >= left )
+	for (i = 0; i < sizeof(data); i++) {
+	    data <<= 8;
+	    if (i < bytes || i - bytes >= left )
 		data += *((uchar *)addr + i);
 	    else
 		data += *src++;
