aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpuidle
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/cpuidle')
-rw-r--r--drivers/cpuidle/cpuidle.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index 2e3148499368..5bed73329ef8 100644
--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -57,7 +57,11 @@ static void cpuidle_idle_call(void)
57 if (pm_idle_old) 57 if (pm_idle_old)
58 pm_idle_old(); 58 pm_idle_old();
59 else 59 else
60#if defined(CONFIG_ARCH_HAS_DEFAULT_IDLE)
61 default_idle();
62#else
60 local_irq_enable(); 63 local_irq_enable();
64#endif
61 return; 65 return;
62 } 66 }
63 67
@@ -74,8 +78,11 @@ static void cpuidle_idle_call(void)
74 target_state = &dev->states[next_state]; 78 target_state = &dev->states[next_state];
75 79
76 /* enter the state and update stats */ 80 /* enter the state and update stats */
77 dev->last_residency = target_state->enter(dev, target_state);
78 dev->last_state = target_state; 81 dev->last_state = target_state;
82 dev->last_residency = target_state->enter(dev, target_state);
83 if (dev->last_state)
84 target_state = dev->last_state;
85
79 target_state->time += (unsigned long long)dev->last_residency; 86 target_state->time += (unsigned long long)dev->last_residency;
80 target_state->usage++; 87 target_state->usage++;
81 88