47a464d97b
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@4570 311d38ba-8fff-0310-9ca6-ca027cbcb966
42 lines
1.7 KiB
Diff
42 lines
1.7 KiB
Diff
List: linux-arm-kernel
|
|
Subject: [PATCH] Fix PXA27x resume
|
|
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
|
|
Date: 2008-01-21 13:53:31
|
|
Message-ID: 20080121135331.GC30149@flint.arm.linux.org.uk
|
|
[Download message RAW]
|
|
|
|
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>
|
|
|
|
diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c
|
|
index ac0bbad..7b7c017 100644
|
|
--- a/arch/arm/mach-pxa/time.c
|
|
+++ b/arch/arm/mach-pxa/time.c
|
|
@@ -169,7 +169,7 @@ static void __init pxa_timer_init(void)
|
|
ckevt_pxa_osmr0.max_delta_ns =
|
|
clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0);
|
|
ckevt_pxa_osmr0.min_delta_ns =
|
|
- clockevent_delta2ns(MIN_OSCR_DELTA, &ckevt_pxa_osmr0) + 1;
|
|
+ clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_pxa_osmr0) + 1;
|
|
|
|
cksrc_pxa_oscr0.mult =
|
|
clocksource_hz2mult(clock_tick_rate, cksrc_pxa_oscr0.shift);
|
|
|
|
-------------------------------------------------------------------
|
|
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
|
|
FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
|
|
Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
|
|
|