diff options
author | Simon Glass | 2017-12-04 13:48:28 -0700 |
---|---|---|
committer | Tom Rini | 2017-12-07 15:17:00 -0500 |
commit | af1bc0cf46c49c5ddb13b8c75bad31a05a137eba (patch) | |
tree | 509cfc24a022569f4783f6680e47f4cfef64b501 | |
parent | ef11ed8239bf02b347e7fb9fc6d980aec0c7810a (diff) |
log: Plumb logging into the init sequence
Set up logging both before and after relocation.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
-rw-r--r-- | common/board_f.c | 5 | ||||
-rw-r--r-- | common/board_r.c | 2 | ||||
-rw-r--r-- | common/log.c | 1 | ||||
-rw-r--r-- | include/asm-generic/global_data.h | 1 |
4 files changed, 8 insertions, 1 deletions
diff --git a/common/board_f.c b/common/board_f.c index 1e8bf63ec10..e46eceda7d0 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -751,6 +751,7 @@ static const init_fnc_t init_sequence_f[] = { trace_early_init, #endif initf_malloc, + log_init, initf_bootstage, /* uses its own timer, so does not need DM */ initf_console_record, #if defined(CONFIG_HAVE_FSP) @@ -932,8 +933,10 @@ void board_init_f_r(void) * The pre-relocation drivers may be using memory that has now gone * away. Mark serial as unavailable - this will fall back to the debug * UART if available. + * + * Do the same with log drivers since the memory may not be available. */ - gd->flags &= ~GD_FLG_SERIAL_READY; + gd->flags &= ~(GD_FLG_SERIAL_READY | GD_FLG_LOG_READY); #ifdef CONFIG_TIMER gd->timer = NULL; #endif diff --git a/common/board_r.c b/common/board_r.c index 89729d77360..09167c13cc8 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -691,6 +691,7 @@ static init_fnc_t init_sequence_r[] = { #endif initr_barrier, initr_malloc, + log_init, initr_bootstage, /* Needs malloc() but has its own timer */ initr_console_record, #ifdef CONFIG_SYS_NONCACHED_MEMORY @@ -884,6 +885,7 @@ void board_init_r(gd_t *new_gd, ulong dest_addr) #if !defined(CONFIG_X86) && !defined(CONFIG_ARM) && !defined(CONFIG_ARM64) gd = new_gd; #endif + gd->flags &= ~GD_FLG_LOG_READY; #ifdef CONFIG_NEEDS_MANUAL_RELOC for (i = 0; i < ARRAY_SIZE(init_sequence_r); i++) diff --git a/common/log.c b/common/log.c index 8f36c79c268..45e46dd5209 100644 --- a/common/log.c +++ b/common/log.c @@ -238,6 +238,7 @@ int log_init(void) (struct list_head *)&gd->log_head); drv++; } + gd->flags |= GD_FLG_LOG_READY; gd->default_log_level = LOGL_INFO; return 0; diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 77755dbb068..73e036d6fd4 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -146,5 +146,6 @@ typedef struct global_data { #define GD_FLG_RECORD 0x01000 /* Record console */ #define GD_FLG_ENV_DEFAULT 0x02000 /* Default variable flag */ #define GD_FLG_SPL_EARLY_INIT 0x04000 /* Early SPL init is done */ +#define GD_FLG_LOG_READY 0x08000 /* Log system is ready for use */ #endif /* __ASM_GENERIC_GBL_DATA_H */ |