CBMEM console: Support late init

It is not compulsory to have CBMEM console initialised in romstage,
so try add the CBMEM table entry again in ramstage, if not found.

Change-Id: I96ab502df7f05d6bf1d6e6fa84d395ef6306b525
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/3915
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Aaron Durbin <adurbin@google.com>
diff --git a/src/lib/cbmem_console.c b/src/lib/cbmem_console.c
index 1b58402..819c27f 100644
--- a/src/lib/cbmem_console.c
+++ b/src/lib/cbmem_console.c
@@ -195,27 +195,27 @@
 
 static void cbmemc_reinit_(void)
 {
-	struct cbmem_console *cbm_cons_p;
+	struct cbmem_console *cbm_cons_p = NULL;
 
-#ifdef __PRE_RAM__
-	cbm_cons_p = cbmem_add(CBMEM_ID_CONSOLE,
-			       CONFIG_CONSOLE_CBMEM_BUFFER_SIZE);
+#ifndef __PRE_RAM__
+	cbm_cons_p = cbmem_find(CBMEM_ID_CONSOLE);
+#endif
+
 	if (!cbm_cons_p) {
-		current_console_set(NULL);
-		return;
+		cbm_cons_p = cbmem_add(CBMEM_ID_CONSOLE,
+							CONFIG_CONSOLE_CBMEM_BUFFER_SIZE);
+
+		if (!cbm_cons_p) {
+			current_console_set(NULL);
+			return;
+		}
+
+		cbm_cons_p->buffer_size = CONFIG_CONSOLE_CBMEM_BUFFER_SIZE -
+			sizeof(struct cbmem_console);
+
+		cbm_cons_p->buffer_cursor = 0;
 	}
 
-	cbm_cons_p->buffer_size = CONFIG_CONSOLE_CBMEM_BUFFER_SIZE -
-		sizeof(struct cbmem_console);
-
-	cbm_cons_p->buffer_cursor = 0;
-#else
-	cbm_cons_p = cbmem_find(CBMEM_ID_CONSOLE);
-
-	if (!cbm_cons_p)
-		return;
-
-#endif
 	copy_console_buffer(cbm_cons_p);
 
 	current_console_set(cbm_cons_p);