CMOS: Add set_option and rework get_option.
[coreboot.git] / src / include / console / console.h
index 2a9f38896a22e2cdc148863db534ba2178b89563..e10b113b3ce0719a8071fb701764a4b62cf23f8a 100644 (file)
@@ -7,23 +7,27 @@
 void console_init(void);
 void console_tx_byte(unsigned char byte);
 void console_tx_flush(void);
+unsigned char console_rx_byte(void);
+int console_tst_byte(void);
 void post_code(uint8_t value);
-void die(char *msg);
+void __attribute__ ((noreturn)) die(const char *msg);
 
 struct console_driver {
        void (*init)(void);
        void (*tx_byte)(unsigned char byte);
        void (*tx_flush)(void);
+       unsigned char (*rx_byte)(void);
+       int (*tst_byte)(void);
 };
 
-#define __console      __attribute__((unused, __section__ (".rodata.console_drivers")))
+#define __console      __attribute__((used, __section__ (".rodata.console_drivers")))
 
 /* Defined by the linker... */
 extern struct console_driver console_drivers[];
 extern struct console_driver econsole_drivers[];
 
-extern int console_loglevel;
-int do_printk(int msg_level, const char *fmt, ...);
+extern unsigned int console_loglevel;
+int do_printk(int msg_level, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
 
 #define printk_emerg(fmt, arg...)   do_printk(BIOS_EMERG   ,fmt, ##arg)
 #define printk_alert(fmt, arg...)   do_printk(BIOS_ALERT   ,fmt, ##arg)
@@ -41,7 +45,7 @@ int do_printk(int msg_level, const char *fmt, ...);
 #endif
 #if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_ALERT
 #undef  printk_alert
-#define printk_alart(fmt, arg...)   do {} while(0)
+#define printk_alert(fmt, arg...)   do {} while(0)
 #endif
 #if MAXIMUM_CONSOLE_LOGLEVEL <= BIOS_CRIT
 #undef  printk_crit
@@ -92,34 +96,38 @@ int do_printk(int msg_level, const char *fmt, ...);
 #define print_debug_char(CH)   printk_debug  ("%c", (CH))
 #define print_spew_char(CH)    printk_spew   ("%c", (CH))
 
-#define print_emerg_hex8(HEX)   printk_emerg  ("%08x",  (HEX))
-#define print_alert_hex8(HEX)   printk_alert  ("%08x",  (HEX))
-#define print_crit_hex8(HEX)    printk_crit   ("%08x",  (HEX))
-#define print_err_hex8(HEX)     printk_err    ("%08x",  (HEX))
-#define print_warning_hex8(HEX) printk_warning("%08x",  (HEX))
-#define print_notice_hex8(HEX)  printk_notice ("%08x",  (HEX))
-#define print_info_hex8(HEX)    printk_info   ("%08x",  (HEX))
-#define print_debug_hex8(HEX)   printk_debug  ("%08x",  (HEX))
-#define print_spew_hex8(HEX)    printk_spew   ("%08x",  (HEX))
+#define print_emerg_hex8(HEX)   printk_emerg  ("%02x",  (HEX))
+#define print_alert_hex8(HEX)   printk_alert  ("%02x",  (HEX))
+#define print_crit_hex8(HEX)    printk_crit   ("%02x",  (HEX))
+#define print_err_hex8(HEX)     printk_err    ("%02x",  (HEX))
+#define print_warning_hex8(HEX) printk_warning("%02x",  (HEX))
+#define print_notice_hex8(HEX)  printk_notice ("%02x",  (HEX))
+#define print_info_hex8(HEX)    printk_info   ("%02x",  (HEX))
+#define print_debug_hex8(HEX)   printk_debug  ("%02x",  (HEX))
+#define print_spew_hex8(HEX)    printk_spew   ("%02x",  (HEX))
 
-#define print_emerg_hex16(HEX)   printk_emerg  ("%016x", (HEX))
-#define print_alert_hex16(HEX)   printk_alert  ("%016x", (HEX))
-#define print_crit_hex16(HEX)    printk_crit   ("%016x", (HEX))
-#define print_err_hex16(HEX)     printk_err    ("%016x", (HEX))
-#define print_warning_hex16(HEX) printk_warning("%016x", (HEX))
-#define print_notice_hex16(HEX)  printk_notice ("%016x", (HEX))
-#define print_info_hex16(HEX)    printk_info   ("%016x", (HEX))
-#define print_debug_hex16(HEX)   printk_debug  ("%016x", (HEX))
-#define print_spew_hex16(HEX)    printk_spew   ("%016x", (HEX))
+#define print_emerg_hex16(HEX)   printk_emerg  ("%04x", (HEX))
+#define print_alert_hex16(HEX)   printk_alert  ("%04x", (HEX))
+#define print_crit_hex16(HEX)    printk_crit   ("%04x", (HEX))
+#define print_err_hex16(HEX)     printk_err    ("%04x", (HEX))
+#define print_warning_hex16(HEX) printk_warning("%04x", (HEX))
+#define print_notice_hex16(HEX)  printk_notice ("%04x", (HEX))
+#define print_info_hex16(HEX)    printk_info   ("%04x", (HEX))
+#define print_debug_hex16(HEX)   printk_debug  ("%04x", (HEX))
+#define print_spew_hex16(HEX)    printk_spew   ("%04x", (HEX))
 
-#define print_emerg_hex32(HEX)   printk_emerg  ("%032x", (HEX))
-#define print_alert_hex32(HEX)   printk_alert  ("%032x", (HEX))
-#define print_crit_hex32(HEX)    printk_crit   ("%032x", (HEX))
-#define print_err_hex32(HEX)     printk_err    ("%032x", (HEX))
-#define print_warning_hex32(HEX) printk_warning("%032x", (HEX))
-#define print_notice_hex32(HEX)  printk_notice ("%032x", (HEX))
-#define print_info_hex32(HEX)    printk_info   ("%032x", (HEX))
-#define print_debug_hex32(HEX)   printk_debug  ("%032x", (HEX))
-#define print_spew_hex32(HEX)    printk_spew   ("%032x", (HEX))
+#define print_emerg_hex32(HEX)   printk_emerg  ("%08x", (HEX))
+#define print_alert_hex32(HEX)   printk_alert  ("%08x", (HEX))
+#define print_crit_hex32(HEX)    printk_crit   ("%08x", (HEX))
+#define print_err_hex32(HEX)     printk_err    ("%08x", (HEX))
+#define print_warning_hex32(HEX) printk_warning("%08x", (HEX))
+#define print_notice_hex32(HEX)  printk_notice ("%08x", (HEX))
+#define print_info_hex32(HEX)    printk_info   ("%08x", (HEX))
+#define print_debug_hex32(HEX)   printk_debug  ("%08x", (HEX))
+#define print_spew_hex32(HEX)    printk_spew   ("%08x", (HEX))
+
+#if CONFIG_CONSOLE_VGA == 1
+void vga_console_init(void);
+#endif
 
 #endif /* CONSOLE_CONSOLE_H_ */