diff options
author | Aaron Durbin <adurbin@chromium.org> | 2015-10-07 15:41:45 -0500 |
---|---|---|
committer | Aaron Durbin <adurbin@gmail.com> | 2015-10-11 23:56:25 +0000 |
commit | 079fb3fc293fb0ef6669f45951b4b1ae4a8d449a (patch) | |
tree | 7c22af78fa418f67b0d17bed46316b4d3d19d635 /src | |
parent | b5a20b29b7a2709b120e3c8258c2f16d9c38b590 (diff) | |
download | coreboot-079fb3fc293fb0ef6669f45951b4b1ae4a8d449a.tar.xz |
cbmem console: make verstage first class citizen
The conditions in cbmem console for supporting verstage
were implicitly utilizing CONFIG_BOOTBLOCK_CONSOLE to handle
the cbmem console enablement. Fix it so verstage is a first
class citizen for deciding actions pertaining to cbmem console.
BUG=chrome-os-partner:44827
BRANCH=None
TEST=Built and booted glados using verstage. cbmem console
shows verstage output.
Change-Id: Iba79efd1c1d4056f1a105a5e10ffc95f3e69b597
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/11820
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/include/console/cbmem_console.h | 6 | ||||
-rw-r--r-- | src/lib/cbmem_console.c | 26 |
2 files changed, 25 insertions, 7 deletions
diff --git a/src/include/console/cbmem_console.h b/src/include/console/cbmem_console.h index 06013f2a22..35eae216a1 100644 --- a/src/include/console/cbmem_console.h +++ b/src/include/console/cbmem_console.h @@ -26,8 +26,10 @@ void cbmemc_init(void); void cbmemc_tx_byte(unsigned char data); #define __CBMEM_CONSOLE_ENABLE__ CONFIG_CONSOLE_CBMEM && \ - (ENV_RAMSTAGE || (IS_ENABLED(CONFIG_EARLY_CBMEM_INIT) && \ - (ENV_ROMSTAGE || (ENV_BOOTBLOCK && CONFIG_BOOTBLOCK_CONSOLE)))) + (ENV_RAMSTAGE || ENV_VERSTAGE || \ + (IS_ENABLED(CONFIG_EARLY_CBMEM_INIT) && \ + (ENV_ROMSTAGE || (ENV_BOOTBLOCK && CONFIG_BOOTBLOCK_CONSOLE)))\ + ) #if __CBMEM_CONSOLE_ENABLE__ static inline void __cbmemc_init(void) { cbmemc_init(); } diff --git a/src/lib/cbmem_console.c b/src/lib/cbmem_console.c index 464294cabc..d8fc7a952c 100644 --- a/src/lib/cbmem_console.c +++ b/src/lib/cbmem_console.c @@ -105,12 +105,28 @@ static inline void init_console_ptr(void *storage, u32 total_space, int flags) void cbmemc_init(void) { #ifdef __PRE_RAM__ - int flags = CBMEMC_RESET; + int flags = 0; - /* Do not clear output from bootblock. */ - if (ENV_ROMSTAGE && !IS_ENABLED(CONFIG_CACHE_AS_RAM)) - if (IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE)) - flags = 0; + /* If in bootblock always initialize the console first. */ + if (ENV_BOOTBLOCK) + flags = CBMEMC_RESET; + else if (ENV_ROMSTAGE) { + /* Initialize console for the first time in romstage when + * there's no prior stage that initialized it first. */ + if (!IS_ENABLED(CONFIG_VBOOT_STARTS_IN_BOOTBLOCK) && + !IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE)) + flags = CBMEMC_RESET; + } else if (ENV_VERSTAGE) { + /* + * Initialize console for the first time in verstage when + * there is no console in bootblock. Otherwise honor the + * bootblock console when verstage comes right after + * bootblock. + */ + if (IS_ENABLED(CONFIG_VBOOT_STARTS_IN_BOOTBLOCK) && + !IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE)) + flags = CBMEMC_RESET; + } init_console_ptr(_preram_cbmem_console, _preram_cbmem_console_size, flags); |