CBMEM CONSOLE: Add code using the new console driver.
[coreboot.git] / src / arch / x86 / lib / romstage_console.c
index e8a926356ed33b2dcfe66219f98c725985f03694..0f2272709bc14445ac9373158795ee079dfbfcb1 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <console/console.h>
 #include <console/vtxprintf.h>
-#if CONFIG_CONSOLE_SERIAL8250
+#if CONFIG_CONSOLE_SERIAL8250 || CONFIG_CONSOLE_SERIAL8250MEM
 #include <uart8250.h>
 #endif
 #if CONFIG_USBDEBUG
@@ -34,6 +34,9 @@ static void console_tx_byte(unsigned char byte)
        if (byte == '\n')
                console_tx_byte('\r');
 
+#if CONFIG_CONSOLE_SERIAL8250MEM
+       uart8250_mem_tx_byte(CONFIG_OXFORD_OXPCIE_BASE_ADDRESS + 0x1000, byte);
+#endif
 #if CONFIG_CONSOLE_SERIAL8250
        uart8250_tx_byte(CONFIG_TTYS0_BASE, byte);
 #endif
@@ -43,6 +46,22 @@ static void console_tx_byte(unsigned char byte)
 #if CONFIG_CONSOLE_NE2K
        ne2k_append_data(&byte, 1, CONFIG_CONSOLE_NE2K_IO_PORT);
 #endif
+#if CONFIG_CONSOLE_CBMEM
+       cbmemc_tx_byte(byte);
+#endif
+}
+
+static void console_tx_flush(void)
+{
+#if CONFIG_CONSOLE_SERIAL8250MEM
+       uart8250_mem_tx_flush(CONFIG_OXFORD_OXPCIE_BASE_ADDRESS + 0x1000);
+#endif
+#if CONFIG_CONSOLE_SERIAL8250
+       uart8250_tx_flush(CONFIG_TTYS0_BASE);
+#endif
+#if CONFIG_CONSOLE_NE2K
+       ne2k_transmit(CONFIG_CONSOLE_NE2K_IO_PORT);
+#endif
 }
 
 int do_printk(int msg_level, const char *fmt, ...)
@@ -57,8 +76,8 @@ int do_printk(int msg_level, const char *fmt, ...)
        va_start(args, fmt);
        i = vtxprintf(console_tx_byte, fmt, args);
        va_end(args);
-#if CONFIG_CONSOLE_NE2K
-       ne2k_transmit(CONFIG_CONSOLE_NE2K_IO_PORT);
-#endif
+
+       console_tx_flush();
+
        return i;
 }