From 4076072b6c76debae0e328486d9bab71fe391db7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ky=C3=B6sti=20M=C3=A4lkki?= 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/arch/armv7/Makefile.inc | 2 -- src/arch/armv7/early_console.c | 40 -------------------------- src/arch/x86/lib/Makefile.inc | 1 - src/arch/x86/lib/romstage_console.c | 57 ------------------------------------- src/console/Makefile.inc | 3 +- src/console/console.c | 39 +++++++++++++++++++++---- src/console/init.c | 3 +- src/console/printk.c | 1 + src/cpu/x86/smm/Makefile.inc | 2 -- src/cpu/x86/smm/smiutil.c | 47 ------------------------------ src/include/console/console.h | 6 ++-- src/include/console/streams.h | 25 ++++++++++++++++ 12 files changed, 66 insertions(+), 160 deletions(-) delete mode 100644 src/arch/armv7/early_console.c delete mode 100644 src/arch/x86/lib/romstage_console.c delete mode 100644 src/cpu/x86/smm/smiutil.c create mode 100644 src/include/console/streams.h (limited to 'src') diff --git a/src/arch/armv7/Makefile.inc b/src/arch/armv7/Makefile.inc index dfd51640ab..f0adc0add9 100644 --- a/src/arch/armv7/Makefile.inc +++ b/src/arch/armv7/Makefile.inc @@ -163,12 +163,10 @@ $(obj)/mainboard/$(MAINBOARDDIR)/romstage.pre.inc: $(src)/mainboard/$(MAINBOARDD ramstage-y += exception.c ramstage-y += exception_asm.S -bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += early_console.c bootblock-y += cache.c romstage-y += cache.c romstage-y += div0.c -romstage-$(CONFIG_EARLY_CONSOLE) += early_console.c ramstage-y += div0.c #ramstage-y += interrupts.c diff --git a/src/arch/armv7/early_console.c b/src/arch/armv7/early_console.c deleted file mode 100644 index 599cbc76e3..0000000000 --- a/src/arch/armv7/early_console.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * 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 -#include -#include - -/* FIXME: need to make console driver more generic */ -void console_tx_byte(unsigned char byte) -{ -#if CONFIG_CONSOLE_SERIAL - uart_tx_byte(byte); -#endif -#if CONFIG_CONSOLE_CBMEM && !defined(__BOOT_BLOCK__) - cbmemc_tx_byte(byte); -#endif -} - -void console_tx_flush(void) -{ -#if CONFIG_CONSOLE_SERIAL - uart_tx_flush(); -#endif -} diff --git a/src/arch/x86/lib/Makefile.inc b/src/arch/x86/lib/Makefile.inc index c17301152b..8b7418b0d6 100644 --- a/src/arch/x86/lib/Makefile.inc +++ b/src/arch/x86/lib/Makefile.inc @@ -12,7 +12,6 @@ ramstage-y += rom_media.c ramstage-$(CONFIG_COOP_MULTITASKING) += thread.c ramstage-$(CONFIG_COOP_MULTITASKING) += thread_switch.S -romstage-$(CONFIG_EARLY_CONSOLE) += romstage_console.c romstage-y += cbfs_and_run.c romstage-y += memset.c romstage-y += memcpy.c diff --git a/src/arch/x86/lib/romstage_console.c b/src/arch/x86/lib/romstage_console.c deleted file mode 100644 index 58742a2454..0000000000 --- a/src/arch/x86/lib/romstage_console.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * 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 -#include -#include -#include -#include -#include - -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 && (CONFIG_EARLY_CBMEM_INIT || !defined(__PRE_RAM__)) - cbmemc_tx_byte(byte); -#endif -#if CONFIG_SPKMODEM - spkmodem_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/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) diff --git a/src/cpu/x86/smm/Makefile.inc b/src/cpu/x86/smm/Makefile.inc index bb9c11d83b..9720630994 100644 --- a/src/cpu/x86/smm/Makefile.inc +++ b/src/cpu/x86/smm/Makefile.inc @@ -22,7 +22,6 @@ ramstage-$(CONFIG_BACKUP_DEFAULT_SMM_REGION) += backup_default_smm.c ifeq ($(CONFIG_SMM_MODULES),y) smmstub-y += smm_stub.S -smm-y += smiutil.c smm-y += smm_module_handler.c ramstage-y += smm_module_loader.c @@ -79,7 +78,6 @@ SMM_LDSCRIPT := smm.ld endif smm-y += smihandler.c -smm-y += smiutil.c $(obj)/cpu/x86/smm/smm.o: $$(smm-objs) $(LIBGCC_FILE_NAME) $(CC) $(LDFLAGS) -nostdlib -r -o $@ -Wl,--wrap,__divdi3 -Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3 -Wl,--start-group $(smm-objs) $(LIBGCC_FILE_NAME) -Wl,--end-group diff --git a/src/cpu/x86/smm/smiutil.c b/src/cpu/x86/smm/smiutil.c deleted file mode 100644 index 644cab7386..0000000000 --- a/src/cpu/x86/smm/smiutil.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2008-2009 coresystems GmbH - * - * 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 -#include - -#if CONFIG_DEBUG_SMI -void console_tx_flush(void) -{ -} - -void console_tx_byte(unsigned char byte) -{ -#if CONFIG_CONSOLE_SERIAL - uart_tx_byte(byte); -#endif -} -#endif - -void console_init(void) -{ -#if CONFIG_DEBUG_SMI - console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL; -#if CONFIG_CONSOLE_SERIAL - uart_init(); -#endif -#endif -} - diff --git a/src/include/console/console.h b/src/include/console/console.h index 0ebd1b70a9..54e454547c 100644 --- a/src/include/console/console.h +++ b/src/include/console/console.h @@ -26,10 +26,6 @@ #ifndef __ROMCC__ int console_log_level(int msg_level); -void console_init(void); -void console_hw_init(void); -void console_tx_byte(unsigned char byte); -void console_tx_flush(void); void post_code(u8 value); #if CONFIG_CMOS_POST_EXTRA void post_log_extra(u32 value); @@ -52,9 +48,11 @@ void __attribute__ ((noreturn)) die(const char *msg); /* 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 +void console_init(void); int do_printk(int msg_level, const char *fmt, ...) __attribute__((format(printf, 2, 3))); void do_putchar(unsigned char byte); diff --git a/src/include/console/streams.h b/src/include/console/streams.h new file mode 100644 index 0000000000..288fade63e --- /dev/null +++ b/src/include/console/streams.h @@ -0,0 +1,25 @@ +/* + * This file is part of the coreboot project. + * + * 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 + */ + +#ifndef _CONSOLE_STREAMS_H_ +#define _CONSOLE_STREAMS_H_ + +void console_hw_init(void); +void console_tx_byte(unsigned char byte); +void console_tx_flush(void); + +#endif /* _CONSOLE_STREAMS_H_ */ -- cgit v1.2.3