changed Makefile and profiles, added patches for kernel 2.6.24
[openwrt.git] / target / linux / s3c24xx / patches-2.6.24 / 1007-resume-timers-wq.patch.patch
diff --git a/target/linux/s3c24xx/patches-2.6.24/1007-resume-timers-wq.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1007-resume-timers-wq.patch.patch
new file mode 100644 (file)
index 0000000..e7ce35e
--- /dev/null
@@ -0,0 +1,45 @@
+From fa1e8c2fc849472cddb65bc3138944382b320589 Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 4 Apr 2008 11:30:15 +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 2ec1daa..c11d0dd 100644
+--- a/arch/arm/plat-s3c24xx/time.c
++++ b/arch/arm/plat-s3c24xx/time.c
+@@ -255,8 +255,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.5
+