]> git.sur5r.net Git - u-boot/blobdiff - arch/arm/cpu/armv7/zynq/timer.c
clock_am43xx:Set the MAC clock to /5 for OPP100
[u-boot] / arch / arm / cpu / armv7 / zynq / timer.c
index 78e30a6ddcf94f8ef7c26d0f6fa84b2753133392..303dbcfceafb3fe6d515a6a091c7ece6061561db 100644 (file)
@@ -56,7 +56,7 @@ int timer_init(void)
                        (TIMER_PRESCALE << SCUTIMER_CONTROL_PRESCALER_SHIFT) |
                        SCUTIMER_CONTROL_ENABLE_MASK;
 
-       gd->arch.timer_rate_hz = (gd->cpu_clk / 2) / TIMER_PRESCALE;
+       gd->arch.timer_rate_hz = (gd->cpu_clk / 2) / (TIMER_PRESCALE + 1);
 
        /* Load the timer counter register */
        writel(0xFFFFFFFF, &timer_base->load);
@@ -93,7 +93,7 @@ ulong get_timer_masked(void)
                gd->arch.tbl += gd->arch.lastinc - now;
        } else {
                /* We have an overflow ... */
-               gd->arch.tbl += gd->arch.lastinc + TIMER_LOAD_VAL - now;
+               gd->arch.tbl += gd->arch.lastinc + TIMER_LOAD_VAL - now + 1;
        }
        gd->arch.lastinc = now;
 
@@ -110,7 +110,8 @@ void __udelay(unsigned long usec)
        if (usec == 0)
                return;
 
-       countticks = lldiv(gd->arch.timer_rate_hz * usec, 1000000);
+       countticks = lldiv(((unsigned long long)gd->arch.timer_rate_hz * usec),
+                          1000000);
 
        /* decrementing timer */
        timeend = readl(&timer_base->counter) - countticks;