[coreboot-gerrit] Patch set updated for coreboot: 0582310 Exynos: de-duplicate mct timer initialization

Isaac Christensen (isaac.christensen@se-eng.com) gerrit at coreboot.org
Thu Aug 14 01:55:42 CEST 2014


Isaac Christensen (isaac.christensen at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/6638

-gerrit

commit 05823104dddef7b5d7adf818aac7f49e0c795189
Author: Stefan Reinauer <reinauer at chromium.org>
Date:   Wed Sep 11 15:18:14 2013 -0700

    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)
    
    Change-Id: I7bd9a0b7930fc9c37faabd62e3eecc3e5614a879
    Signed-off-by: Stefan Reinauer <reinauer at google.com>
    Reviewed-on: https://chromium-review.googlesource.com/168994
    Reviewed-by: Stefan Reinauer <reinauer at chromium.org>
    Commit-Queue: Stefan Reinauer <reinauer at chromium.org>
    Tested-by: Stefan Reinauer <reinauer at chromium.org>
    (cherry picked from commit 5a95bc2bcab5a92c5e6c144005861bf731f59de3)
    Signed-off-by: Isaac Christensen <isaac.christensen at se-eng.com>
---
 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 b02fc6d..bbb90e4 100644
--- a/src/cpu/samsung/exynos5250/mct.c
+++ b/src/cpu/samsung/exynos5250/mct.c
@@ -21,16 +21,8 @@
 #include <arch/io.h>
 #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 267d9c3..89ac416 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 in the 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 88e1f3e..5d402bc 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 b02fc6d..bbb90e4 100644
--- a/src/cpu/samsung/exynos5420/mct.c
+++ b/src/cpu/samsung/exynos5420/mct.c
@@ -21,16 +21,8 @@
 #include <arch/io.h>
 #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 267d9c3..89ac416 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 in the 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 f8d3110..ae13342 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 */



More information about the coreboot-gerrit mailing list