diff options
Diffstat (limited to 'drivers/cpuidle/cpuidle.c')
| -rw-r--r-- | drivers/cpuidle/cpuidle.c | 17 | 
1 files changed, 4 insertions, 13 deletions
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index fb4a7dd57f9..e1f6860e069 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c @@ -69,24 +69,15 @@ int cpuidle_play_dead(void)  {  	struct cpuidle_device *dev = __this_cpu_read(cpuidle_devices);  	struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev); -	int i, dead_state = -1; -	int power_usage = INT_MAX; +	int i;  	if (!drv)  		return -ENODEV;  	/* Find lowest-power state that supports long-term idle */ -	for (i = CPUIDLE_DRIVER_STATE_START; i < drv->state_count; i++) { -		struct cpuidle_state *s = &drv->states[i]; - -		if (s->power_usage < power_usage && s->enter_dead) { -			power_usage = s->power_usage; -			dead_state = i; -		} -	} - -	if (dead_state != -1) -		return drv->states[dead_state].enter_dead(dev, dead_state); +	for (i = drv->state_count - 1; i >= CPUIDLE_DRIVER_STATE_START; i--) +		if (drv->states[i].enter_dead) +			return drv->states[i].enter_dead(dev, i);  	return -ENODEV;  }  |