From 4076072b6c76debae0e328486d9bab71fe391db7 Mon Sep 17 00:00:00 2001 From: Kyösti Mälkki Date: Thu, 27 Feb 2014 19:30:18 +0200 Subject: console: Use romstage code for ramstage and SMM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Console is arch-agnostic and there is no need for separate implementations for romstage and ramstage. For SMM there is console only if DEBUG_SMI is selected. Change-Id: I7028eeeff8bfbb9c8552972436b29a7508834d87 Signed-off-by: Kyösti Mälkki Reviewed-on: http://review.coreboot.org/5338 Tested-by: build bot (Jenkins) Reviewed-by: Alexandru Gagniuc --- src/console/Makefile.inc | 3 ++- src/console/console.c | 39 ++++++++++++++++++++++++++++++++++----- src/console/init.c | 3 ++- src/console/printk.c | 1 + 4 files changed, 39 insertions(+), 7 deletions(-) (limited to 'src/console') diff --git a/src/console/Makefile.inc b/src/console/Makefile.inc index d59e44e9a6..e3b3780324 100644 --- a/src/console/Makefile.inc +++ b/src/console/Makefile.inc @@ -3,7 +3,7 @@ ramstage-y += init.c console.c ramstage-y += post.c ramstage-y += die.c -smm-$(CONFIG_DEBUG_SMI) += vtxprintf.c printk.c +smm-$(CONFIG_DEBUG_SMI) += init.c console.c vtxprintf.c printk.c smm-$(CONFIG_SMM_TSEG) += die.c romstage-$(CONFIG_EARLY_CONSOLE) += vtxprintf.c printk.c @@ -15,6 +15,7 @@ bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += vtxprintf.c printk.c bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += init.c console.c bootblock-y += die.c +$(obj)/console/init.smm.o : $(obj)/build.h $(obj)/console/init.ramstage.o : $(obj)/build.h $(obj)/console/init.romstage.o : $(obj)/build.h $(obj)/console/init.bootblock.o : $(obj)/build.h diff --git a/src/console/console.c b/src/console/console.c index 2f4eb5c3c2..e0e505c049 100644 --- a/src/console/console.c +++ b/src/console/console.c @@ -17,12 +17,13 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include +#include #include #include #include #include #include +#include void console_hw_init(void) { @@ -32,23 +33,51 @@ void console_hw_init(void) #if CONFIG_CONSOLE_NE2K ne2k_init(CONFIG_CONSOLE_NE2K_IO_PORT); #endif -#if CONFIG_CONSOLE_CBMEM && CONFIG_EARLY_CBMEM_INIT && !defined(__BOOT_BLOCK__) +#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(__BOOT_BLOCK__) +#if CONFIG_CONSOLE_USB && (CONFIG_USBDEBUG_IN_ROMSTAGE || !defined(__PRE_RAM__)) usbdebug_init(); #endif +#if CONFIG_CONSOLE_QEMU_DEBUGCON + qemu_debugcon_init(); +#endif } -#ifndef __PRE_RAM__ 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 } 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 +} diff --git a/src/console/init.c b/src/console/init.c index d7c8cc36b0..8bdb2cc054 100644 --- a/src/console/init.c +++ b/src/console/init.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #if CONFIG_EARLY_PCI_BRIDGE @@ -46,7 +47,7 @@ void console_init(void) console_loglevel=CONFIG_DEFAULT_CONSOLE_LOGLEVEL; #endif -#if CONFIG_EARLY_PCI_BRIDGE +#if CONFIG_EARLY_PCI_BRIDGE && !defined(__SMM__) pci_early_bridge_init(); #endif diff --git a/src/console/printk.c b/src/console/printk.c index 2fa160b4f3..40ea4049d6 100644 --- a/src/console/printk.c +++ b/src/console/printk.c @@ -10,6 +10,7 @@ #include #include #include +#include #include DECLARE_SPIN_LOCK(console_lock) -- cgit v1.2.3