aboutsummaryrefslogtreecommitdiffstats
path: root/arch/avr32/kernel/process.c
diff options
context:
space:
mode:
authorHans-Christian Egtvedt <hcegtvedt@atmel.com>2007-02-26 07:50:43 -0500
committerHaavard Skinnemoen <hskinnemoen@atmel.com>2007-04-27 07:44:12 -0400
commit19b7ce8bad718a2850ea19aeb7383f1728596c24 (patch)
tree1fef17c37eaf90231a497b92dd49565e56986b6c /arch/avr32/kernel/process.c
parent7760989e5e2900e484e9115e6e690c6ce0b0221c (diff)
[AVR32] Put cpu in sleep 0 when idle.
This patch puts the CPU in sleep 0 when doing nothing, idle. This will turn of the CPU clock and thus save power. The CPU is waken again when an interrupt occurs. Signed-off-by: Hans-Christian Egtvedt <hcegtvedt@atmel.com> Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Diffstat (limited to 'arch/avr32/kernel/process.c')
-rw-r--r--arch/avr32/kernel/process.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c
index 0b4325946a41..4f8d2d474740 100644
--- a/arch/avr32/kernel/process.c
+++ b/arch/avr32/kernel/process.c
@@ -19,6 +19,8 @@
19void (*pm_power_off)(void) = NULL; 19void (*pm_power_off)(void) = NULL;
20EXPORT_SYMBOL(pm_power_off); 20EXPORT_SYMBOL(pm_power_off);
21 21
22extern void cpu_idle_sleep(void);
23
22/* 24/*
23 * This file handles the architecture-dependent parts of process handling.. 25 * This file handles the architecture-dependent parts of process handling..
24 */ 26 */
@@ -27,9 +29,8 @@ void cpu_idle(void)
27{ 29{
28 /* endless idle loop with no priority at all */ 30 /* endless idle loop with no priority at all */
29 while (1) { 31 while (1) {
30 /* TODO: Enter sleep mode */
31 while (!need_resched()) 32 while (!need_resched())
32 cpu_relax(); 33 cpu_idle_sleep();
33 preempt_enable_no_resched(); 34 preempt_enable_no_resched();
34 schedule(); 35 schedule();
35 preempt_disable(); 36 preempt_disable();