From 5a95bc2bcab5a92c5e6c144005861bf731f59de3 Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Wed, 11 Sep 2013 15:18:14 -0700 Subject: [PATCH] Exynos: de-duplicate mct timer initialization timer initialization is the first thing happening in the Exynos CPU's bootblock code. Hence we don't need to keep track of it in several places, and we don't need to do it over and over again (e.g. in each stage) BUG=none BRANCH=none TEST=boot tested on pit Change-Id: I7bd9a0b7930fc9c37faabd62e3eecc3e5614a879 Signed-off-by: Stefan Reinauer Reviewed-on: https://chromium-review.googlesource.com/168994 Reviewed-by: Stefan Reinauer Commit-Queue: Stefan Reinauer Tested-by: Stefan Reinauer --- src/cpu/samsung/exynos5250/mct.c | 9 --------- src/cpu/samsung/exynos5250/monotonic_timer.c | 9 +++------ src/cpu/samsung/exynos5250/timer.c | 4 +++- src/cpu/samsung/exynos5420/mct.c | 9 --------- src/cpu/samsung/exynos5420/monotonic_timer.c | 9 +++------ src/cpu/samsung/exynos5420/timer.c | 4 +++- 6 files changed, 12 insertions(+), 32 deletions(-) diff --git a/src/cpu/samsung/exynos5250/mct.c b/src/cpu/samsung/exynos5250/mct.c index b02fc6d9fa..bbb90e49bb 100644 --- a/src/cpu/samsung/exynos5250/mct.c +++ b/src/cpu/samsung/exynos5250/mct.c @@ -21,16 +21,8 @@ #include #include "clk.h" -static int enabled = 0; - uint64_t mct_raw_value(void) { - if (!enabled) { - writel(readl(&exynos_mct->g_tcon) | (0x1 << 8), - &exynos_mct->g_tcon); - enabled = 1; - } - uint64_t upper = readl(&exynos_mct->g_cnt_u); uint64_t lower = readl(&exynos_mct->g_cnt_l); @@ -41,5 +33,4 @@ void mct_start(void) { writel(readl(&exynos_mct->g_tcon) | (0x1 << 8), &exynos_mct->g_tcon); - enabled = 1; } diff --git a/src/cpu/samsung/exynos5250/monotonic_timer.c b/src/cpu/samsung/exynos5250/monotonic_timer.c index 267d9c3aef..4d30c8748a 100644 --- a/src/cpu/samsung/exynos5250/monotonic_timer.c +++ b/src/cpu/samsung/exynos5250/monotonic_timer.c @@ -22,16 +22,13 @@ #include "clk.h" -static int initialized; - static const uint32_t clocks_per_usec = MCT_HZ/1000000; void timer_monotonic_get(struct mono_time *mt) { - if (!initialized) { - mct_start(); - initialized = 1; - } + /* We don't have to call mct_start() here + * because it was already called int he bootblock + */ mono_time_set_usecs(mt, mct_raw_value() / clocks_per_usec); } diff --git a/src/cpu/samsung/exynos5250/timer.c b/src/cpu/samsung/exynos5250/timer.c index 0c2e64143c..03599ac4a5 100644 --- a/src/cpu/samsung/exynos5250/timer.c +++ b/src/cpu/samsung/exynos5250/timer.c @@ -25,7 +25,9 @@ void init_timer(void) { - mct_start(); + /* Nothing to do because we manually + * call mct_start() in the bootblock + */ } /* delay x useconds */ diff --git a/src/cpu/samsung/exynos5420/mct.c b/src/cpu/samsung/exynos5420/mct.c index b02fc6d9fa..bbb90e49bb 100644 --- a/src/cpu/samsung/exynos5420/mct.c +++ b/src/cpu/samsung/exynos5420/mct.c @@ -21,16 +21,8 @@ #include #include "clk.h" -static int enabled = 0; - uint64_t mct_raw_value(void) { - if (!enabled) { - writel(readl(&exynos_mct->g_tcon) | (0x1 << 8), - &exynos_mct->g_tcon); - enabled = 1; - } - uint64_t upper = readl(&exynos_mct->g_cnt_u); uint64_t lower = readl(&exynos_mct->g_cnt_l); @@ -41,5 +33,4 @@ void mct_start(void) { writel(readl(&exynos_mct->g_tcon) | (0x1 << 8), &exynos_mct->g_tcon); - enabled = 1; } diff --git a/src/cpu/samsung/exynos5420/monotonic_timer.c b/src/cpu/samsung/exynos5420/monotonic_timer.c index 267d9c3aef..4d30c8748a 100644 --- a/src/cpu/samsung/exynos5420/monotonic_timer.c +++ b/src/cpu/samsung/exynos5420/monotonic_timer.c @@ -22,16 +22,13 @@ #include "clk.h" -static int initialized; - static const uint32_t clocks_per_usec = MCT_HZ/1000000; void timer_monotonic_get(struct mono_time *mt) { - if (!initialized) { - mct_start(); - initialized = 1; - } + /* We don't have to call mct_start() here + * because it was already called int he bootblock + */ mono_time_set_usecs(mt, mct_raw_value() / clocks_per_usec); } diff --git a/src/cpu/samsung/exynos5420/timer.c b/src/cpu/samsung/exynos5420/timer.c index 724f43a3fd..ddf45e777e 100644 --- a/src/cpu/samsung/exynos5420/timer.c +++ b/src/cpu/samsung/exynos5420/timer.c @@ -25,7 +25,9 @@ void init_timer(void) { - mct_start(); + /* Nothing to do because we manually + * call mct_start() in the bootblock + */ } /* delay x useconds */