From 9eff3cb5ad3afdcb429a2302e0ec303b07cb5604 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Fri, 15 Feb 2008 13:12:49 +0000 Subject: Added PXA27x resume fix from Russell King to linux-rp-2.6.24. --- packages/linux/linux-rp-2.6.24/pxa27x-resume.patch | 41 ++++++++++++++++++++++ packages/linux/linux-rp_2.6.24.bb | 3 +- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 packages/linux/linux-rp-2.6.24/pxa27x-resume.patch (limited to 'packages') diff --git a/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch b/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch new file mode 100644 index 0000000000..6447a0b104 --- /dev/null +++ b/packages/linux/linux-rp-2.6.24/pxa27x-resume.patch @@ -0,0 +1,41 @@ +List: linux-arm-kernel +Subject: [PATCH] Fix PXA27x resume +From: Russell King - ARM Linux +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 + +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 + diff --git a/packages/linux/linux-rp_2.6.24.bb b/packages/linux/linux-rp_2.6.24.bb index f30d88b731..c42b2d2ce7 100644 --- a/packages/linux/linux-rp_2.6.24.bb +++ b/packages/linux/linux-rp_2.6.24.bb @@ -1,6 +1,6 @@ require linux-rp.inc -PR = "r3" +PR = "r4" DEFAULT_PREFERENCE = "-1" DEFAULT_PREFERENCE_collie = "1" @@ -41,6 +41,7 @@ SRC_URI = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2 \ ${RPSRC}/poodle_pm-r5.patch;patch=1 \ ${RPSRC}/poodle_lcd_hack-r0.patch;patch=1 \ ${RPSRC}/poodle_asoc_fix-r1.patch;patch=1 \ + file://pxa27x-resume.patch;patch=1;status=external \ file://squashfs3.3.patch;patch=1;status=external \ ${RPSRC}/logo_oh-r1.patch.bz2;patch=1;status=unmergable \ ${RPSRC}/pxa-linking-bug.patch;patch=1;status=unmergable \ -- cgit v1.2.3