diff options
| author | Graeme Russ <graeme.russ@gmail.com> | 2011-08-29 02:14:05 +0000 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2011-10-01 21:54:49 +0200 | 
| commit | e3e454cd72f319908355427b1a3ae54b3dd53356 (patch) | |
| tree | b461a0dc8287aa0c7d3e3eab525cd4f76c27481a /common/console.c | |
| parent | 79df1208ee6984aa63468673c042667d121bb0bc (diff) | |
| download | olio-uboot-2014.01-e3e454cd72f319908355427b1a3ae54b3dd53356.tar.xz olio-uboot-2014.01-e3e454cd72f319908355427b1a3ae54b3dd53356.zip | |
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/console.c')
| -rw-r--r-- | common/console.c | 18 | 
1 files changed, 18 insertions, 0 deletions
| diff --git a/common/console.c b/common/console.c index 8c650e05e..b23d933d2 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.  	 */ |