CMOS: Add set_option and rework get_option.
[coreboot.git] / src / console / console.c
index 0f6fb07406cd175a53ea77499366928c787291dd..cf6521675a823c2a2817b3e6707300848ac75ea5 100644 (file)
@@ -14,8 +14,9 @@ static int initialized;
 void console_init(void)
 {
        struct console_driver *driver;
-       if(get_option(&console_loglevel, "debug_level"))
-               console_loglevel=DEFAULT_CONSOLE_LOGLEVEL;
+
+       if (get_option("debug_level", &console_loglevel))
+               console_loglevel = DEFAULT_CONSOLE_LOGLEVEL;
 
        for(driver = console_drivers; driver < econsole_drivers; driver++) {
                if (!driver->init)
@@ -52,20 +53,47 @@ void console_tx_byte(unsigned char byte)
        __console_tx_byte(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;
+       }
+       if (driver == econsole_drivers)
+               return 0;
+       while (!driver->tst_byte());
+       return driver->rx_byte();
+}
+
+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)
 {
-#ifdef CONFIG_SERIAL_POST
-       printk_info("POST: 0x%02x\n", value);
-#elsif !define(NO_POST)
+#if !defined(NO_POST) || NO_POST==0
+#if CONFIG_SERIAL_POST==1
+       printk_emerg("POST: 0x%02x\n", value);
+#endif
        outb(value, 0x80);
 #endif
 }
 
 /* Report a fatal error */
-void die(char *msg)
+void die(const char *msg)
 {
        printk_emerg("%s", msg);
        post_code(0xff);