]> git.sur5r.net Git - u-boot/commitdiff
sh3/sh4: fix CONFIG_SYS_HZ to 1000
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Thu, 4 Jun 2009 10:06:47 +0000 (12:06 +0200)
committerNobuhiro Iwamatsu <iwamatsu@nigauri.org>
Wed, 8 Jul 2009 02:43:15 +0000 (11:43 +0900)
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
include/configs/MigoR.h
include/configs/ap325rxa.h
include/configs/mpr2.h
include/configs/ms7720se.h
include/configs/ms7722se.h
include/configs/ms7750se.h
include/configs/r2dplus.h
include/configs/r7780mp.h
include/configs/sh7763rdp.h
include/configs/sh7785lcr.h
lib_sh/time.c

index c9589bd87667529f8f68806cbd22aecad4ac3cab..6ef4c01ec91da8e1e703814fc04ad716cd34173c 100644 (file)
 /* Board Clock */
 #define CONFIG_SYS_CLK_FREQ    33333333
 #define TMU_CLK_DIVIDER                (4)     /* 4 (default), 16, 64, 256 or 1024 */
-#define CONFIG_SYS_HZ                  (CONFIG_SYS_CLK_FREQ / TMU_CLK_DIVIDER)
+#define CONFIG_SYS_HZ          1000
 
 #endif /* __MIGO_R_H */
index c6d77e3ae6b4becddf26cedfb4f6031d86b9fa6f..550d67f9d4cbd9af8e7eacb8e63b3e6e9839250e 100644 (file)
 /* Board Clock */
 #define CONFIG_SYS_CLK_FREQ    33333333
 #define TMU_CLK_DIVIDER                (4)     /* 4 (default), 16, 64, 256 or 1024 */
-#define CONFIG_SYS_HZ                  (CONFIG_SYS_CLK_FREQ / TMU_CLK_DIVIDER)
+#define CONFIG_SYS_HZ          1000
 
 #endif /* __AP325RXA_H */
index 86f6a934f9f1fb8905704774ee0775accfd6912a..c1473373637725398435ffeeb6f2853bcc69d4b2 100644 (file)
@@ -83,7 +83,7 @@
 /* Clocks */
 #define CONFIG_SYS_CLK_FREQ    24000000
 #define TMU_CLK_DIVIDER                4       /* 4 (default), 16, 64, 256 or 1024 */
-#define CONFIG_SYS_HZ                  (CONFIG_SYS_CLK_FREQ / TMU_CLK_DIVIDER)
+#define CONFIG_SYS_HZ          1000
 
 /* UART */
 #define CONFIG_SCIF_CONSOLE    1
index 9a88ec7fa4cea42271303d61ce1037f3a2d48d7d..f2e51220c3c20e5ed4298486572dc3c03131fadd 100644 (file)
 /* Board Clock */
 #define CONFIG_SYS_CLK_FREQ    33333333
 #define TMU_CLK_DIVIDER                4       /* 4 (default), 16, 64, 256 or 1024 */
-#define CONFIG_SYS_HZ                  (CONFIG_SYS_CLK_FREQ / TMU_CLK_DIVIDER)
+#define CONFIG_SYS_HZ          1000
 
 /* PCMCIA */
 #define CONFIG_IDE_PCMCIA      1
index 53ffbeef240fd176c828ac8979cbe3216388aecf..e83bd0828e6ac26196a0aca52502325adc3183d0 100644 (file)
 /* Board Clock */
 #define CONFIG_SYS_CLK_FREQ    33333333
 #define TMU_CLK_DIVIDER                (4)     /* 4 (default), 16, 64, 256 or 1024 */
-#define CONFIG_SYS_HZ                  (CONFIG_SYS_CLK_FREQ / TMU_CLK_DIVIDER)
+#define CONFIG_SYS_HZ          1000
 
 #endif /* __MS7722SE_H */
index 5eed3ab66db1463511dc3737d02c4cfc01946a90..67af2099770489a465d513e202b7bf23309e415c 100644 (file)
 /* Board Clock */
 #define CONFIG_SYS_CLK_FREQ    33333333
 #define TMU_CLK_DIVIDER                4
-#define CONFIG_SYS_HZ                  (CONFIG_SYS_CLK_FREQ / TMU_CLK_DIVIDER)
+#define CONFIG_SYS_HZ          1000
 
 #endif /* __MS7750SE_H */
index 6fa1eafde7ddd054a5d562857196c6b906eeb01b..804e3b846092dafc36eae5c75b7e5c737b5afdd0 100644 (file)
@@ -81,7 +81,7 @@
  */
 #define CONFIG_SYS_CLK_FREQ    60000000
 #define TMU_CLK_DIVIDER                4
