aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Hendricks <dhendrix@chromium.org>2013-05-04 01:54:45 +0200
committerDavid Hendricks <dhendrix@chromium.org>2013-05-04 20:36:36 +0200
commitab98cfe110353eb7b9ad5a8ca125f0d6cd69b632 (patch)
tree0b0284ad9916e1cf39f03e02fa8dd7844faf99fe /src
parentcc76d7e011ead7350c8b7017c401a584e88154e2 (diff)
Revert "exynos5250/snow: deprecate time.h"
This reverts commit 2fde9668b47e74d1bfad2f1688a4481e6b966d04 Somehow this got merged before its dependencies. 3190 must be merged first, followed by 3176. However 3190 will fail while this patch is in. So the situation can't correct itself. Reverting this until the other two go in. Change-Id: I176f37c12711849c96f1889eacad38c00a8142c4 Signed-off-by: David Hendricks <dhendrix@chromium.org> Reviewed-on: http://review.coreboot.org/3195 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'src')
-rw-r--r--src/cpu/samsung/exynos5250/clk.h1
-rw-r--r--src/cpu/samsung/exynos5250/mct.c12
-rw-r--r--src/cpu/samsung/exynos5250/monotonic_timer.c1
-rw-r--r--src/include/time.h26
-rw-r--r--src/mainboard/google/snow/bootblock.c6
-rw-r--r--src/mainboard/google/snow/romstage.c1
6 files changed, 41 insertions, 6 deletions
diff --git a/src/cpu/samsung/exynos5250/clk.h b/src/cpu/samsung/exynos5250/clk.h
index 828e7d8832..1894c006d2 100644
--- a/src/cpu/samsung/exynos5250/clk.h
+++ b/src/cpu/samsung/exynos5250/clk.h
@@ -585,7 +585,6 @@ int clock_get_mem_selection(enum ddr_mode *mem_type,
unsigned *frequency_mhz, unsigned *arm_freq,
enum mem_manuf *mem_manuf);
-void mct_start(void);
uint64_t mct_raw_value(void);
#endif
diff --git a/src/cpu/samsung/exynos5250/mct.c b/src/cpu/samsung/exynos5250/mct.c
index db76e9d0b4..4216643140 100644
--- a/src/cpu/samsung/exynos5250/mct.c
+++ b/src/cpu/samsung/exynos5250/mct.c
@@ -22,7 +22,7 @@
#include <arch/io.h>
#include <stdint.h>
-
+#include <time.h>
#include "clk.h"
struct __attribute__((packed)) mct_regs
@@ -101,8 +101,16 @@ uint64_t mct_raw_value(void)
return (upper << 32) | lower;
}
-void mct_start(void)
+void timer_start(void)
{
writel(readl(&mct->g_tcon) | (0x1 << 8), &mct->g_tcon);
enabled = 1;
}
+
+u32 timer_us(void)
+{
+ uint64_t raw = mct_raw_value();
+ static uint32_t ticks_per_microsecond = MCT_HZ/1000000;
+ uint32_t usec = raw / ticks_per_microsecond;
+ return usec;
+}
diff --git a/src/cpu/samsung/exynos5250/monotonic_timer.c b/src/cpu/samsung/exynos5250/monotonic_timer.c
index 7c6229b38e..85fb2082b3 100644
--- a/src/cpu/samsung/exynos5250/monotonic_timer.c
+++ b/src/cpu/samsung/exynos5250/monotonic_timer.c
@@ -20,6 +20,7 @@
#include <stdint.h>
#include <delay.h>
#include <timer.h>
+#include <time.h> /* TODO: deprecate in favor of monotonic timer stuff */
#include "clk.h"
diff --git a/src/include/time.h b/src/include/time.h
new file mode 100644
index 0000000000..2cfcb356c4
--- /dev/null
+++ b/src/include/time.h
@@ -0,0 +1,26 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2013 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
+ */
+
+#ifndef TIME_H
+#define TIME_H
+
+void timer_start(void);
+u32 timer_us(void);
+
+#endif /* TIME_H */
diff --git a/src/mainboard/google/snow/bootblock.c b/src/mainboard/google/snow/bootblock.c
index 56c2650f7a..44640428a7 100644
--- a/src/mainboard/google/snow/bootblock.c
+++ b/src/mainboard/google/snow/bootblock.c
@@ -21,8 +21,8 @@
#include <arch/io.h>
#include <cbfs.h>
#include <uart.h>
+#include <time.h>
#include <console/console.h>
-#include <cpu/samsung/exynos5250/clk.h>
#include <cpu/samsung/exynos5250/periph.h>
#include <cpu/samsung/exynos5250/pinmux.h>
#include "mainboard.h"
@@ -30,10 +30,10 @@
void bootblock_mainboard_init(void);
void bootblock_mainboard_init(void)
{
- /* kick off the multi-core timer.
+ /* kick off the microsecond timer.
* We want to do this as early as we can.
*/
- mct_start();
+ timer_start();
if (snow_get_wakeup_state() == SNOW_WAKEUP_DIRECT) {
snow_wakeup();
diff --git a/src/mainboard/google/snow/romstage.c b/src/mainboard/google/snow/romstage.c
index 508dac6590..aa3a3405e3 100644
--- a/src/mainboard/google/snow/romstage.c
+++ b/src/mainboard/google/snow/romstage.c
@@ -36,6 +36,7 @@
#include <cpu/samsung/exynos5250/clock_init.h>
#include <console/console.h>
#include <arch/stages.h>
+#include <time.h>
#include <drivers/maxim/max77686/max77686.h>
#include <device/i2c.h>