summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2013-06-06 00:21:20 -0700
committerStefan Reinauer <stefan.reinauer@coreboot.org>2013-07-10 21:47:52 +0200
commitfbb11cf97937c345a42a45737fc7a95ee7ee3e7e (patch)
tree48b392d3c49c67470b6633d27821b31d3094832f
parentc2c4f84644bf6f20b0a3b5dffb7edb6a47f02023 (diff)
downloadcoreboot-fbb11cf97937c345a42a45737fc7a95ee7ee3e7e.tar.gz
coreboot-fbb11cf97937c345a42a45737fc7a95ee7ee3e7e.tar.bz2
coreboot-fbb11cf97937c345a42a45737fc7a95ee7ee3e7e.zip
ARM: Separate the early console (romstage) from the bootblock console.
It might be that you want an early console in romstage before RAM is up, but you can't or don't want to support the console all the way back in the bootblock. By making the console in those two different environments configurable seperately that becomes possible. On the 5250 console output as early as the bootblock works, but on the 5420 it only starts working in the ROM stage after clocks have been initialized. Change-Id: I68ae3fcb4d828fa8a328a30001c23c81a4423bb8 Signed-off-by: Gabe Black <gabeblack@chromium.org> Reviewed-on: http://review.coreboot.org/3671 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
-rw-r--r--src/arch/armv7/Makefile.inc2
-rw-r--r--src/arch/armv7/bootblock_simple.c2
-rw-r--r--src/console/Kconfig10
-rw-r--r--src/console/Makefile.inc2
-rw-r--r--src/console/console.c3
-rw-r--r--src/cpu/samsung/Kconfig1
-rw-r--r--src/cpu/samsung/exynos5250/Makefile.inc12
-rw-r--r--src/cpu/samsung/exynos5420/Makefile.inc12
-rw-r--r--src/include/console/console.h3
-rw-r--r--src/mainboard/emulation/qemu-armv7/Makefile.inc2
10 files changed, 31 insertions, 18 deletions
diff --git a/src/arch/armv7/Makefile.inc b/src/arch/armv7/Makefile.inc
index 8474315458f4..1a328c4f1828 100644
--- a/src/arch/armv7/Makefile.inc
+++ b/src/arch/armv7/Makefile.inc
@@ -163,7 +163,7 @@ $(obj)/mainboard/$(MAINBOARDDIR)/romstage.pre.inc: $(src)/mainboard/$(MAINBOARDD
ramstage-y += exception.c
ramstage-y += exception_asm.S
-bootblock-$(CONFIG_EARLY_CONSOLE) += early_console.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += early_console.c
bootblock-y += cache.c
romstage-y += cache.c
diff --git a/src/arch/armv7/bootblock_simple.c b/src/arch/armv7/bootblock_simple.c
index 5d0fe7ecaa4e..541175cc8ab0 100644
--- a/src/arch/armv7/bootblock_simple.c
+++ b/src/arch/armv7/bootblock_simple.c
@@ -68,7 +68,7 @@ void main(void)
bootblock_mainboard_init();
}
-#ifdef CONFIG_EARLY_CONSOLE
+#ifdef CONFIG_BOOTBLOCK_CONSOLE
console_init();
#endif
diff --git a/src/console/Kconfig b/src/console/Kconfig
index dc41fd36b2e9..f62cfdd1b1aa 100644
--- a/src/console/Kconfig
+++ b/src/console/Kconfig
@@ -1,5 +1,15 @@
menu "Console"
+config DEFAULT_BOOTBLOCK_CONSOLE
+ bool
+ default n
+
+config BOOTBLOCK_CONSOLE
+ bool "Enable early (bootblock) console output."
+ default DEFAULT_BOOTBLOCK_CONSOLE
+ help
+ Use console during the bootblock if supported
+
config DEFAULT_EARLY_CONSOLE
bool
default n
diff --git a/src/console/Makefile.inc b/src/console/Makefile.inc
index ed2287e85f13..9edec3ccff9a 100644
--- a/src/console/Makefile.inc
+++ b/src/console/Makefile.inc
@@ -14,7 +14,7 @@ romstage-y += console.c
romstage-y += post.c
romstage-y += die.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += vtxprintf.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += vtxprintf.c
bootblock-y += console.c
bootblock-y += die.c
diff --git a/src/console/console.c b/src/console/console.c
index 2f7de02655d3..c53adc6a1ed2 100644
--- a/src/console/console.c
+++ b/src/console/console.c
@@ -101,7 +101,8 @@ int console_tst_byte(void)
void console_init(void)
{
-#if CONFIG_EARLY_CONSOLE
+#if defined(__BOOT_BLOCK__) && CONFIG_BOOTBLOCK_CONSOLE || \
+ !defined(__BOOT_BLOCK__) && CONFIG_EARLY_CONSOLE
#if CONFIG_USBDEBUG
enable_usbdebug(CONFIG_USBDEBUG_DEFAULT_PORT);
diff --git a/src/cpu/samsung/Kconfig b/src/cpu/samsung/Kconfig
index 3b6df9ec618e..54f4ed1a21c7 100644
--- a/src/cpu/samsung/Kconfig
+++ b/src/cpu/samsung/Kconfig
@@ -2,6 +2,7 @@ config CPU_SAMSUNG_EXYNOS5250
depends on ARCH_ARMV7
select HAVE_MONOTONIC_TIMER
select HAVE_UART_SPECIAL
+ select DEFAULT_BOOTBLOCK_CONSOLE
select DEFAULT_EARLY_CONSOLE
bool
default n
diff --git a/src/cpu/samsung/exynos5250/Makefile.inc b/src/cpu/samsung/exynos5250/Makefile.inc
index dcc783dc2ef3..663f5329dd71 100644
--- a/src/cpu/samsung/exynos5250/Makefile.inc
+++ b/src/cpu/samsung/exynos5250/Makefile.inc
@@ -6,14 +6,14 @@ INTERMEDIATE += exynos5250_add_bl1
bootblock-y += spi.c
bootblock-y += pinmux.c mct.c power.c
# Clock is required for UART
-bootblock-$(CONFIG_EARLY_CONSOLE) += clock_init.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += clock.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += monotonic_timer.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += uart.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += clock_init.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += clock.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += monotonic_timer.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += uart.c
bootblock-y += wakeup.c
bootblock-y += gpio.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += pwm.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += timer.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += pwm.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += timer.c
romstage-y += spi.c
romstage-y += clock.c
diff --git a/src/cpu/samsung/exynos5420/Makefile.inc b/src/cpu/samsung/exynos5420/Makefile.inc
index c3416c4cf777..1dddd21ebdf0 100644
--- a/src/cpu/samsung/exynos5420/Makefile.inc
+++ b/src/cpu/samsung/exynos5420/Makefile.inc
@@ -6,14 +6,14 @@ INTERMEDIATE += exynos5420_add_bl1
bootblock-y += spi.c
bootblock-y += pinmux.c mct.c power.c
# Clock is required for UART
-bootblock-$(CONFIG_EARLY_CONSOLE) += clock_init.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += clock.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += monotonic_timer.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += uart.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += clock_init.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += clock.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += monotonic_timer.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += uart.c
bootblock-y += wakeup.c
bootblock-y += gpio.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += pwm.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += timer.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += pwm.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += timer.c
romstage-y += spi.c
romstage-y += clock.c
diff --git a/src/include/console/console.h b/src/include/console/console.h
index 9112f35c9b89..2f5f18ef509b 100644
--- a/src/include/console/console.h
+++ b/src/include/console/console.h
@@ -77,7 +77,8 @@ void mainboard_post(u8 value);
void __attribute__ ((noreturn)) die(const char *msg);
int do_printk(int msg_level, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
-#if defined(__PRE_RAM__) && !CONFIG_EARLY_CONSOLE
+#if defined(__BOOT_BLOCK__) && !CONFIG_BOOTBLOCK_CONSOLE || \
+ (defined(__PRE_RAM__) && !defined(__BOOT_BLOCK__)) && !CONFIG_EARLY_CONSOLE
static inline void printk(int LEVEL, const char *fmt, ...);
static inline void printk(int LEVEL, const char *fmt, ...) {
diff --git a/src/mainboard/emulation/qemu-armv7/Makefile.inc b/src/mainboard/emulation/qemu-armv7/Makefile.inc
index 46ecfed9cdea..431d9ab8656a 100644
--- a/src/mainboard/emulation/qemu-armv7/Makefile.inc
+++ b/src/mainboard/emulation/qemu-armv7/Makefile.inc
@@ -22,6 +22,6 @@ bootblock-y += timer.c
romstage-y += timer.c
ramstage-y += timer.c
-bootblock-$(CONFIG_EARLY_CONSOLE) += uart.c
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += uart.c
romstage-$(CONFIG_EARLY_CONSOLE) += uart.c
ramstage-y += uart.c