summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2014-07-23 06:55:07 -0600
committerSimon Glass <sjg@chromium.org>2014-07-23 14:07:25 +0100
commit093f79ab88d57b800283b0a172c17167699f4243 (patch)
tree8169ae4fb289257468c015f1b72cb989d7b04390
parent7793ac96c6094e0a0291e19a5bcf3000c6388250 (diff)
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>
-rw-r--r--common/console.c4
-rw-r--r--drivers/serial/serial.c1
-rw-r--r--include/asm-generic/global_data.h1
3 files changed, 4 insertions, 2 deletions
diff --git a/common/console.c b/common/console.c
index 5576dfd94a..898da3935e 100644
--- a/common/console.c
+++ b/common/console.c
@@ -417,7 +417,7 @@ static inline void print_pre_console_buffer(void) {}
void putc(const char c)
{
#ifdef CONFIG_SANDBOX
- if (!gd) {
+ if (!gd || !(gd->flags & GD_FLG_SERIAL_READY)) {
os_putc(c);
return;
}
@@ -447,7 +447,7 @@ void putc(const char c)
void puts(const char *s)
{
#ifdef CONFIG_SANDBOX
- if (!gd) {
+ if (!gd || !(gd->flags & GD_FLG_SERIAL_READY)) {
os_puts(s);
return;
}
diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c
index 803d8506d9..d2eb7520d0 100644
--- a/drivers/serial/serial.c
+++ b/drivers/serial/serial.c
@@ -418,6 +418,7 @@ static struct serial_device *get_current(void)
*/
int serial_init(void)
{
+ gd->flags |= GD_FLG_SERIAL_READY;
return get_current()->start();
}
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
index edde9d7dd0..74df210033 100644
--- a/include/asm-generic/global_data.h
+++ b/include/asm-generic/global_data.h
@@ -106,5 +106,6 @@ typedef struct global_data {
#define GD_FLG_LOGINIT 0x00020 /* Log Buffer has been initialized */
#define GD_FLG_DISABLE_CONSOLE 0x00040 /* Disable console (in & out) */
#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 */