ARM: davinci: cpuidle: fix wrong enter function
The davinci_enter_idle is called from the cpuidle with the cpuidle_wrap_enter function. This one does the time compution for entering and exiting the idle function and then we call again cpuidle_wrap_enter for cpu_do_idle. This is wrong, we are calling recursively cpuidle_wrap_enter for nothing and furthermore reenabling the local irq. Remove this and replace it by the cpu_do_idle function. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Acked-by: Sekhar Nori <nsekhar@ti.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
0697598db5
commit
c062d44311
|
@ -50,14 +50,10 @@ static void davinci_save_ddr_power(int enter, bool pdown)
|
||||||
|
|
||||||
/* Actual code that puts the SoC in different idle states */
|
/* Actual code that puts the SoC in different idle states */
|
||||||
static int davinci_enter_idle(struct cpuidle_device *dev,
|
static int davinci_enter_idle(struct cpuidle_device *dev,
|
||||||
struct cpuidle_driver *drv,
|
struct cpuidle_driver *drv, int index)
|
||||||
int index)
|
|
||||||
{
|
{
|
||||||
davinci_save_ddr_power(1, ddr2_pdown);
|
davinci_save_ddr_power(1, ddr2_pdown);
|
||||||
|
cpu_do_idle();
|
||||||
index = cpuidle_wrap_enter(dev, drv, index,
|
|
||||||
arm_cpuidle_simple_enter);
|
|
||||||
|
|
||||||
davinci_save_ddr_power(0, ddr2_pdown);
|
davinci_save_ddr_power(0, ddr2_pdown);
|
||||||
|
|
||||||
return index;
|
return index;
|
||||||
|
|
Loading…
Reference in New Issue