diff --git a/drivers/marvell/amb_adec.c b/drivers/marvell/amb_adec.c
index 06a1957..3fb2f38 100644
--- a/drivers/marvell/amb_adec.c
+++ b/drivers/marvell/amb_adec.c
@@ -96,8 +96,8 @@
 	uint32_t size, size_count;
 
 	/* Dump all AMB windows */
-	tf_printf("bank  attribute     base          size\n");
-	tf_printf("--------------------------------------------\n");
+	printf("bank  attribute     base          size\n");
+	printf("--------------------------------------------\n");
 	for (win_id = 0; win_id < AMB_MAX_WIN_ID; win_id++) {
 		ctrl = mmio_read_32(AMB_WIN_CR_OFFSET(win_id));
 		if (ctrl & WIN_ENABLE_BIT) {
@@ -105,8 +105,8 @@
 			attr = (ctrl >> AMB_ATTR_OFFSET) & AMB_ATTR_MASK;
 			size_count = (ctrl >> AMB_SIZE_OFFSET) & AMB_SIZE_MASK;
 			size = (size_count + 1) * AMB_WIN_ALIGNMENT_64K;
-			tf_printf("amb   0x%04x        0x%08x    0x%08x\n",
-				  attr, base, size);
+			printf("amb   0x%04x        0x%08x    0x%08x\n",
+			       attr, base, size);
 		}
 	}
 }
diff --git a/drivers/marvell/ccu.c b/drivers/marvell/ccu.c
index e478d63..1502c3f 100644
--- a/drivers/marvell/ccu.c
+++ b/drivers/marvell/ccu.c
@@ -20,7 +20,7 @@
 
 /* common defines */
 #define WIN_ENABLE_BIT			(0x1)
-/* Physical address of the base of the window = {AddrLow[19:0],20’h0} */
+/* Physical address of the base of the window = {AddrLow[19:0],20'h0} */
 #define ADDRESS_SHIFT			(20 - 4)
 #define ADDRESS_MASK			(0xFFFFFFF0)
 #define CCU_WIN_ALIGNMENT		(0x100000)
@@ -40,8 +40,8 @@
 	uint64_t start, end;
 
 	/* Dump all AP windows */
-	tf_printf("\tbank  target     start              end\n");
-	tf_printf("\t----------------------------------------------------\n");
+	printf("\tbank  target     start              end\n");
+	printf("\t----------------------------------------------------\n");
 	for (win_id = 0; win_id < MVEBU_CCU_MAX_WINS; win_id++) {
 		win_cr = mmio_read_32(CCU_WIN_CR_OFFSET(ap_index, win_id));
 		if (win_cr & WIN_ENABLE_BIT) {
@@ -53,13 +53,13 @@
 							      win_id));
 			start = ((uint64_t)alr << ADDRESS_SHIFT);
 			end = (((uint64_t)ahr + 0x10) << ADDRESS_SHIFT);
-			tf_printf("\tccu    %02x     0x%016llx 0x%016llx\n",
-				  target_id, start, end);
+			printf("\tccu    %02x     0x%016llx 0x%016llx\n",
+			       target_id, start, end);
 		}
 	}
 	win_cr = mmio_read_32(CCU_WIN_GCR_OFFSET(ap_index));
 	target_id = (win_cr >> CCU_GCR_TARGET_OFFSET) & CCU_GCR_TARGET_MASK;
-	tf_printf("\tccu   GCR %d - all other transactions\n", target_id);
+	printf("\tccu   GCR %d - all other transactions\n", target_id);
 }
 #endif
 
diff --git a/drivers/marvell/comphy/phy-comphy-cp110.c b/drivers/marvell/comphy/phy-comphy-cp110.c
index 2b1770f..8b78280 100644
--- a/drivers/marvell/comphy/phy-comphy-cp110.c
+++ b/drivers/marvell/comphy/phy-comphy-cp110.c
@@ -18,7 +18,7 @@
 
 /* #define DEBUG_COMPHY */
 #ifdef DEBUG_COMPHY
-#define debug(format...) tf_printf(format)
+#define debug(format...) printf(format)
 #else
 #define debug(format, arg...)
 #endif
diff --git a/drivers/marvell/gwin.c b/drivers/marvell/gwin.c
index 2b17f35..b5705f7 100644
--- a/drivers/marvell/gwin.c
+++ b/drivers/marvell/gwin.c
@@ -153,8 +153,8 @@
 	uint32_t win_num;
 
 	/* Dump all GWIN windows */
