summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2015-10-07 15:41:45 -0500
committerAaron Durbin <adurbin@gmail.com>2015-10-11 23:56:25 +0000
commit079fb3fc293fb0ef6669f45951b4b1ae4a8d449a (patch)
tree7c22af78fa418f67b0d17bed46316b4d3d19d635 /src/lib
parentb5a20b29b7a2709b120e3c8258c2f16d9c38b590 (diff)
downloadcoreboot-079fb3fc293fb0ef6669f45951b4b1ae4a8d449a.tar.gz
coreboot-079fb3fc293fb0ef6669f45951b4b1ae4a8d449a.tar.bz2
coreboot-079fb3fc293fb0ef6669f45951b4b1ae4a8d449a.zip
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/lib')
-rw-r--r--src/lib/cbmem_console.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/lib/cbmem_console.c b/src/lib/cbmem_console.c
index 464294cabce5..d8fc7a952c73 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);