diff --git a/it85spi.c b/it85spi.c
index f56d7bd..76e4861 100644
--- a/it85spi.c
+++ b/it85spi.c
@@ -114,7 +114,7 @@
 {
 	int ret, tries;
 
-	msg_pdbg("%s():%d was called ...\n", __FUNCTION__, __LINE__);
+	msg_pdbg("%s():%d was called ...\n", __func__, __LINE__);
 	if (it85xx_scratch_rom_reenter > 0)
 		return;
 
@@ -131,7 +131,7 @@
 		/* Wait until IBF (input buffer) is not full. */
 		if (wait_for(KB_IBF, 0, MAX_TIMEOUT,
 		             "* timeout at waiting for IBF==0.\n",
-		             __FUNCTION__, __LINE__))
+		             __func__, __LINE__))
 			continue;
 
 		/* Copy EC firmware to SRAM. */
@@ -140,7 +140,7 @@
 		/* Confirm EC has taken away the command. */
 		if (wait_for(KB_IBF, 0, MAX_TIMEOUT,
 		             "* timeout at taking command.\n",
-		             __FUNCTION__, __LINE__))
+		             __func__, __LINE__))
 			continue;
 
 		/* Waiting for OBF (output buffer) has data.
@@ -148,12 +148,12 @@
 		 * ISR so that it is okay as long as the command is 0xFA. */
 		if (wait_for(KB_OBF, KB_OBF, MAX_TIMEOUT, NULL, NULL, 0))
 			msg_pdbg("%s():%d * timeout at waiting for OBF.\n",
-			         __FUNCTION__, __LINE__);
+			         __func__, __LINE__);
 		if ((ret = INB(LEGACY_KBC_PORT_DATA)) == 0xFA) {
 			break;
 		} else {
 			msg_perr("%s():%d * not run on SRAM ret=%d\n",
-			         __FUNCTION__, __LINE__, ret);
+			         __func__, __LINE__, ret);
 			continue;
 		}
 	}
@@ -161,10 +161,9 @@
 	if (tries < MAX_TRY) {
 		/* EC already runs on SRAM */
 		it85xx_scratch_rom_reenter++;
-		msg_pdbg("%s():%d * SUCCESS.\n", __FUNCTION__, __LINE__);
+		msg_pdbg("%s():%d * SUCCESS.\n", __func__, __LINE__);
 	} else {
-		msg_perr("%s():%d * Max try reached.\n",
-		         __FUNCTION__, __LINE__);
+		msg_perr("%s():%d * Max try reached.\n", __func__, __LINE__);
 	}
 }
 
@@ -175,7 +174,7 @@
 #endif
 	int tries;
 
-	msg_pdbg("%s():%d was called ...\n", __FUNCTION__, __LINE__);
+	msg_pdbg("%s():%d was called ...\n", __func__, __LINE__);
 	if (it85xx_scratch_rom_reenter <= 0)
 		return;
 
@@ -183,7 +182,7 @@
 		/* Wait until IBF (input buffer) is not full. */
 		if (wait_for(KB_IBF, 0, MAX_TIMEOUT,
 		             "* timeout at waiting for IBF==0.\n",
-		             __FUNCTION__, __LINE__))
+		             __func__, __LINE__))
 			continue;
 
 		/* Exit SRAM. Run on flash. */
@@ -192,7 +191,7 @@
 		/* Confirm EC has taken away the command. */
 		if (wait_for(KB_IBF, 0, MAX_TIMEOUT,
 		             "* timeout at taking command.\n",
-		             __FUNCTION__, __LINE__)) {
+		             __func__, __LINE__)) {
 			/* We cannot ensure if EC has exited update mode.
 			 * If EC is in normal mode already, a further 0xFE
 			 * command will reboot system. So, exit loop here. */
@@ -205,10 +204,9 @@
 
 	if (tries < MAX_TRY) {
 		it85xx_scratch_rom_reenter = 0;
-		msg_pdbg("%s():%d * SUCCESS.\n", __FUNCTION__, __LINE__);
+		msg_pdbg("%s():%d * SUCCESS.\n", __func__, __LINE__);
 	} else {
-		msg_perr("%s():%d * Max try reached.\n",
-		         __FUNCTION__, __LINE__);
+		msg_perr("%s():%d * Max try reached.\n", __func__, __LINE__);
 	}
 
 #if 0
