diff options
-rw-r--r-- | src/arch/arm/armv4/bootblock_simple.c | 6 | ||||
-rw-r--r-- | src/arch/arm/armv7/bootblock_simple.c | 6 | ||||
-rw-r--r-- | src/include/delay.h | 4 | ||||
-rw-r--r-- | src/lib/hardwaremain.c | 5 | ||||
-rw-r--r-- | src/lib/timer.c | 2 | ||||
-rw-r--r-- | src/mainboard/google/storm/Makefile.inc | 1 | ||||
-rw-r--r-- | src/mainboard/google/storm/bootblock.c | 26 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/bootblock.c | 2 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/include/soc/timer.h | 2 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/timer.c | 2 | ||||
-rw-r--r-- | src/soc/samsung/exynos5250/bootblock.c | 5 | ||||
-rw-r--r-- | src/soc/samsung/exynos5250/include/soc/clk.h | 3 | ||||
-rw-r--r-- | src/soc/samsung/exynos5250/timer.c | 5 | ||||
-rw-r--r-- | src/soc/samsung/exynos5420/bootblock.c | 5 | ||||
-rw-r--r-- | src/soc/samsung/exynos5420/include/soc/clk.h | 3 | ||||
-rw-r--r-- | src/soc/samsung/exynos5420/timer.c | 5 |
16 files changed, 24 insertions, 58 deletions
diff --git a/src/arch/arm/armv4/bootblock_simple.c b/src/arch/arm/armv4/bootblock_simple.c index 26646eebf5..eea2dd6847 100644 --- a/src/arch/arm/armv4/bootblock_simple.c +++ b/src/arch/arm/armv4/bootblock_simple.c @@ -24,7 +24,9 @@ #include <bootblock_common.h> #include <cbfs.h> #include <console/console.h> +#include <delay.h> #include <program_loading.h> +#include <timestamp.h> __attribute__((weak)) void bootblock_mainboard_early_init(void) { /* no-op */ } __attribute__((weak)) void bootblock_soc_init(void) { /* do nothing */ } @@ -32,6 +34,10 @@ __attribute__((weak)) void bootblock_mainboard_init(void) { /* do nothing */ } void main(void) { + init_timer(); + if (IS_ENABLED(CONFIG_HAS_PRECBMEM_TIMESTAMP_REGION)) + timestamp_init(timestamp_get()); + bootblock_mainboard_early_init(); if (CONFIG_BOOTBLOCK_CONSOLE) { diff --git a/src/arch/arm/armv7/bootblock_simple.c b/src/arch/arm/armv7/bootblock_simple.c index 564db5b80a..b8b60c8701 100644 --- a/src/arch/arm/armv7/bootblock_simple.c +++ b/src/arch/arm/armv7/bootblock_simple.c @@ -24,8 +24,10 @@ #include <bootblock_common.h> #include <cbfs.h> #include <console/console.h> +#include <delay.h> #include <program_loading.h> #include <smp/node.h> +#include <timestamp.h> __attribute__((weak)) void bootblock_mainboard_early_init(void) { /* no-op */ } __attribute__((weak)) void bootblock_soc_init(void) { /* do nothing */ } @@ -33,6 +35,10 @@ __attribute__((weak)) void bootblock_mainboard_init(void) { /* do nothing */ } void main(void) { + init_timer(); + if (IS_ENABLED(CONFIG_HAS_PRECBMEM_TIMESTAMP_REGION)) + timestamp_init(timestamp_get()); + bootblock_mainboard_early_init(); #if CONFIG_BOOTBLOCK_CONSOLE diff --git a/src/include/delay.h b/src/include/delay.h index ab1f4f9829..b3d8ed95da 100644 --- a/src/include/delay.h +++ b/src/include/delay.h @@ -1,11 +1,7 @@ #ifndef DELAY_H #define DELAY_H -#if IS_ENABLED(CONFIG_GENERIC_UDELAY) -static inline void init_timer(void) {} -#else void init_timer(void); -#endif void udelay(unsigned usecs); void mdelay(unsigned msecs); diff --git a/src/lib/hardwaremain.c b/src/lib/hardwaremain.c index 5f06ca762a..3d1b8f2a58 100644 --- a/src/lib/hardwaremain.c +++ b/src/lib/hardwaremain.c @@ -464,8 +464,9 @@ void main(void) /* Schedule the static boot state entries. */ boot_state_schedule_static_entries(); - /* FIXME: Is there a better way to handle this? */ - init_timer(); + /* TODO: Understand why this is here and move to arch/platform code. */ + if (IS_ENABLED(CONFIG_ARCH_X86)) + init_timer(); bs_walk_state_machine(); diff --git a/src/lib/timer.c b/src/lib/timer.c index a2edc5c96d..8aeaa063c1 100644 --- a/src/lib/timer.c +++ b/src/lib/timer.c @@ -22,6 +22,8 @@ #include <delay.h> #include <thread.h> +__attribute__((weak)) void init_timer() { /* do nothing */ } + void udelay(unsigned usec) { struct stopwatch sw; diff --git a/src/mainboard/google/storm/Makefile.inc b/src/mainboard/google/storm/Makefile.inc index 453caae143..5add3b3e56 100644 --- a/src/mainboard/google/storm/Makefile.inc +++ b/src/mainboard/google/storm/Makefile.inc @@ -17,7 +17,6 @@ ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ## -bootblock-y += bootblock.c bootblock-y += cdp.c bootblock-y += reset.c diff --git a/src/mainboard/google/storm/bootblock.c b/src/mainboard/google/storm/bootblock.c deleted file mode 100644 index fc9f8f39dd..0000000000 --- a/src/mainboard/google/storm/bootblock.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright 2014 Google Inc. - * - * 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 <bootblock_common.h> -#include <delay.h> - -void bootblock_mainboard_early_init(void) -{ - init_timer(); -} diff --git a/src/soc/rockchip/rk3288/bootblock.c b/src/soc/rockchip/rk3288/bootblock.c index 4a5b0d269f..9ea3ec02a4 100644 --- a/src/soc/rockchip/rk3288/bootblock.c +++ b/src/soc/rockchip/rk3288/bootblock.c @@ -29,8 +29,6 @@ static void bootblock_soc_init(void) { - rk3288_init_timer(); - rkclk_init(); mmu_init(); diff --git a/src/soc/rockchip/rk3288/include/soc/timer.h b/src/soc/rockchip/rk3288/include/soc/timer.h index 230168637c..248b150ab5 100644 --- a/src/soc/rockchip/rk3288/include/soc/timer.h +++ b/src/soc/rockchip/rk3288/include/soc/timer.h @@ -40,6 +40,4 @@ static struct rk3288_timer * const timer7_ptr = (void *)TIMER7_BASE; #define TIMER_LOAD_VAL 0xffffffff -void rk3288_init_timer(void); - #endif /* __SOC_ROCKCHIP_RK3288_TIMER_H__ */ diff --git a/src/soc/rockchip/rk3288/timer.c b/src/soc/rockchip/rk3288/timer.c index 47f99c23fd..253d145b44 100644 --- a/src/soc/rockchip/rk3288/timer.c +++ b/src/soc/rockchip/rk3288/timer.c @@ -39,7 +39,7 @@ void timer_monotonic_get(struct mono_time *mt) mono_time_set_usecs(mt, timer_raw_value() / clocks_per_usec); } -void rk3288_init_timer(void) +void init_timer(void) { write32(TIMER_LOAD_VAL, &timer7_ptr->timer_load_count0); write32(TIMER_LOAD_VAL, &timer7_ptr->timer_load_count1); diff --git a/src/soc/samsung/exynos5250/bootblock.c b/src/soc/samsung/exynos5250/bootblock.c index dd0e01c87c..5154c5b3c8 100644 --- a/src/soc/samsung/exynos5250/bootblock.c +++ b/src/soc/samsung/exynos5250/bootblock.c @@ -23,11 +23,6 @@ void bootblock_soc_init(void) { - /* kick off the multi-core timer. - * We want to do this as early as we can. - */ - mct_start(); - if (get_wakeup_state() == WAKEUP_DIRECT) { wakeup(); /* Never returns. */ diff --git a/src/soc/samsung/exynos5250/include/soc/clk.h b/src/soc/samsung/exynos5250/include/soc/clk.h index cefd37ad45..54b06a7483 100644 --- a/src/soc/samsung/exynos5250/include/soc/clk.h +++ b/src/soc/samsung/exynos5250/include/soc/clk.h @@ -589,9 +589,6 @@ int clock_set_rate(enum periph_id periph_id, unsigned int rate); /* Clock gate unused IP */ void clock_gate(void); -void mct_start(void); -uint64_t mct_raw_value(void); - /* These are the ratio's for configuring ARM clock */ struct arm_clk_ratios { unsigned int arm_freq_mhz; /* Frequency of ARM core in MHz */ diff --git a/src/soc/samsung/exynos5250/timer.c b/src/soc/samsung/exynos5250/timer.c index 0947d19d63..1e25771dbd 100644 --- a/src/soc/samsung/exynos5250/timer.c +++ b/src/soc/samsung/exynos5250/timer.c @@ -18,13 +18,14 @@ */ #include <arch/io.h> +#include <delay.h> #include <soc/clk.h> #include <stdint.h> #include <timer.h> static const uint32_t clocks_per_usec = MCT_HZ/1000000; -uint64_t mct_raw_value(void) +static uint64_t mct_raw_value(void) { uint64_t upper = readl(&exynos_mct->g_cnt_u); uint64_t lower = readl(&exynos_mct->g_cnt_l); @@ -32,7 +33,7 @@ uint64_t mct_raw_value(void) return (upper << 32) | lower; } -void mct_start(void) +void init_timer(void) { writel(readl(&exynos_mct->g_tcon) | (0x1 << 8), &exynos_mct->g_tcon); diff --git a/src/soc/samsung/exynos5420/bootblock.c b/src/soc/samsung/exynos5420/bootblock.c index f347677b94..59bc169204 100644 --- a/src/soc/samsung/exynos5420/bootblock.c +++ b/src/soc/samsung/exynos5420/bootblock.c @@ -30,11 +30,6 @@ void bootblock_soc_init(void) { - /* kick off the multi-core timer. - * We want to do this as early as we can. - */ - mct_start(); - if (get_wakeup_state() == WAKEUP_DIRECT) { wakeup(); /* Never returns. */ diff --git a/src/soc/samsung/exynos5420/include/soc/clk.h b/src/soc/samsung/exynos5420/include/soc/clk.h index ca1d721f85..1677a9c18c 100644 --- a/src/soc/samsung/exynos5420/include/soc/clk.h +++ b/src/soc/samsung/exynos5420/include/soc/clk.h @@ -725,9 +725,6 @@ int clock_set_rate(enum periph_id periph_id, unsigned int rate); /* Clock gate unused IP */ void clock_gate(void); -void mct_start(void); -uint64_t mct_raw_value(void); - /* These are the ratio's for configuring ARM clock */ struct arm_clk_ratios { unsigned int arm_freq_mhz; /* Frequency of ARM core in MHz */ diff --git a/src/soc/samsung/exynos5420/timer.c b/src/soc/samsung/exynos5420/timer.c index 0947d19d63..1e25771dbd 100644 --- a/src/soc/samsung/exynos5420/timer.c +++ b/src/soc/samsung/exynos5420/timer.c @@ -18,13 +18,14 @@ */ #include <arch/io.h> +#include <delay.h> #include <soc/clk.h> #include <stdint.h> #include <timer.h> static const uint32_t clocks_per_usec = MCT_HZ/1000000; -uint64_t mct_raw_value(void) +static uint64_t mct_raw_value(void) { uint64_t upper = readl(&exynos_mct->g_cnt_u); uint64_t lower = readl(&exynos_mct->g_cnt_l); @@ -32,7 +33,7 @@ uint64_t mct_raw_value(void) return (upper << 32) | lower; } -void mct_start(void) +void init_timer(void) { writel(readl(&exynos_mct->g_tcon) | (0x1 << 8), &exynos_mct->g_tcon); |