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@google.com>
Reviewed-on: https://chromium-review.googlesource.com/168994
Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
Commit-Queue: Stefan Reinauer <reinauer@chromium.org>
Tested-by: Stefan Reinauer <reinauer@chromium.org>
(cherry picked from commit 5a95bc2bcab5a92c5e6c144005861bf731f59de3)
Signed-off-by: Isaac Christensen <isaac.christensen@se-eng.com>
Reviewed-on: http://review.coreboot.org/6638
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
Stefan Reinauer 2013-09-11 15:18:14 -07:00 committed by Isaac Christensen
parent d29bf2068f
commit 6ada053709
6 changed files with 12 additions and 32 deletions

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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 */

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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 */