aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorGraeme Russ2011-08-29 02:14:05 +0000
committerWolfgang Denk2011-10-01 21:54:49 +0200
commite3e454cd72f319908355427b1a3ae54b3dd53356 (patch)
treeb461a0dc8287aa0c7d3e3eab525cd4f76c27481a /common
parent79df1208ee6984aa63468673c042667d121bb0bc (diff)
console: Squelch pre-console output in console functions
There are some locations in the code which anticipate printf() being called before the console is ready by squelching printf() on gd->have_console. Move this squelching into printf(), vprintf(), puts() and putc(). Also make tstc() and getc() return 0 if console is not yet initialised Signed-off-by: Graeme Russ <graeme.russ@gmail.com> Tested-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/console.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/common/console.c b/common/console.c
index 8c650e05e1c..b23d933d2c3 100644
--- a/common/console.c
+++ b/common/console.c
@@ -298,6 +298,9 @@ int getc(void)
return 0;
#endif
+ if (!gd->have_console)
+ return 0;
+
if (gd->flags & GD_FLG_DEVINIT) {
/* Get from the standard input */
return fgetc(stdin);
@@ -314,6 +317,9 @@ int tstc(void)
return 0;
#endif
+ if (!gd->have_console)
+ return 0;
+
if (gd->flags & GD_FLG_DEVINIT) {
/* Test the standard input */
return ftstc(stdin);
@@ -335,6 +341,9 @@ void putc(const char c)
return;
#endif
+ if (!gd->have_console)
+ return;
+
if (gd->flags & GD_FLG_DEVINIT) {
/* Send to the standard output */
fputc(stdout, c);
@@ -356,6 +365,9 @@ void puts(const char *s)
return;
#endif
+ if (!gd->have_console)
+ return;
+
if (gd->flags & GD_FLG_DEVINIT) {
/* Send to the standard output */
fputs(stdout, s);
@@ -371,6 +383,9 @@ int printf(const char *fmt, ...)
uint i;
char printbuffer[CONFIG_SYS_PBSIZE];
+ if (!gd->have_console)
+ return 0;
+
va_start(args, fmt);
/* For this to work, printbuffer must be larger than
@@ -389,6 +404,9 @@ int vprintf(const char *fmt, va_list args)
uint i;
char printbuffer[CONFIG_SYS_PBSIZE];
+ if (!gd->have_console)
+ return 0;
+
/* For this to work, printbuffer must be larger than
* anything we ever want to print.
*/