-#define CONFIG_SYS_HZ                  (CONFIG_SYS_CLK_FREQ / TMU_CLK_DIVIDER)
+#define CONFIG_SYS_HZ          1000
 #define        CONFIG_SYS_PLL_SETTLING_TIME    100/* in us */
 
 /*
index 88eb56821f628aefd6e6e9d7395caf446ef28920..7b6867d101ecdd2e6de41bb1ebbb547c212d348c 100644 (file)
 /* Board Clock */
 #define CONFIG_SYS_CLK_FREQ    33333333
 #define TMU_CLK_DIVIDER                4
-#define CONFIG_SYS_HZ  (CONFIG_SYS_CLK_FREQ / TMU_CLK_DIVIDER)
+#define CONFIG_SYS_HZ          1000
 
 /* PCI Controller */
 #if defined(CONFIG_CMD_PCI)
index 8d7456eb69983ed2476ab274c98ce2ee1c223a1e..79631be58a9fc0f619e4b183d711812dd7d065ce 100644 (file)
 /* Clock */
 #define CONFIG_SYS_CLK_FREQ    66666666
 #define TMU_CLK_DIVIDER                (4)     /* 4 (default), 16, 64, 256 or 1024 */
-#define CONFIG_SYS_HZ                          (CONFIG_SYS_CLK_FREQ / TMU_CLK_DIVIDER)
+#define CONFIG_SYS_HZ          1000
 
 /* Ether */
 #define CONFIG_NET_MULTI 1
index 21c3f70f5c9244d52bda79d8fb2532cb8ffad5f1..9b4defd911e9a0516f3311e32294bdcd5469e192 100644 (file)
 /* The SCIF used external clock. system clock only used timer. */
 #define CONFIG_SYS_CLK_FREQ    50000000
 #define TMU_CLK_DIVIDER                4
-#define CONFIG_SYS_HZ                  (CONFIG_SYS_CLK_FREQ / TMU_CLK_DIVIDER)
+#define CONFIG_SYS_HZ          1000
 
 #endif /* __SH7785LCR_H */
index 8fccce3d6a573a42e7cc8fdd53db9aabb1014351..dc1c57e975151b7cef5d22760df3caf315c60373 100644 (file)
@@ -1,4 +1,7 @@
 /*
+ * (C) Copyright 2009
+ * Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+ *
  * (C) Copyright 2007-2008
  * Nobobuhiro Iwamatsu <iwamatsu@nigauri.org>
  *
  */
 
 #include <common.h>
+#include <div64.h>
 #include <asm/processor.h>
+#include <asm/clk.h>
 #include <asm/io.h>
 
 #define TMU_MAX_COUNTER (~0UL)
-static int clk_adj = 1;
+
+static ulong timer_freq;
+
+static inline unsigned long long tick_to_time(unsigned long long tick)
+{
+       tick *= CONFIG_SYS_HZ;
+       do_div(tick, timer_freq);
+
+       return tick;
+}
+
+static inline unsigned long long usec_to_tick(unsigned long long usec)
+{
+       usec *= timer_freq;
+       do_div(usec, 1000000);
+
+       return usec;
+}
 
 static void tmu_timer_start (unsigned int timer)
 {
@@ -65,15 +87,12 @@ int timer_init (void)
                break;
        case 4:
        default:
-               bit = 0;
                break;
        }
        writew(readw(TCR0) | bit, TCR0);
 
-       /* Clock adjustment calc */
-       clk_adj = (int)(1.0 / ((1.0 / CONFIG_SYS_HZ) * 1000000));
-       if (clk_adj < 1)
-               clk_adj = 1;
+       /* Calc clock rate */
+       timer_freq = get_tmu0_clk_rate() >> ((bit + 1) * 2);
 
        tmu_timer_stop(0);
        tmu_timer_start(0);
@@ -86,24 +105,22 @@ unsigned long long get_ticks (void)
        return 0 - readl(TCNT0);
 }
 
-static unsigned long get_usec (void)
-{
-       return (0 - readl(TCNT0));
-}
-
 void udelay (unsigned long usec)
 {
-       unsigned int start = get_usec();
-       unsigned int end = start + (usec * clk_adj);
+       unsigned long long tmp;
+       ulong tmo;
+
+       tmo = usec_to_tick(usec);
+       tmp = get_ticks() + tmo;        /* get current timestamp */
 
-       while (get_usec() < end)
-               continue;
+       while (get_ticks() < tmp)       /* loop till event */
+                /*NOP*/;
 }
 
 unsigned long get_timer (unsigned long base)
 {
        /* return msec */
-       return ((get_usec() / clk_adj) / 1000) - base;
+       return tick_to_time(get_ticks()) - base;
 }
 
 void set_timer (unsigned long t)
@@ -120,5 +137,5 @@ void reset_timer (void)
 
 unsigned long get_tbclk (void)
 {
-       return CONFIG_SYS_HZ;
+       return timer_freq;
 }