-	tf_printf("\tbank  target     start              end\n");
-	tf_printf("\t----------------------------------------------------\n");
+	printf("\tbank  target     start              end\n");
+	printf("\t----------------------------------------------------\n");
 	for (win_num = 0; win_num < MVEBU_GWIN_MAX_WINS; win_num++) {
 		uint32_t cr;
 		uint64_t alr, ahr;
@@ -166,8 +166,8 @@
 			alr = (alr >> ADDRESS_LSHIFT) << ADDRESS_RSHIFT;
 			ahr = mmio_read_32(GWIN_AHR_OFFSET(ap_index, win_num));
 			ahr = (ahr >> ADDRESS_LSHIFT) << ADDRESS_RSHIFT;
-			tf_printf("\tgwin   %d     0x%016llx 0x%016llx\n",
-				  (cr >> 8) & 0xF, alr, ahr);
+			printf("\tgwin   %d     0x%016llx 0x%016llx\n",
+			       (cr >> 8) & 0xF, alr, ahr);
 		}
 	}
 }
diff --git a/drivers/marvell/io_win.c b/drivers/marvell/io_win.c
index 701dbb8..40b1982 100644
--- a/drivers/marvell/io_win.c
+++ b/drivers/marvell/io_win.c
@@ -158,8 +158,8 @@
 	uint64_t start, end;
 
 	/* Dump all IO windows */
-	tf_printf("\tbank  target     start              end\n");
-	tf_printf("\t----------------------------------------------------\n");
+	printf("\tbank  target     start              end\n");
+	printf("\t----------------------------------------------------\n");
 	for (win_id = 0; win_id < MVEBU_IO_WIN_MAX_WINS; win_id++) {
 		alr = mmio_read_32(IO_WIN_ALR_OFFSET(ap_index, win_id));
 		if (alr & WIN_ENABLE_BIT) {
@@ -169,13 +169,13 @@
 								win_id));
 			start = ((uint64_t)alr << ADDRESS_SHIFT);
 			end = (((uint64_t)ahr + 0x10) << ADDRESS_SHIFT);
-			tf_printf("\tio-win %d     0x%016llx 0x%016llx\n",
-				  trgt_id, start, end);
+			printf("\tio-win %d     0x%016llx 0x%016llx\n",
+			       trgt_id, start, end);
 		}
 	}
-	tf_printf("\tio-win gcr is %x\n",
-		  mmio_read_32(MVEBU_IO_WIN_BASE(ap_index) +
-		MVEBU_IO_WIN_GCR_OFFSET));
+	printf("\tio-win gcr is %x\n",
+	       mmio_read_32(MVEBU_IO_WIN_BASE(ap_index) +
+	       MVEBU_IO_WIN_GCR_OFFSET));
 }
 #endif
 
diff --git a/drivers/marvell/iob.c b/drivers/marvell/iob.c
index 9f9d047..acc4941 100644
--- a/drivers/marvell/iob.c
+++ b/drivers/marvell/iob.c
@@ -52,8 +52,8 @@
 		win->base_addr = ALIGN_UP(win->base_addr, IOB_WIN_ALIGNMENT);
 		ERROR("Window %d: base address unaligned to 0x%x\n",
 		      win_num, IOB_WIN_ALIGNMENT);
-		tf_printf("Align up the base address to 0x%llx\n",
-			  win->base_addr);
+		printf("Align up the base address to 0x%llx\n",
+		       win->base_addr);
 	}
 
 	/* size parameter validity check */
@@ -61,7 +61,7 @@
 		win->win_size = ALIGN_UP(win->win_size, IOB_WIN_ALIGNMENT);
 		ERROR("Window %d: window size unaligned to 0x%x\n", win_num,
 		      IOB_WIN_ALIGNMENT);
-		tf_printf("Aligning size to 0x%llx\n", win->win_size);
+		printf("Aligning size to 0x%llx\n", win->win_size);
 	}
 }
 
@@ -96,8 +96,8 @@
 		"PEX0 ", "NAND ", "RUNIT", "MCI1 " };
 
 	/* Dump all IOB windows */
-	tf_printf("bank  id target  start              end\n");
-	tf_printf("----------------------------------------------------\n");
+	printf("bank  id target  start              end\n");
+	printf("----------------------------------------------------\n");
 	for (win_id = 0; win_id < MVEBU_IOB_MAX_WINS; win_id++) {
 		win_cr = mmio_read_32(IOB_WIN_CR_OFFSET(win_id));
 		if (win_cr & WIN_ENABLE_BIT) {
@@ -114,9 +114,9 @@
 				 */
 				end = start + (16 << 20);
 			}
-			tf_printf("iob   %02d %s   0x%016llx 0x%016llx\n",
-				  win_id, iob_target_name[target_id],
-				  start, end);
+			printf("iob   %02d %s   0x%016llx 0x%016llx\n",
+			       win_id, iob_target_name[target_id],
+			       start, end);
 		}
 	}
 }
