#endif
 
 int timer_load_val = 0;
+static ulong timer_clk;
 
 /* macro to read the 16 bit timer */
 static inline ulong READ_TIMER(void)
                 * @33.25MHz and 15625 @ 50 MHz
                 */
                timer_load_val = get_PCLK()/(2 * 16 * 100);
+               timer_clk = get_PCLK() / (2 * 16);
        }
        /* load value for 10 ms timeout */
        lastdec = timers->TCNTB4 = timer_load_val;
 void udelay (unsigned long usec)
 {
        ulong tmo;
-       ulong start = get_timer(0);
+       ulong start = get_ticks();
 
        tmo = usec / 1000;
        tmo *= (timer_load_val * 100);
        tmo /= 1000;
 
-       while ((ulong)(get_timer_masked () - start) < tmo)
+       while ((ulong) (get_ticks() - start) < tmo)
                /*NOP*/;
 }
 
 
 ulong get_timer_masked (void)
 {
-       ulong now = READ_TIMER();
-
-       if (lastdec >= now) {
-               /* normal mode */
-               timestamp += lastdec - now;
-       } else {
-               /* we have an overflow ... */
-               timestamp += lastdec + timer_load_val - now;
-       }
-       lastdec = now;
+       ulong tmr = get_ticks();
 
-       return timestamp;
+       return tmr / (timer_clk / CONFIG_SYS_HZ);
 }
 
 void udelay_masked (unsigned long usec)
                tmo /= (1000*1000);
        }
 
-       endtime = get_timer_masked () + tmo;
+       endtime = get_ticks() + tmo;
 
        do {
-               ulong now = get_timer_masked ();
+               ulong now = get_ticks();
                diff = endtime - now;
        } while (diff >= 0);
 }
  */
 unsigned long long get_ticks(void)
 {
-       return get_timer(0);
+       ulong now = READ_TIMER();
+
+       if (lastdec >= now) {
+               /* normal mode */
+               timestamp += lastdec - now;
+       } else {
+               /* we have an overflow ... */
+               timestamp += lastdec + timer_load_val - now;
+       }
+       lastdec = now;
+
+       return timestamp;
 }
 
 /*
 
 
 #define        CONFIG_SYS_LOAD_ADDR            0x33000000      /* default load address */
 
-/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-/* it to wrap 100 times (total 1562500) to get 1 sec. */
-#define        CONFIG_SYS_HZ                   1562500
+#define        CONFIG_SYS_HZ                   1000
 
 /* valid baudrates */
 #define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200 }
 
 
 #define        CONFIG_SYS_LOAD_ADDR            0x0cf00000      /* default load address */
 
-/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-/* it to wrap 100 times (total 1562500) to get 1 sec. */
-#define        CONFIG_SYS_HZ                   1562500
+#define        CONFIG_SYS_HZ                   1000
 
 /* valid baudrates */
 #define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200 }
 
 
 #define        CONFIG_SYS_LOAD_ADDR            0x33000000      /* default load address */
 
-/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-/* it to wrap 100 times (total 1562500) to get 1 sec. */
-#define        CONFIG_SYS_HZ                   1562500
+#define        CONFIG_SYS_HZ                   1000
 
 /* valid baudrates */
 #define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200 }
 
 
 #define        CONFIG_SYS_LOAD_ADDR            0x0CF00000      /* default load address */
 
-#ifdef CONFIG_TRAB_50MHZ
-/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */
-/* it to wrap 100 times (total 1562500) to get 1 sec. */
-/* this should _really_ be calculated !! */
-#define        CONFIG_SYS_HZ                   1562500
-#else
-/* the PWM TImer 4 uses a counter of 10390 for 10 ms, so we need */
-/* it to wrap 100 times (total 1039000) to get 1 sec. */
-/* this should _really_ be calculated !! */
-#define        CONFIG_SYS_HZ                   1039000
-#endif
+#define        CONFIG_SYS_HZ                   1000
 
 /* valid baudrates */
 #define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200 }