[coreboot] Patch set updated for coreboot: 2d595b5 armv7/snow: Move clock initialization from bootblock to romstage.

David Hendricks (dhendrix@chromium.org) gerrit at coreboot.org
Thu Feb 7 22:43:57 CET 2013


David Hendricks (dhendrix at chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2308

-gerrit

commit 2d595b5690c7d18fef25b28d7aa2982f17cba66e
Author: Hung-Te Lin <hungte at chromium.org>
Date:   Thu Feb 7 21:38:41 2013 +0800

    armv7/snow: Move clock initialization from bootblock to romstage.
    
    Exynos system clock can be initialized before RAM init, not necessary to be in
    the very beginning (boot block). This helps reducing bootblock dependency.
    
    Verified to boot on armv7/snow.
    
    Change-Id: Ic863e222871a157ba4279a673775b1e18c6eac0d
    Signed-off-by: Hung-Te Lin <hungte at chromium.org>
---
 src/mainboard/google/snow/Makefile.inc |  4 ----
 src/mainboard/google/snow/bootblock.c  | 11 +----------
 src/mainboard/google/snow/romstage.c   |  9 ++++++++-
 3 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/src/mainboard/google/snow/Makefile.inc b/src/mainboard/google/snow/Makefile.inc
index 04bf543..b56a1a4 100644
--- a/src/mainboard/google/snow/Makefile.inc
+++ b/src/mainboard/google/snow/Makefile.inc
@@ -17,10 +17,6 @@
 ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 ##
 
-# needed for system_clock_init()
-bootblock-y += mainboard.c
-bootblock-y += memory.c
-
 romstage-y += mainboard.c
 romstage-y += memory.c
 romstage-y += romstage.c
diff --git a/src/mainboard/google/snow/bootblock.c b/src/mainboard/google/snow/bootblock.c
index bcfe440..18306cc 100644
--- a/src/mainboard/google/snow/bootblock.c
+++ b/src/mainboard/google/snow/bootblock.c
@@ -23,23 +23,14 @@
 #include <cbfs.h>
 #include <uart.h>
 #include <console/console.h>
-#include <cpu/samsung/exynos5250/clk.h>
-#include <cpu/samsung/exynos5250/dmc.h>
 #include <cpu/samsung/exynos5250/periph.h>
-#include <cpu/samsung/exynos5250/clock_init.h>
+#include <cpu/samsung/exynos5250/pinmux.h>
 
 #endif
 
 void bootblock_mainboard_init(void);
 void bootblock_mainboard_init(void)
 {
-	struct mem_timings *mem;
-	struct arm_clk_ratios *arm_ratios;
-
-	mem = get_mem_timings();
-	arm_ratios = get_arm_clk_ratios();
-	system_clock_init(mem, arm_ratios);
-
 #if CONFIG_EARLY_SERIAL_CONSOLE
 	exynos_pinmux_config(PERIPH_ID_UART3, PINMUX_FLAG_NONE);
 	uart_init();
diff --git a/src/mainboard/google/snow/romstage.c b/src/mainboard/google/snow/romstage.c
index b8e5116..c0bb6f4 100644
--- a/src/mainboard/google/snow/romstage.c
+++ b/src/mainboard/google/snow/romstage.c
@@ -26,6 +26,7 @@
 
 #include <cpu/samsung/exynos5250/dmc.h>
 #include <cpu/samsung/exynos5250/setup.h>
+#include <cpu/samsung/exynos5250/clock_init.h>
 
 #include <console/console.h>
 #include <arch/stages.h>
@@ -48,13 +49,19 @@ static int board_wakeup_permitted(void)
 void main(void)
 {
 	struct mem_timings *mem;
+	struct arm_clk_ratios *arm_ratios;
 	int ret;
 	void *entry;
 
+	/* Clock must be initialized before console_init, otherwise you may need
+	 * to re-initialize serial console drivers again. */
+	mem = get_mem_timings();
+	arm_ratios = get_arm_clk_ratios();
+	system_clock_init(mem, arm_ratios);
+
 	console_init();
 	printk(BIOS_INFO, "hello from romstage\n");
 
-	mem = get_mem_timings();
 	if (!mem) {
 		printk(BIOS_CRIT, "Unable to auto-detect memory timings\n");
 		while(1);



More information about the coreboot mailing list