Commit dd01b2fc79a567ae03d0c96ddf61eb4de729d36d
Committed by
Russell King
1 parent
fd8e7af8d0
Exists in
master
and in
7 other branches
[ARM] pxa: fix PXA27x resume
When PXA27x wakes up, tick_resume_oneshot() tries to set a timer interrupt to occur immediately. Since PXA27x requires at least MIN_OSCR_DELTA, this causes us to flag an error. tick_program_event() then increments the next event time by min_delta_ns. However, by the time we get back to programming the next event, the OSCR has incremented such that we fail again. We repeatedly retry, but the OSCR is too fast for us - we never catch up, so we never break out of the loop - resulting in us never apparantly resuming. Fix this by doubling min_delta_ns. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff
arch/arm/mach-pxa/time.c
... | ... | @@ -169,7 +169,7 @@ |
169 | 169 | ckevt_pxa_osmr0.max_delta_ns = |
170 | 170 | clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0); |
171 | 171 | ckevt_pxa_osmr0.min_delta_ns = |
172 | - clockevent_delta2ns(MIN_OSCR_DELTA, &ckevt_pxa_osmr0) + 1; | |
172 | + clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_pxa_osmr0) + 1; | |
173 | 173 | |
174 | 174 | cksrc_pxa_oscr0.mult = |
175 | 175 | clocksource_hz2mult(clock_tick_rate, cksrc_pxa_oscr0.shift); |