diff --git a/Makefile b/Makefile
index cb7eb08..e7ca14a 100644
--- a/Makefile
+++ b/Makefile
@@ -202,8 +202,6 @@
 
 BL_COMMON_SOURCES	+=	common/bl_common.c			\
 				common/tf_log.c				\
-				common/tf_printf.c			\
-				common/tf_snprintf.c			\
 				common/${ARCH}/debug.S			\
 				lib/${ARCH}/cache_helpers.S		\
 				lib/${ARCH}/misc_helpers.S		\
diff --git a/common/tf_log.c b/common/tf_log.c
index 54c0a43..6da1e85 100644
--- a/common/tf_log.c
+++ b/common/tf_log.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -36,11 +36,11 @@
 
 	prefix_str = plat_log_get_prefix(log_level);
 
-	if (prefix_str != NULL)
-		tf_string_print(prefix_str);
+	while (*prefix_str)
+		putchar(*prefix_str++);
 
 	va_start(args, fmt);
-	tf_vprintf(fmt+1, args);
+	vprintf(fmt + 1, args);
 	va_end(args);
 }
 
diff --git a/docs/psci-lib-integration-guide.rst b/docs/psci-lib-integration-guide.rst
index 47cbfcc..d86fc29 100644
--- a/docs/psci-lib-integration-guide.rst
+++ b/docs/psci-lib-integration-guide.rst
@@ -319,7 +319,7 @@
 below. The TF-A source tree provides implementations for all
 these functions but the EL3 Runtime Software may use its own implementation.
 
-**Functions : assert(), memcpy(), memset**
+**Functions : assert(), memcpy(), memset(), printf()**
 
 These must be implemented as described in ISO C Standard.
 
@@ -353,14 +353,6 @@
 This function will be called by the PSCI library on encountering a critical
 failure that cannot be recovered from. This function **must not** return.
 
-**Function : tf\_printf()**
-
-This is printf-compatible function, but unlike printf, it does not return any
-value. The TF-A source tree provides an implementation which
-is optimized for stack usage and supports only a subset of format specifiers.
-The details of the format specifiers supported can be found in the
-``tf_printf.c`` file in the TF-A source tree.
-
 CPU Context management API
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/include/common/debug.h b/include/common/debug.h
index 3c99ce5..4c5560f 100644
--- a/include/common/debug.h
+++ b/include/common/debug.h
@@ -4,8 +4,8 @@
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
-#ifndef __DEBUG_H__
-#define __DEBUG_H__
+#ifndef DEBUG_H
+#define DEBUG_H
 
 /*
  * The log output macros print output to the console. These macros produce
@@ -90,11 +90,7 @@
 void __dead2 __stack_chk_fail(void);
 
 void tf_log(const char *fmt, ...) __printflike(1, 2);
-int tf_printf(const char *fmt, ...) __printflike(1, 2);
-int tf_snprintf(char *s, size_t n, const char *fmt, ...) __printflike(3, 4);
-int tf_vprintf(const char *fmt, va_list args);
-int tf_string_print(const char *str);
 void tf_log_set_max_level(unsigned int log_level);
 
 #endif /* __ASSEMBLY__ */
-#endif /* __DEBUG_H__ */
+#endif /* DEBUG_H */
diff --git a/include/lib/libc/stdio.h b/include/lib/libc/stdio.h
index 83fd18c..3d9323e 100644
--- a/include/lib/libc/stdio.h
+++ b/include/lib/libc/stdio.h
@@ -11,6 +11,7 @@
 #ifndef STDIO_H
 #define STDIO_H
 
+#include <cdefs.h>
 #include <stdio_.h>
 
 #ifndef NULL
@@ -19,14 +20,11 @@
 
 #define EOF            -1
 
-int printf(const char *fmt, ...);
-int snprintf(char *s, size_t n, const char *fmt, ...);
-int sprintf(char *s, const char *fmt, ...);
-int sscanf(const char *s, const char *fmt, ...);
+int printf(const char *fmt, ...) __printflike(1, 2);
+int snprintf(char *s, size_t n, const char *fmt, ...) __printflike(3, 4);
 
 #ifdef STDARG_H
