cpuidle / imx6 : use CPUIDLE_FLAG_TIMER_STOP flag
Use the CPUIDLE_FLAG_TIMER_STOP and let the cpuidle framework to handle the CLOCK_EVT_NOTIFY_BROADCAST_ENTER/EXIT when entering this state. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
cb7094e848
commit
8de46eff65
|
@ -21,10 +21,6 @@ static DEFINE_SPINLOCK(master_lock);
|
||||||
static int imx6q_enter_wait(struct cpuidle_device *dev,
|
static int imx6q_enter_wait(struct cpuidle_device *dev,
|
||||||
struct cpuidle_driver *drv, int index)
|
struct cpuidle_driver *drv, int index)
|
||||||
{
|
{
|
||||||
int cpu = dev->cpu;
|
|
||||||
|
|
||||||
clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &cpu);
|
|
||||||
|
|
||||||
if (atomic_inc_return(&master) == num_online_cpus()) {
|
if (atomic_inc_return(&master) == num_online_cpus()) {
|
||||||
/*
|
/*
|
||||||
* With this lock, we prevent other cpu to exit and enter
|
* With this lock, we prevent other cpu to exit and enter
|
||||||
|
@ -43,7 +39,6 @@ idle:
|
||||||
cpu_do_idle();
|
cpu_do_idle();
|
||||||
done:
|
done:
|
||||||
atomic_dec(&master);
|
atomic_dec(&master);
|
||||||
clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &cpu);
|
|
||||||
|
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +65,8 @@ static struct cpuidle_driver imx6q_cpuidle_driver = {
|
||||||
{
|
{
|
||||||
.exit_latency = 50,
|
.exit_latency = 50,
|
||||||
.target_residency = 75,
|
.target_residency = 75,
|
||||||
.flags = CPUIDLE_FLAG_TIME_VALID,
|
.flags = CPUIDLE_FLAG_TIME_VALID |
|
||||||
|
CPUIDLE_FLAG_TIMER_STOP,
|
||||||
.enter = imx6q_enter_wait,
|
.enter = imx6q_enter_wait,
|
||||||
.name = "WAIT",
|
.name = "WAIT",
|
||||||
.desc = "Clock off",
|
.desc = "Clock off",
|
||||||
|
|
Loading…
Reference in New Issue