CBMEM CONSOLE: Add code using the new console driver.
[coreboot.git] / src / console / console.c
index 86ec26d3129997f455f708843e517e2b7a69f215..8f60f04d4caebcadcb95a5991cf42f94ba28b75a 100644 (file)
@@ -1,52 +1,65 @@
 /*
- * Bootstrap code for the INTEL 
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2003 Eric Biederman
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include <arch/io.h>
 #include <console/console.h>
+#include <build.h>
+#include <arch/hlt.h>
+#include <arch/io.h>
+
+#ifndef __PRE_RAM__
 #include <string.h>
 #include <pc80/mc146818rtc.h>
 
-
-static int initialized;
-
 /* initialize the console */
 void console_init(void)
 {
        struct console_driver *driver;
        if(get_option(&console_loglevel, "debug_level"))
-               console_loglevel=DEFAULT_CONSOLE_LOGLEVEL;
-       
+               console_loglevel=CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
+
        for(driver = console_drivers; driver < econsole_drivers; driver++) {
                if (!driver->init)
                        continue;
                driver->init();
        }
-       initialized = 1;
 }
 
-static void __console_tx_byte(unsigned char byte)
+void console_tx_flush(void)
 {
        struct console_driver *driver;
        for(driver = console_drivers; driver < econsole_drivers; driver++) {
-               driver->tx_byte(byte);
+               if (!driver->tx_flush)
+                       continue;
+               driver->tx_flush();
        }
 }
 
-void console_tx_flush(void)
+static void __console_tx_byte(unsigned char byte)
 {
        struct console_driver *driver;
        for(driver = console_drivers; driver < econsole_drivers; driver++) {
-               if (!driver->tx_flush) 
-                       continue;
-               driver->tx_flush();
+               driver->tx_byte(byte);
        }
 }
 
 void console_tx_byte(unsigned char byte)
 {
-       if (!initialized)
-               return;
        if (byte == '\n')
                __console_tx_byte('\r');
        __console_tx_byte(byte);
@@ -55,8 +68,6 @@ void console_tx_byte(unsigned char byte)
 unsigned char console_rx_byte(void)
 {
        struct console_driver *driver;
-       if (!initialized)
-               return 0;
        for(driver = console_drivers; driver < econsole_drivers; driver++) {
                if (driver->tst_byte)
                        break;
@@ -70,31 +81,39 @@ unsigned char console_rx_byte(void)
 int console_tst_byte(void)
 {
        struct console_driver *driver;
-       if (!initialized)
-               return 0;
        for(driver = console_drivers; driver < econsole_drivers; driver++)
                if (driver->tst_byte)
                        return driver->tst_byte();
        return 0;
 }
 
-/*
- *    Write POST information
- */
-void post_code(uint8_t value)
+#else // __PRE_RAM__   ^^^ NOT defined   vvv defined
+
+void console_init(void)
 {
-#if NO_POST==0
-#if CONFIG_SERIAL_POST==1
-       printk_emerg("POST: 0x%02x\n", value);
+#if CONFIG_USBDEBUG
+       enable_usbdebug(CONFIG_USBDEBUG_DEFAULT_PORT);
+       early_usbdebug_init();
 #endif
-       outb(value, 0x80);
+#if CONFIG_CONSOLE_SERIAL8250
+       uart_init();
 #endif
+#if CONFIG_DRIVERS_OXFORD_OXPCIE && CONFIG_CONSOLE_SERIAL8250MEM
+       oxford_init();
+#endif
+#if CONFIG_CONSOLE_NE2K
+       ne2k_init(CONFIG_CONSOLE_NE2K_IO_PORT);
+#endif
+#if CONFIG_CONSOLE_CBMEM
+       cbmemc_init();
+#endif
+       static const char console_test[] =
+               "\n\ncoreboot-"
+               COREBOOT_VERSION
+               COREBOOT_EXTRA_VERSION
+               " "
+               COREBOOT_BUILD
+               " starting...\n";
+       print_info(console_test);
 }
-
-/* Report a fatal error */
-void die(const char *msg)
-{
-       printk_emerg("%s", msg);
-       post_code(0xff);
-       while (1);              /* Halt */
-}
+#endif