aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/console/console.c62
-rw-r--r--src/include/console/cbmem_console.h23
-rw-r--r--src/include/console/console.h31
-rw-r--r--src/include/console/ne2k.h15
-rw-r--r--src/include/console/qemu_debugcon.h11
-rw-r--r--src/include/console/spkmodem.h11
-rw-r--r--src/include/console/uart.h18
-rw-r--r--src/include/console/usb.h16
8 files changed, 120 insertions, 67 deletions
diff --git a/src/console/console.c b/src/console/console.c
index e0e505c049..9b1c25542a 100644
--- a/src/console/console.c
+++ b/src/console/console.c
@@ -27,57 +27,29 @@
void console_hw_init(void)
{
-#if CONFIG_CONSOLE_SERIAL
- uart_init();
-#endif
-#if CONFIG_CONSOLE_NE2K
- ne2k_init(CONFIG_CONSOLE_NE2K_IO_PORT);
-#endif
-#if CONFIG_CONSOLE_CBMEM && !defined(__BOOT_BLOCK__) && (CONFIG_EARLY_CBMEM_INIT || !defined(__PRE_RAM__))
- cbmemc_init();
-#endif
-#if CONFIG_SPKMODEM
- spkmodem_init();
-#endif
-#if CONFIG_CONSOLE_USB && (CONFIG_USBDEBUG_IN_ROMSTAGE || !defined(__PRE_RAM__))
- usbdebug_init();
-#endif
-#if CONFIG_CONSOLE_QEMU_DEBUGCON
- qemu_debugcon_init();
-#endif
+ __cbmemc_init();
+ __spkmodem_init();
+ __qemu_debugcon_init();
+
+ __uart_init();
+ __ne2k_init();
+ __usbdebug_init();
}
void console_tx_byte(unsigned char byte)
{
-#if CONFIG_CONSOLE_SERIAL
- uart_tx_byte(byte);
-#endif
-#if CONFIG_CONSOLE_USB && (CONFIG_USBDEBUG_IN_ROMSTAGE || !defined(__PRE_RAM__))
- usb_tx_byte(0, byte);
-#endif
-#if CONFIG_CONSOLE_NE2K
- ne2k_append_data_byte(byte, CONFIG_CONSOLE_NE2K_IO_PORT);
-#endif
-#if CONFIG_CONSOLE_CBMEM && !defined(__BOOT_BLOCK__) && (CONFIG_EARLY_CBMEM_INIT || !defined(__PRE_RAM__))
- cbmemc_tx_byte(byte);
-#endif
-#if CONFIG_SPKMODEM
- spkmodem_tx_byte(byte);
-#endif
-#if CONFIG_CONSOLE_QEMU_DEBUGCON
- qemu_debugcon_tx_byte(byte);
-#endif
+ __cbmemc_tx_byte(byte);
+ __spkmodem_tx_byte(byte);
+ __qemu_debugcon_tx_byte(byte);
+
+ __uart_tx_byte(byte);
+ __ne2k_tx_byte(byte);
+ __usb_tx_byte(byte);
}
void console_tx_flush(void)
{
-#if CONFIG_CONSOLE_SERIAL
- uart_tx_flush();
-#endif
-#if CONFIG_CONSOLE_NE2K
- ne2k_transmit(CONFIG_CONSOLE_NE2K_IO_PORT);
-#endif
-#if CONFIG_CONSOLE_USB && (CONFIG_USBDEBUG_IN_ROMSTAGE || !defined(__PRE_RAM__))
- usb_tx_flush(0);
-#endif
+ __uart_tx_flush();
+ __ne2k_tx_flush();
+ __usb_tx_flush();
}
diff --git a/src/include/console/cbmem_console.h b/src/include/console/cbmem_console.h
index 4f4a54f6b7..e7c6357ae4 100644
--- a/src/include/console/cbmem_console.h
+++ b/src/include/console/cbmem_console.h
@@ -19,14 +19,27 @@
#ifndef _CONSOLE_CBMEM_CONSOLE_H_
#define _CONSOLE_CBMEM_CONSOLE_H_
-#if CONFIG_EARLY_CBMEM_INIT || !defined(__PRE_RAM__)
+#include <rules.h>
+#include <stdint.h>
+
void cbmemc_init(void);
-void cbmemc_reinit(void);
void cbmemc_tx_byte(unsigned char data);
+
+#if CONFIG_CONSOLE_CBMEM
+void cbmemc_reinit(void);
+#else
+static inline void cbmemc_reinit(void) {}
+#endif
+
+#define __CBMEM_CONSOLE_ENABLE__ CONFIG_CONSOLE_CBMEM && \
+ ((ENV_ROMSTAGE && CONFIG_EARLY_CBMEM_INIT) || ENV_RAMSTAGE)
+
+#if __CBMEM_CONSOLE_ENABLE__
+static inline void __cbmemc_init(void) { cbmemc_init(); }
+static inline void __cbmemc_tx_byte(u8 data) { cbmemc_tx_byte(data); }
#else
-#define cbmemc_init()
-#define cbmemc_reinit()
-#define cbmemc_tx_byte(x)
+static inline void __cbmemc_init(void) {}
+static inline void __cbmemc_tx_byte(u8 data) {}
#endif
#endif
diff --git a/src/include/console/console.h b/src/include/console/console.h
index a15f608407..78426b24bf 100644
--- a/src/include/console/console.h
+++ b/src/include/console/console.h
@@ -21,10 +21,10 @@
#define CONSOLE_CONSOLE_H_
#include <stdint.h>
+#include <rules.h>
#include <console/post_codes.h>
#ifndef __ROMCC__
-int console_log_level(int msg_level);
void post_code(u8 value);
#if CONFIG_CMOS_POST_EXTRA
void post_log_extra(u32 value);
@@ -40,32 +40,31 @@ void post_log_clear(void);
void mainboard_post(u8 value);
void __attribute__ ((noreturn)) die(const char *msg);
-#if defined(__BOOT_BLOCK__) && !CONFIG_BOOTBLOCK_CONSOLE || \
- defined(__SMM__) && !CONFIG_DEBUG_SMI || \
- (defined(__PRE_RAM__) && !defined(__BOOT_BLOCK__)) && !CONFIG_EARLY_CONSOLE
-
-/* Do nothing. */
-static inline void printk(int LEVEL, const char *fmt, ...) {}
-static inline void do_putchar(unsigned char byte) {}
-static inline void console_init(void) {}
-
-#else
+#define __CONSOLE_ENABLE__ \
+ ((ENV_BOOTBLOCK && CONFIG_BOOTBLOCK_CONSOLE) || \
+ (ENV_ROMSTAGE && CONFIG_EARLY_CONSOLE) || \
+ ENV_RAMSTAGE || (ENV_SMM && CONFIG_DEBUG_SMI))
+#if __CONSOLE_ENABLE__
void console_init(void);
+int console_log_level(int msg_level);
int do_printk(int msg_level, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
void do_putchar(unsigned char byte);
-#define printk(LEVEL, fmt, args...) \
- do { \
- do_printk(LEVEL, fmt, ##args); \
- } while(0)
+#define printk(LEVEL, fmt, args...) \
+ do { do_printk(LEVEL, fmt, ##args); } while(0)
+#else
+static inline void console_init(void) {}
+static inline int console_log_level(int msg_level) { return 0; }
+static inline void printk(int LEVEL, const char *fmt, ...) {}
+static inline void do_putchar(unsigned char byte) {}
#endif
#if CONFIG_CHROMEOS
/* FIXME: Collision of varargs with AMD headers without guard. */
#include <console/vtxprintf.h>
-#if !defined(__PRE_RAM__) || CONFIG_EARLY_CONSOLE
+#if __CONSOLE_ENABLE__
void do_vtxprintf(const char *fmt, va_list args);
#else
static inline void do_vtxprintf(const char *fmt, va_list args) {};
diff --git a/src/include/console/ne2k.h b/src/include/console/ne2k.h
index cb3c1ec63b..16cecb5ccd 100644
--- a/src/include/console/ne2k.h
+++ b/src/include/console/ne2k.h
@@ -19,6 +19,10 @@
#ifndef _NE2K_H__
#define _NE2K_H__
+
+#include <rules.h>
+#include <stdint.h>
+
void ne2k_append_data(unsigned char *d, int len, unsigned int base);
int ne2k_init(unsigned int eth_nic_base);
void ne2k_transmit(unsigned int eth_nic_base);
@@ -26,4 +30,15 @@ void ne2k_transmit(unsigned int eth_nic_base);
#ifndef __ROMCC__
#define ne2k_append_data_byte(d, base) ne2k_append_data(&d, 1, base)
#endif
+
+#if CONFIG_CONSOLE_NE2K && (ENV_ROMSTAGE || ENV_RAMSTAGE)
+static inline void __ne2k_init(void) { ne2k_init(CONFIG_CONSOLE_NE2K_IO_PORT); }
+static inline void __ne2k_tx_byte(u8 data) { ne2k_append_data_byte(data, CONFIG_CONSOLE_NE2K_IO_PORT); }
+static inline void __ne2k_tx_flush(void) { ne2k_transmit(CONFIG_CONSOLE_NE2K_IO_PORT); }
+#else
+static inline void __ne2k_init(void) {}
+static inline void __ne2k_tx_byte(u8 data) {}
+static inline void __ne2k_tx_flush(void) {}
+#endif
+
#endif /* _NE2K_H */
diff --git a/src/include/console/qemu_debugcon.h b/src/include/console/qemu_debugcon.h
index 63b1455dce..257ae581e5 100644
--- a/src/include/console/qemu_debugcon.h
+++ b/src/include/console/qemu_debugcon.h
@@ -1,7 +1,18 @@
#ifndef _QEMU_DEBUGCON_H_
#define _QEMU_DEBUGCON_H_
+#include <rules.h>
+#include <stdint.h>
+
void qemu_debugcon_init(void);
void qemu_debugcon_tx_byte(unsigned char data);
+#if CONFIG_CONSOLE_QEMU_DEBUGCON && (ENV_ROMSTAGE || ENV_RAMSTAGE)
+static inline void __qemu_debugcon_init(void) { qemu_debugcon_init(); }
+static inline void __qemu_debugcon_tx_byte(u8 data) { qemu_debugcon_tx_byte(data); }
+#else
+static inline void __qemu_debugcon_init(void) {}
+static inline void __qemu_debugcon_tx_byte(u8 data) {}
+#endif
+
#endif
diff --git a/src/include/console/spkmodem.h b/src/include/console/spkmodem.h
index 450dbe8280..dfd21d4eef 100644
--- a/src/include/console/spkmodem.h
+++ b/src/include/console/spkmodem.h
@@ -1,7 +1,18 @@
#ifndef SPKMODEM_H
#define SPKMODEM_H 1
+#include <rules.h>
+#include <stdint.h>
+
void spkmodem_init(void);
void spkmodem_tx_byte(unsigned char c);
+#if CONFIG_SPKMODEM && (ENV_ROMSTAGE || ENV_RAMSTAGE)
+static inline void __spkmodem_init(void) { spkmodem_init(); }
+static inline void __spkmodem_tx_byte(u8 data) { spkmodem_tx_byte(data); }
+#else
+static inline void __spkmodem_init(void) {}
+static inline void __spkmodem_tx_byte(u8 data) {}
+#endif
+
#endif
diff --git a/src/include/console/uart.h b/src/include/console/uart.h
index 4551408285..5866ca4d42 100644
--- a/src/include/console/uart.h
+++ b/src/include/console/uart.h
@@ -20,6 +20,7 @@
#ifndef CONSOLE_UART_H
#define CONSOLE_UART_H
+#include <rules.h>
#include <stdint.h>
/* Return the clock frequency UART uses as reference clock for
@@ -51,8 +52,23 @@ static inline void *uart_platform_baseptr(int idx)
{
return (void *)uart_platform_base(idx);
}
-#endif
void oxford_remap(unsigned int new_base);
+#define __CONSOLE_SERIAL_ENABLE__ CONFIG_CONSOLE_SERIAL && \
+ (ENV_BOOTBLOCK || ENV_ROMSTAGE || ENV_RAMSTAGE || \
+ (ENV_SMM && CONFIG_DEBUG_SMI))
+
+#if __CONSOLE_SERIAL_ENABLE__
+static inline void __uart_init(void) { uart_init(); }
+static inline void __uart_tx_byte(u8 data) { uart_tx_byte(data); }
+static inline void __uart_tx_flush(void) { uart_tx_flush(); }
+#else
+static inline void __uart_init(void) {}
+static inline void __uart_tx_byte(u8 data) {}
+static inline void __uart_tx_flush(void) {}
+#endif
+
+#endif /* __ROMCC__ */
+
#endif /* CONSOLE_UART_H */
diff --git a/src/include/console/usb.h b/src/include/console/usb.h
index 95911353e6..57ea4eb3df 100644
--- a/src/include/console/usb.h
+++ b/src/include/console/usb.h
@@ -21,6 +21,9 @@
#ifndef _CONSOLE_USB_H_
#define _CONSOLE_USB_H_
+#include <rules.h>
+#include <stdint.h>
+
int usbdebug_init(void);
void usb_tx_byte(int idx, unsigned char data);
@@ -28,4 +31,17 @@ void usb_tx_flush(int idx);
unsigned char usb_rx_byte(int idx);
int usb_can_rx_byte(int idx);
+#define __CONSOLE_USB_ENABLE__ CONFIG_CONSOLE_USB && \
+ ((ENV_ROMSTAGE && CONFIG_USBDEBUG_IN_ROMSTAGE) || ENV_RAMSTAGE)
+
+#if __CONSOLE_USB_ENABLE__
+static inline void __usbdebug_init(void) { usbdebug_init(); }
+static inline void __usb_tx_byte(u8 data) { usb_tx_byte(0, data); }
+static inline void __usb_tx_flush(void) { usb_tx_flush(0); }
+#else
+static inline void __usbdebug_init(void) {}
+static inline void __usb_tx_byte(u8 data) {}
+static inline void __usb_tx_flush(void) {}
+#endif
+
#endif /* _CONSOLE_USB_H_ */