mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
PM / sleep: support mem_lite/mem_ultra mode
Change-Id: Iab2e11a2f63b1a3f38c1c9b6c4b675ee2660f244 Signed-off-by: XiaoDong Huang <derrick.huang@rock-chips.com>
This commit is contained in:
committed by
Tao Huang
parent
23de275f5e
commit
362667b0e3
@@ -37,8 +37,10 @@ typedef int __bitwise suspend_state_t;
|
||||
#define PM_SUSPEND_TO_IDLE ((__force suspend_state_t) 1)
|
||||
#define PM_SUSPEND_STANDBY ((__force suspend_state_t) 2)
|
||||
#define PM_SUSPEND_MEM ((__force suspend_state_t) 3)
|
||||
#define PM_SUSPEND_MEM_LITE ((__force suspend_state_t) 4)
|
||||
#define PM_SUSPEND_MEM_ULTRA ((__force suspend_state_t) 5)
|
||||
#define PM_SUSPEND_MIN PM_SUSPEND_TO_IDLE
|
||||
#define PM_SUSPEND_MAX ((__force suspend_state_t) 4)
|
||||
#define PM_SUSPEND_MAX ((__force suspend_state_t) 6)
|
||||
|
||||
enum suspend_stat_step {
|
||||
SUSPEND_FREEZE = 1,
|
||||
|
||||
@@ -615,6 +615,9 @@ static ssize_t state_store(struct kobject *kobj, struct kobj_attribute *attr,
|
||||
if (state == PM_SUSPEND_MEM)
|
||||
state = mem_sleep_current;
|
||||
|
||||
if (state == PM_SUSPEND_MEM_LITE || state == PM_SUSPEND_MEM_ULTRA)
|
||||
state = PM_SUSPEND_MEM;
|
||||
|
||||
error = pm_suspend(state);
|
||||
} else if (state == PM_SUSPEND_MAX) {
|
||||
error = hibernate();
|
||||
|
||||
@@ -46,6 +46,8 @@ static const char * const mem_sleep_labels[] = {
|
||||
[PM_SUSPEND_TO_IDLE] = "s2idle",
|
||||
[PM_SUSPEND_STANDBY] = "shallow",
|
||||
[PM_SUSPEND_MEM] = "deep",
|
||||
[PM_SUSPEND_MEM_LITE] = "lite",
|
||||
[PM_SUSPEND_MEM_ULTRA] = "ultra",
|
||||
};
|
||||
const char *mem_sleep_states[PM_SUSPEND_MAX];
|
||||
|
||||
@@ -230,6 +232,8 @@ void suspend_set_ops(const struct platform_suspend_ops *ops)
|
||||
}
|
||||
if (valid_state(PM_SUSPEND_MEM)) {
|
||||
mem_sleep_states[PM_SUSPEND_MEM] = mem_sleep_labels[PM_SUSPEND_MEM];
|
||||
mem_sleep_states[PM_SUSPEND_MEM_LITE] = mem_sleep_labels[PM_SUSPEND_MEM_LITE];
|
||||
mem_sleep_states[PM_SUSPEND_MEM_ULTRA] = mem_sleep_labels[PM_SUSPEND_MEM_ULTRA];
|
||||
if (mem_sleep_default >= PM_SUSPEND_MEM)
|
||||
mem_sleep_current = PM_SUSPEND_MEM;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user