All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] sh: Update sh2/sh2a timer
@ 2008-12-09  2:32 Nobuhiro Iwamatsu
  0 siblings, 0 replies; only message in thread
From: Nobuhiro Iwamatsu @ 2008-12-09  2:32 UTC (permalink / raw)
  To: u-boot

Renesas SH2/SH2A timer broken.
This patch fix timer function.

Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
---
 lib_sh/time_sh2.c |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/lib_sh/time_sh2.c b/lib_sh/time_sh2.c
index fcbb921..4f893c8 100644
--- a/lib_sh/time_sh2.c
+++ b/lib_sh/time_sh2.c
@@ -65,8 +65,8 @@ unsigned long long get_ticks(void)
 	return cmt0_timer;
 }

-static vu_long cmcnt;
-ulong get_timer(ulong base)
+static vu_long cmcnt = 0;
+static unsigned long get_usec (void)
 {
 	ulong data = readw(CMCNT_0);

@@ -81,7 +81,13 @@ ulong get_timer(ulong base)
 		cmt0_timer += cmcnt;

 	cmcnt = data;
-	return cmt0_timer - base;
+	return cmt0_timer;
+}
+
+/* return msec */
+ulong get_timer(ulong base)
+{
+	return (get_usec()/1000) - base;
 }

 void set_timer(ulong t)
@@ -99,9 +105,9 @@ void reset_timer(void)

 void udelay(unsigned long usec)
 {
-	unsigned int start = get_timer(0);
+	unsigned long end = get_usec() + usec;

-	while (get_timer((ulong) start) < (usec * (CONFIG_SYS_HZ / 1000000)))
+	while (get_usec() < end)
 		continue;
 }

-- 1.5.6.5

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2008-12-09  2:32 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-09  2:32 [U-Boot] [PATCH] sh: Update sh2/sh2a timer Nobuhiro Iwamatsu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.