]> git.sur5r.net Git - u-boot/blobdiff - lib_ppc/time.c
Revert "ARM: set GD_FLG_RELOC for boards skipping relocation to RAM"
[u-boot] / lib_ppc / time.c
index 5165abbe35ed2b401fa6f9f516e52b3651bb16b4..f093a57854383e50fb73d580350665e8a3559b99 100644 (file)
@@ -23,6 +23,9 @@
 
 #include <common.h>
 
+#ifndef CONFIG_WD_PERIOD
+# define CONFIG_WD_PERIOD      (10 * 1000 * 1000)      /* 10 seconds default*/
+#endif
 
 /* ------------------------------------------------------------------------- */
 
@@ -53,13 +56,18 @@ unsigned long usec2ticks(unsigned long usec)
  */
 void udelay(unsigned long usec)
 {
-       ulong ticks = usec2ticks (usec);
-
-       wait_ticks (ticks);
+       ulong ticks, kv;
+
+       do {
+               kv = usec > CONFIG_WD_PERIOD ? CONFIG_WD_PERIOD : usec;
+               ticks = usec2ticks (kv);
+               wait_ticks (ticks);
+               usec -= kv;
+       } while(usec);
 }
 
 /* ------------------------------------------------------------------------- */
-
+#ifndef CONFIG_NAND_SPL
 unsigned long ticks2usec(unsigned long ticks)
 {
        ulong tbclk = get_tbclk();
@@ -75,12 +83,12 @@ unsigned long ticks2usec(unsigned long ticks)
 
        return ((ulong)ticks);
 }
-
+#endif
 /* ------------------------------------------------------------------------- */
 
 int init_timebase (void)
 {
-#ifdef CONFIG_8xx
+#if defined(CONFIG_5xx) || defined(CONFIG_8xx)
        volatile immap_t *immap = (immap_t *) CFG_IMMR;
 
        /* unlock */
@@ -90,11 +98,10 @@ int init_timebase (void)
        /* reset */
        asm ("li 3,0 ; mttbu 3 ; mttbl 3 ;");
 
-#ifdef CONFIG_8xx
+#if defined(CONFIG_5xx) || defined(CONFIG_8xx)
        /* enable */
        immap->im_sit.sit_tbscr |= TBSCR_TBE;
 #endif
        return (0);
 }
 /* ------------------------------------------------------------------------- */
-