diff options
Diffstat (limited to 'meta/recipes-kernel/linux/linux-rp-2.6.24/pxa27x-resume.patch')
-rw-r--r-- | meta/recipes-kernel/linux/linux-rp-2.6.24/pxa27x-resume.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/meta/recipes-kernel/linux/linux-rp-2.6.24/pxa27x-resume.patch b/meta/recipes-kernel/linux/linux-rp-2.6.24/pxa27x-resume.patch new file mode 100644 index 0000000000..6447a0b104 --- /dev/null +++ b/meta/recipes-kernel/linux/linux-rp-2.6.24/pxa27x-resume.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | List: linux-arm-kernel | ||
2 | Subject: [PATCH] Fix PXA27x resume | ||
3 | From: Russell King - ARM Linux <linux@arm.linux.org.uk> | ||
4 | Date: 2008-01-21 13:53:31 | ||
5 | Message-ID: 20080121135331.GC30149@flint.arm.linux.org.uk | ||
6 | [Download message RAW] | ||
7 | |||
8 | When PXA27x wakes up, tick_resume_oneshot() tries to set a timer | ||
9 | interrupt to occur immediately. Since PXA27x requires at least | ||
10 | MIN_OSCR_DELTA, this causes us to flag an error. | ||
11 | |||
12 | tick_program_event() then increments the next event time by | ||
13 | min_delta_ns. However, by the time we get back to programming | ||
14 | the next event, the OSCR has incremented such that we fail again. | ||
15 | We repeatedly retry, but the OSCR is too fast for us - we never | ||
16 | catch up, so we never break out of the loop - resulting in us | ||
17 | never apparantly resuming. | ||
18 | |||
19 | Fix this by doubling min_delta_ns. | ||
20 | |||
21 | Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> | ||
22 | |||
23 | diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c | ||
24 | index ac0bbad..7b7c017 100644 | ||
25 | --- a/arch/arm/mach-pxa/time.c | ||
26 | +++ b/arch/arm/mach-pxa/time.c | ||
27 | @@ -169,7 +169,7 @@ static void __init pxa_timer_init(void) | ||
28 | ckevt_pxa_osmr0.max_delta_ns = | ||
29 | clockevent_delta2ns(0x7fffffff, &ckevt_pxa_osmr0); | ||
30 | ckevt_pxa_osmr0.min_delta_ns = | ||
31 | - clockevent_delta2ns(MIN_OSCR_DELTA, &ckevt_pxa_osmr0) + 1; | ||
32 | + clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_pxa_osmr0) + 1; | ||
33 | |||
34 | cksrc_pxa_oscr0.mult = | ||
35 | clocksource_hz2mult(clock_tick_rate, cksrc_pxa_oscr0.shift); | ||
36 | |||
37 | ------------------------------------------------------------------- | ||
38 | List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel | ||
39 | FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php | ||
40 | Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php | ||
41 | |||