From: Michal Simek Date: Fri, 22 Nov 2013 14:29:38 +0000 (+0100) Subject: zynq: timer: Fix hangs if network activity attempted after about one hour X-Git-Url: http://git.dujemihanovic.xyz/login.html?a=commitdiff_plain;h=2826fd320cf364077ccc64e645af468adcbe567e;p=u-boot.git zynq: timer: Fix hangs if network activity attempted after about one hour Cortex-A9 MPCore TRM' from ARM (ARM DDI 0407G ID072711) describes in the section 4.1.1 how this value calculation should be done. This patch fixes the problem if network activity such as ping or tftp is attempted after u-boot has been idle for an hour, it hangs, and cannot control-C out of it. Signed-off-by: Uday Hegde Signed-off-by: Michal Simek --- diff --git a/arch/arm/cpu/armv7/zynq/timer.c b/arch/arm/cpu/armv7/zynq/timer.c index 78e30a6ddc..174e5a18f6 100644 --- a/arch/arm/cpu/armv7/zynq/timer.c +++ b/arch/arm/cpu/armv7/zynq/timer.c @@ -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;