mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 17:18:59 +00:00
46 lines
1.3 KiB
Diff
46 lines
1.3 KiB
Diff
|
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
|
||
|
|