Add a flag indicating when the serial console is ready

For sandbox we have a fallback console which is used very early in
U-Boot, before serial drivers are available. Rather than try to guess
when to switch to the real console, add a flag so we can be sure. This
makes sure that sandbox can always output a panic() message, for example,
and avoids silent failure (which is very annoying in sandbox).

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2014-07-23 06:55:07 -06:00
parent 7793ac96c6
commit 093f79ab88
3 changed files with 4 additions and 2 deletions

View File

@ -417,7 +417,7 @@ static inline void print_pre_console_buffer(void) {}
void putc(const char c) void putc(const char c)
{ {
#ifdef CONFIG_SANDBOX #ifdef CONFIG_SANDBOX
if (!gd) { if (!gd || !(gd->flags & GD_FLG_SERIAL_READY)) {
os_putc(c); os_putc(c);
return; return;
} }
@ -447,7 +447,7 @@ void putc(const char c)
void puts(const char *s) void puts(const char *s)
{ {
#ifdef CONFIG_SANDBOX #ifdef CONFIG_SANDBOX
if (!gd) { if (!gd || !(gd->flags & GD_FLG_SERIAL_READY)) {
os_puts(s); os_puts(s);
return; return;
} }

View File

@ -418,6 +418,7 @@ static struct serial_device *get_current(void)
*/ */
int serial_init(void) int serial_init(void)
{ {
gd->flags |= GD_FLG_SERIAL_READY;
return get_current()->start(); return get_current()->start();
} }

View File

@ -106,5 +106,6 @@ typedef struct global_data {
#define GD_FLG_LOGINIT 0x00020 /* Log Buffer has been initialized */ #define GD_FLG_LOGINIT 0x00020 /* Log Buffer has been initialized */
#define GD_FLG_DISABLE_CONSOLE 0x00040 /* Disable console (in & out) */ #define GD_FLG_DISABLE_CONSOLE 0x00040 /* Disable console (in & out) */
#define GD_FLG_ENV_READY 0x00080 /* Env. imported into hash table */ #define GD_FLG_ENV_READY 0x00080 /* Env. imported into hash table */
#define GD_FLG_SERIAL_READY 0x00100 /* Pre-reloc serial console ready */
#endif /* __ASM_GENERIC_GBL_DATA_H */ #endif /* __ASM_GENERIC_GBL_DATA_H */