diff --git a/at45db.c b/at45db.c
index 619d41c..38c0685 100644
--- a/at45db.c
+++ b/at45db.c
@@ -341,7 +341,7 @@
 {
 	const unsigned int page_size = flash->chip->page_size;
 	const unsigned int total_size = flash->chip->total_size * 1024;
-	
+
 	if ((addr % page_size) != 0 || (blocklen % page_size) != 0) {
 		msg_cerr("%s: cannot erase partial pages: addr=%u, blocklen=%u\n", __func__, addr, blocklen);
 		return 1;
@@ -361,7 +361,7 @@
 {
 	const unsigned int page_size = flash->chip->page_size;
 	const unsigned int total_size = flash->chip->total_size * 1024;
-	
+
 	if ((addr % page_size) != 0 || (blocklen % page_size) != 0) { // FIXME: should check blocks not pages
 		msg_cerr("%s: cannot erase partial pages: addr=%u, blocklen=%u\n", __func__, addr, blocklen);
 		return 1;
@@ -381,7 +381,7 @@
 {
 	const unsigned int page_size = flash->chip->page_size;
 	const unsigned int total_size = flash->chip->total_size * 1024;
-	
+
 	if ((addr % page_size) != 0 || (blocklen % page_size) != 0) { // FIXME: should check sectors not pages
 		msg_cerr("%s: cannot erase partial pages: addr=%u, blocklen=%u\n", __func__, addr, blocklen);
 		return 1;
@@ -400,7 +400,7 @@
 int spi_erase_at45db_chip(struct flashctx *flash, unsigned int addr, unsigned int blocklen)
 {
 	const unsigned int total_size = flash->chip->total_size * 1024;
-	
+
 	if ((addr + blocklen) > total_size) {
 		msg_cerr("%s: tried to erase beyond flash boundary: addr=%u, blocklen=%u, size=%u\n",
 			 __func__, addr, blocklen, total_size);
@@ -532,7 +532,7 @@
 {
 	const unsigned int page_size = flash->chip->page_size;
 	const unsigned int total_size = flash->chip->total_size;
-	
+
 	if ((start % page_size) != 0 || (len % page_size) != 0) {
 		msg_cerr("%s: cannot write partial pages: start=%u, len=%u\n", __func__, start, len);
 		return 1;
diff --git a/chipset_enable.c b/chipset_enable.c
index 4d624a3..6280876 100644
--- a/chipset_enable.c
+++ b/chipset_enable.c
@@ -737,7 +737,7 @@
 	int ret_spi = ich_init_spi(spibar, ich_generation);
 	if (ret_spi == ERROR_FATAL)
 		return ret_spi;
-	
+
 	if (ret_fwh || ret_spi)
 		return ERROR_NONFATAL;
 
diff --git a/dediprog.c b/dediprog.c
index 72818ea..44a0018 100644
--- a/dediprog.c
+++ b/dediprog.c
@@ -697,7 +697,7 @@
 		msg_perr("Invalid readcnt=%i, aborting.\n", readcnt);
 		return 1;
 	}
-	
+
 	unsigned int idx, value;
 	/* New protocol has options and timeout combined as value while the old one used the value field for
 	 * timeout and the index field for options. */
diff --git a/it87spi.c b/it87spi.c
index efc2e02..df9f664 100644
--- a/it87spi.c
+++ b/it87spi.c
@@ -124,7 +124,7 @@
 	uint16_t flashport = 0;
 
 	enter_conf_mode_ite(port);
-	
+
 	char *param = extract_programmer_param("dualbiosindex");
 	if (param != NULL) {
 		sio_write(port, 0x07, 0x07); /* Select GPIO LDN */
diff --git a/pickit2_spi.c b/pickit2_spi.c
index a7c90a5..4354025 100644
--- a/pickit2_spi.c
+++ b/pickit2_spi.c
@@ -120,7 +120,7 @@
 
 	ret = usb_interrupt_write(pickit2_handle, ENDPOINT_OUT, (char *)command, CMD_LENGTH, DFLT_TIMEOUT);
 	ret = usb_interrupt_read(pickit2_handle, ENDPOINT_IN, (char *)command, CMD_LENGTH, DFLT_TIMEOUT);
-	
+
 	msg_pdbg("PICkit2 Firmware Version: %d.%d\n", (int)command[0], (int)command[1]);
 	if (ret != CMD_LENGTH) {
 		msg_perr("Command Get Firmware Version failed (%s)!\n", usb_strerror());
@@ -240,7 +240,7 @@
 		buf[i++] = 10;
 	else
 		buf[i++] = 13;
-		
+
 	/* Assert CS# */
 	buf[i++] = SCR_VPP_OFF;
 	buf[i++] = SCR_MCLR_GND_ON;
@@ -291,7 +291,7 @@
 				 readcnt, ret);
 			return 1;
 		}
-		
+
 		/* Actual data starts at byte number two */
 		memcpy(readarr, &buf[1], readcnt);
 	}
diff --git a/rayer_spi.c b/rayer_spi.c
index 4f8e1d6..ef8ac26 100644
--- a/rayer_spi.c
+++ b/rayer_spi.c
@@ -200,7 +200,7 @@
 		lpt_iobase = 0x378;
 	}
 	free(arg);
-	
+
 	msg_pdbg("Using address 0x%x as I/O base for parallel port access.\n",
 		 lpt_iobase);
 
diff --git a/sfdp.c b/sfdp.c
index e1568c0..97f5620 100644
--- a/sfdp.c
+++ b/sfdp.c
@@ -136,7 +136,7 @@
 		return 1;
 	}
 	msg_cdbg2("\n");
-	
+
 	/* 1. double word */
 	tmp32 =  ((unsigned int)buf[(4 * 0) + 0]);
 	tmp32 |= ((unsigned int)buf[(4 * 0) + 1]) << 8;
diff --git a/udelay.c b/udelay.c
index c3f14f3..f6fd103 100644
--- a/udelay.c
+++ b/udelay.c
@@ -92,10 +92,10 @@
 	unsigned long timeusec;
 	struct timeval start, end;
 	unsigned long counter = 0;
-	
+
 	gettimeofday(&start, NULL);
 	timeusec = 0;
-	
+
 	while (!timeusec && (++counter < 1000000000)) {
 		gettimeofday(&end, NULL);
 		timeusec = 1000000 * (end.tv_sec - start.tv_sec) +
@@ -115,7 +115,7 @@
 {
 	unsigned long timeusec;
 	struct timeval start, end;
-	
+
 	gettimeofday(&start, NULL);
 	myusec_delay(usecs);
 	gettimeofday(&end, NULL);
