|
@@ -56,7 +56,11 @@ static void cpuidle_idle_call(void)
|
|
|
if (pm_idle_old)
|
|
|
pm_idle_old();
|
|
|
else
|
|
|
+#if defined(CONFIG_ARCH_HAS_DEFAULT_IDLE)
|
|
|
+ default_idle();
|
|
|
+#else
|
|
|
local_irq_enable();
|
|
|
+#endif
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -67,8 +71,11 @@ static void cpuidle_idle_call(void)
|
|
|
target_state = &dev->states[next_state];
|
|
|
|
|
|
/* enter the state and update stats */
|
|
|
- dev->last_residency = target_state->enter(dev, target_state);
|
|
|
dev->last_state = target_state;
|
|
|
+ dev->last_residency = target_state->enter(dev, target_state);
|
|
|
+ if (dev->last_state)
|
|
|
+ target_state = dev->last_state;
|
|
|
+
|
|
|
target_state->time += (unsigned long long)dev->last_residency;
|
|
|
target_state->usage++;
|
|
|
|