[U-Boot] [PATCH v2 2/6] i.MX31: Add reset_timer() and modify get_timer_masked().
Magnus Lilja
lilja.magnus at gmail.com
Mon Aug 18 11:30:43 CEST 2008
This patch adds the reset_timer() function (needed by nand_base.c) and
modifies the get_timer_masked() to work in the same way as the omap24xx
function.
Signed-off-by: Magnus Lilja <lilja.magnus at gmail.com>
---
cpu/arm1136/mx31/interrupts.c | 22 ++++++++++++++++++----
1 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/cpu/arm1136/mx31/interrupts.c b/cpu/arm1136/mx31/interrupts.c
index 21b77a5..b173919 100644
--- a/cpu/arm1136/mx31/interrupts.c
+++ b/cpu/arm1136/mx31/interrupts.c
@@ -38,6 +38,9 @@
#define GPTCR_CLKSOURCE_32 (4<<6) /* Clock source */
#define GPTCR_TEN (1) /* Timer enable */
+static ulong timestamp;
+static ulong lastinc;
+
/* nothing really to do with interrupts, just starts up a counter. */
int interrupt_init (void)
{
@@ -54,14 +57,25 @@ int interrupt_init (void)
void reset_timer_masked (void)
{
- GPTCR = 0;
- GPTCR = GPTCR_CLKSOURCE_32 | GPTCR_TEN; /* Freerun Mode, PERCLK1 input */
+ lastinc = GPTCNT;
+ timestamp = 0;
+}
+
+void reset_timer(void)
+{
+ reset_timer_masked();
}
ulong get_timer_masked (void)
{
- ulong val = GPTCNT;
- return val;
+ ulong now = GPTCNT;
+
+ if (now >= lastinc)
+ timestamp += (now - lastinc);
+ else
+ timestamp += (0xFFFFFFFF - lastinc) + now;
+ lastinc = now;
+ return timestamp;
}
ulong get_timer (ulong base)
--
1.5.2.4
More information about the U-Boot
mailing list