diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2007-07-21 07:37:34 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-21 20:49:15 -0400 |
commit | 18de5bc4c1f1f1fa5e14f354a7603bd6e9d4e3b6 (patch) | |
tree | cb0ff399fb3f368adecf213318e32a499ada6ff9 /arch/arm | |
parent | 93da56efcf8c6a111f0349f6b7651172d4745ca0 (diff) |
clockevents: fix resume logic
We need to make sure, that the clockevent devices are resumed, before
the tick is resumed. The current resume logic does not guarantee this.
Add CLOCK_EVT_MODE_RESUME and call the set mode functions of the clock
event devices before resuming the tick / oneshot functionality.
Fixup the existing users.
Thanks to Nigel Cunningham for tracking down a long standing thinko,
which affected the jinxed VAIO.
[akpm@linux-foundation.org: xen build fix]
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: john stultz <johnstul@us.ibm.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-davinci/time.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/time.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-ixp4xx/common.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/time.c | 1 | ||||
-rw-r--r-- | arch/arm/plat-omap/timer32k.c | 2 |
5 files changed, 8 insertions, 0 deletions
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c index 4d8425de6922..e96a3dcdc1a7 100644 --- a/arch/arm/mach-davinci/time.c +++ b/arch/arm/mach-davinci/time.c | |||
@@ -285,6 +285,8 @@ static void davinci_set_mode(enum clock_event_mode mode, | |||
285 | case CLOCK_EVT_MODE_SHUTDOWN: | 285 | case CLOCK_EVT_MODE_SHUTDOWN: |
286 | t->opts = TIMER_OPTS_DISABLED; | 286 | t->opts = TIMER_OPTS_DISABLED; |
287 | break; | 287 | break; |
288 | case CLOCK_EVT_MODE_RESUME: | ||
289 | break; | ||
288 | } | 290 | } |
289 | } | 291 | } |
290 | 292 | ||
diff --git a/arch/arm/mach-imx/time.c b/arch/arm/mach-imx/time.c index 010f6fa984a6..d86d124aea22 100644 --- a/arch/arm/mach-imx/time.c +++ b/arch/arm/mach-imx/time.c | |||
@@ -159,6 +159,7 @@ static void imx_set_mode(enum clock_event_mode mode, struct clock_event_device * | |||
159 | break; | 159 | break; |
160 | case CLOCK_EVT_MODE_SHUTDOWN: | 160 | case CLOCK_EVT_MODE_SHUTDOWN: |
161 | case CLOCK_EVT_MODE_UNUSED: | 161 | case CLOCK_EVT_MODE_UNUSED: |
162 | case CLOCK_EVT_MODE_RESUME: | ||
162 | /* Left event sources disabled, no more interrupts appears */ | 163 | /* Left event sources disabled, no more interrupts appears */ |
163 | break; | 164 | break; |
164 | } | 165 | } |
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c index 8112f726ffa0..23e7fba6d3e1 100644 --- a/arch/arm/mach-ixp4xx/common.c +++ b/arch/arm/mach-ixp4xx/common.c | |||
@@ -459,6 +459,8 @@ static void ixp4xx_set_mode(enum clock_event_mode mode, | |||
459 | default: | 459 | default: |
460 | osrt = opts = 0; | 460 | osrt = opts = 0; |
461 | break; | 461 | break; |
462 | case CLOCK_EVT_MODE_RESUME: | ||
463 | break; | ||
462 | } | 464 | } |
463 | 465 | ||
464 | *IXP4XX_OSRT1 = osrt | opts; | 466 | *IXP4XX_OSRT1 = osrt | opts; |
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c index 3705d20c4e5c..237651ebae5d 100644 --- a/arch/arm/mach-omap1/time.c +++ b/arch/arm/mach-omap1/time.c | |||
@@ -156,6 +156,7 @@ static void omap_mpu_set_mode(enum clock_event_mode mode, | |||
156 | break; | 156 | break; |
157 | case CLOCK_EVT_MODE_UNUSED: | 157 | case CLOCK_EVT_MODE_UNUSED: |
158 | case CLOCK_EVT_MODE_SHUTDOWN: | 158 | case CLOCK_EVT_MODE_SHUTDOWN: |
159 | case CLOCK_EVT_MODE_RESUME: | ||
159 | break; | 160 | break; |
160 | } | 161 | } |
161 | } | 162 | } |
diff --git a/arch/arm/plat-omap/timer32k.c b/arch/arm/plat-omap/timer32k.c index 2feceec8eccd..b0af014b0e2c 100644 --- a/arch/arm/plat-omap/timer32k.c +++ b/arch/arm/plat-omap/timer32k.c | |||
@@ -156,6 +156,8 @@ static void omap_32k_timer_set_mode(enum clock_event_mode mode, | |||
156 | case CLOCK_EVT_MODE_SHUTDOWN: | 156 | case CLOCK_EVT_MODE_SHUTDOWN: |
157 | omap_32k_timer_stop(); | 157 | omap_32k_timer_stop(); |
158 | break; | 158 | break; |
159 | case CLOCK_EVT_MODE_RESUME: | ||
160 | break; | ||
159 | } | 161 | } |
160 | } | 162 | } |
161 | 163 | ||