-int vsnprintf(char *s, size_t n, const char *fmt, va_list arg);
-int vsprintf(char *s, const char *fmt, va_list arg);
+int vprintf(const char *fmt, va_list args);
 #endif
 
 int putchar(int c);
diff --git a/lib/libc/libc.mk b/lib/libc/libc.mk
index 0dee4f5..554f36b 100644
--- a/lib/libc/libc.mk
+++ b/lib/libc/libc.mk
@@ -16,12 +16,12 @@
 			printf.c			\
 			putchar.c			\
 			puts.c				\
+			snprintf.c			\
 			strchr.c			\
 			strcmp.c			\
 			strlen.c			\
 			strncmp.c			\
-			strnlen.c			\
-			subr_prf.c)
+			strnlen.c)
 
 INCLUDES	+=	-Iinclude/lib/libc		\
 			-Iinclude/lib/libc/$(ARCH)	\
diff --git a/common/tf_printf.c b/lib/libc/printf.c
similarity index 91%
rename from common/tf_printf.c
rename to lib/libc/printf.c
index ecf058c..a1a8024 100644
--- a/common/tf_printf.c
+++ b/lib/libc/printf.c
@@ -1,13 +1,10 @@
 /*
- * Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
-#include <arch.h>
-#include <arch_helpers.h>
 #include <assert.h>
 #include <debug.h>
-#include <limits.h>
 #include <stdarg.h>
 #include <stdint.h>
 
@@ -23,7 +20,7 @@
 	(((_lcount) > 1) ? va_arg(_args, unsigned long long int) :	\
 	((_lcount) ? va_arg(_args, unsigned long int) : va_arg(_args, unsigned int)))
 
-int tf_string_print(const char *str)
+static int string_print(const char *str)
 {
 	int count = 0;
 
@@ -87,7 +84,7 @@
  * The print exits on all other formats specifiers other than valid
  * combinations of the above specifiers.
  *******************************************************************/
-int tf_vprintf(const char *fmt, va_list args)
+int vprintf(const char *fmt, va_list args)
 {
 	int l_count;
 	long long int num;
@@ -121,12 +118,12 @@
 				break;
 			case 's':
 				str = va_arg(args, char *);
-				count += tf_string_print(str);
+				count += string_print(str);
 				break;
 			case 'p':
 				unum = (uintptr_t)va_arg(args, void *);
 				if (unum) {
-					count += tf_string_print("0x");
+					count += string_print("0x");
 					padn -= 2;
 				}
 
@@ -180,13 +177,13 @@
 	return count;
 }
 
-int tf_printf(const char *fmt, ...)
+int printf(const char *fmt, ...)
 {
 	int count;
 	va_list va;
 
 	va_start(va, fmt);
-	count = tf_vprintf(fmt, va);
+	count = vprintf(fmt, va);
 	va_end(va);
 
 	return count;
diff --git a/common/tf_snprintf.c b/lib/libc/snprintf.c
similarity index 94%
rename from common/tf_snprintf.c
rename to lib/libc/snprintf.c
index 6df1377..0738a86 100644
--- a/common/tf_snprintf.c
+++ b/lib/libc/snprintf.c
@@ -52,7 +52,7 @@
  * buffer was big enough. If it returns a value lower than n, the
  * whole string has been written.
  *******************************************************************/
-int tf_snprintf(char *s, size_t n, const char *fmt, ...)
+int snprintf(char *s, size_t n, const char *fmt, ...)
 {
 	va_list args;
 	int num;
@@ -102,7 +102,7 @@
 				break;
 			default:
 				/* Panic on any other format specifier. */
-				ERROR("tf_snprintf: specifier with ASCII code '%d' not supported.",
+				ERROR("snprintf: specifier with ASCII code '%d' not supported.",
 				      *fmt);
 				plat_panic_handler();
 			}
