mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
Merge branch 'pm-sleep'
* pm-sleep: ACPI / PM: Check low power idle constraints for debug only PM / s2idle: Rename platform operations structure PM / s2idle: Rename ->enter_freeze to ->enter_s2idle PM / s2idle: Rename freeze_state enum and related items PM / s2idle: Rename PM_SUSPEND_FREEZE to PM_SUSPEND_TO_IDLE ACPI / PM: Prefer suspend-to-idle over S3 on some systems platform/x86: intel-hid: Wake up Dell Latitude 7275 from suspend-to-idle PM / suspend: Define pr_fmt() in suspend.c PM / suspend: Use mem_sleep_labels[] strings in messages PM / sleep: Put pm_test under CONFIG_PM_SLEEP_DEBUG PM / sleep: Check pm_wakeup_pending() in __device_suspend_noirq() PM / core: Add error argument to dpm_show_time() PM / core: Split dpm_suspend_noirq() and dpm_resume_noirq() PM / s2idle: Rearrange the main suspend-to-idle loop PM / timekeeping: Print debug messages when requested PM / sleep: Mark suspend/hibernation start and finish PM / sleep: Do not print debug messages by default PM / suspend: Export pm_suspend_target_state
This commit is contained in:
commit
7b01463e51
22 changed files with 622 additions and 291 deletions
|
|
@ -77,7 +77,7 @@ static int find_deepest_state(struct cpuidle_driver *drv,
|
|||
struct cpuidle_device *dev,
|
||||
unsigned int max_latency,
|
||||
unsigned int forbidden_flags,
|
||||
bool freeze)
|
||||
bool s2idle)
|
||||
{
|
||||
unsigned int latency_req = 0;
|
||||
int i, ret = 0;
|
||||
|
|
@ -89,7 +89,7 @@ static int find_deepest_state(struct cpuidle_driver *drv,
|
|||
if (s->disabled || su->disable || s->exit_latency <= latency_req
|
||||
|| s->exit_latency > max_latency
|
||||
|| (s->flags & forbidden_flags)
|
||||
|| (freeze && !s->enter_freeze))
|
||||
|| (s2idle && !s->enter_s2idle))
|
||||
continue;
|
||||
|
||||
latency_req = s->exit_latency;
|
||||
|
|
@ -128,7 +128,7 @@ int cpuidle_find_deepest_state(struct cpuidle_driver *drv,
|
|||
}
|
||||
|
||||
#ifdef CONFIG_SUSPEND
|
||||
static void enter_freeze_proper(struct cpuidle_driver *drv,
|
||||
static void enter_s2idle_proper(struct cpuidle_driver *drv,
|
||||
struct cpuidle_device *dev, int index)
|
||||
{
|
||||
/*
|
||||
|
|
@ -143,7 +143,7 @@ static void enter_freeze_proper(struct cpuidle_driver *drv,
|
|||
* suspended is generally unsafe.
|
||||
*/
|
||||
stop_critical_timings();
|
||||
drv->states[index].enter_freeze(dev, drv, index);
|
||||
drv->states[index].enter_s2idle(dev, drv, index);
|
||||
WARN_ON(!irqs_disabled());
|
||||
/*
|
||||
* timekeeping_resume() that will be called by tick_unfreeze() for the
|
||||
|
|
@ -155,25 +155,25 @@ static void enter_freeze_proper(struct cpuidle_driver *drv,
|
|||
}
|
||||
|
||||
/**
|
||||
* cpuidle_enter_freeze - Enter an idle state suitable for suspend-to-idle.
|
||||
* cpuidle_enter_s2idle - Enter an idle state suitable for suspend-to-idle.
|
||||
* @drv: cpuidle driver for the given CPU.
|
||||
* @dev: cpuidle device for the given CPU.
|
||||
*
|
||||
* If there are states with the ->enter_freeze callback, find the deepest of
|
||||
* If there are states with the ->enter_s2idle callback, find the deepest of
|
||||
* them and enter it with frozen tick.
|
||||
*/
|
||||
int cpuidle_enter_freeze(struct cpuidle_driver *drv, struct cpuidle_device *dev)
|
||||
int cpuidle_enter_s2idle(struct cpuidle_driver *drv, struct cpuidle_device *dev)
|
||||
{
|
||||
int index;
|
||||
|
||||
/*
|
||||
* Find the deepest state with ->enter_freeze present, which guarantees
|
||||
* Find the deepest state with ->enter_s2idle present, which guarantees
|
||||
* that interrupts won't be enabled when it exits and allows the tick to
|
||||
* be frozen safely.
|
||||
*/
|
||||
index = find_deepest_state(drv, dev, UINT_MAX, 0, true);
|
||||
if (index > 0)
|
||||
enter_freeze_proper(drv, dev, index);
|
||||
enter_s2idle_proper(drv, dev, index);
|
||||
|
||||
return index;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,9 +41,9 @@ static int init_state_node(struct cpuidle_state *idle_state,
|
|||
/*
|
||||
* Since this is not a "coupled" state, it's safe to assume interrupts
|
||||
* won't be enabled when it exits allowing the tick to be frozen
|
||||
* safely. So enter() can be also enter_freeze() callback.
|
||||
* safely. So enter() can be also enter_s2idle() callback.
|
||||
*/
|
||||
idle_state->enter_freeze = match_id->data;
|
||||
idle_state->enter_s2idle = match_id->data;
|
||||
|
||||
err = of_property_read_u32(state_node, "wakeup-latency-us",
|
||||
&idle_state->exit_latency);
|
||||
|
|
|
|||
Loading…
Reference in a new issue