diff options
author | mirko <mirko@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-12-13 01:54:56 +0000 |
---|---|---|
committer | mirko <mirko@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-12-13 01:54:56 +0000 |
commit | a95f9f92e2953d5829a29e95644dc4c4bc93f590 (patch) | |
tree | 01f2bf78edb2e3bb1466df9bca72e068632d0e74 /target/linux/s3c24xx/patches-2.6.26/1004-resume-timers-wq.patch.patch | |
parent | 9fa649271dbc9c83417488203aeb1668a0238c54 (diff) |
change prefix for kernelpatchbase 2.6.26
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13619 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.26/1004-resume-timers-wq.patch.patch')
-rwxr-xr-x | target/linux/s3c24xx/patches-2.6.26/1004-resume-timers-wq.patch.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.26/1004-resume-timers-wq.patch.patch b/target/linux/s3c24xx/patches-2.6.26/1004-resume-timers-wq.patch.patch new file mode 100755 index 0000000000..a67a5fea4f --- /dev/null +++ b/target/linux/s3c24xx/patches-2.6.26/1004-resume-timers-wq.patch.patch @@ -0,0 +1,45 @@ +From 62bc0d984e5c2778e09094ba2e4d885903c6c35b Mon Sep 17 00:00:00 2001 +From: mokopatches <mokopatches@openmoko.org> +Date: Wed, 16 Jul 2008 14:44:10 +0100 +Subject: [PATCH] resume-timers-wq.patch + The initialization of clocks uses mutexes, but we execute the resume in + an interrupt context. We therefore have to hand this task to a non-interrupt. + +Adapted from a patch by Andy Green. +--- + arch/arm/plat-s3c24xx/time.c | 18 +++++++++++++++++- + 1 files changed, 17 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/plat-s3c24xx/time.c b/arch/arm/plat-s3c24xx/time.c +index 766473b..f8d307b 100644 +--- a/arch/arm/plat-s3c24xx/time.c ++++ b/arch/arm/plat-s3c24xx/time.c +@@ -253,8 +253,24 @@ static void __init s3c2410_timer_init (void) + setup_irq(IRQ_TIMER4, &s3c2410_timer_irq); + } + ++static void s3c2410_timer_resume_work(struct work_struct *work) ++{ ++ s3c2410_timer_setup(); ++} ++ ++static void s3c2410_timer_resume(void) ++{ ++ static DECLARE_WORK(work, s3c2410_timer_resume_work); ++ int res; ++ ++ res = schedule_work(&work); ++ if (!res) ++ printk(KERN_ERR ++ "s3c2410_timer_resume_work already queued ???\n"); ++} ++ + struct sys_timer s3c24xx_timer = { + .init = s3c2410_timer_init, + .offset = s3c2410_gettimeoffset, +- .resume = s3c2410_timer_setup ++ .resume = s3c2410_timer_resume, + }; +-- +1.5.6.3 + |