aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/power/suspend.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/power/suspend.c')
-rw-r--r--kernel/power/suspend.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
index 0acab9d7f96f..1e7f5da648d9 100644
--- a/kernel/power/suspend.c
+++ b/kernel/power/suspend.c
@@ -118,10 +118,18 @@ static bool valid_state(suspend_state_t state)
118 */ 118 */
119static bool relative_states; 119static bool relative_states;
120 120
121void __init pm_states_init(void)
122{
123 /*
124 * freeze state should be supported even without any suspend_ops,
125 * initialize pm_states accordingly here
126 */
127 pm_states[PM_SUSPEND_FREEZE] = pm_labels[relative_states ? 0 : 2];
128}
129
121static int __init sleep_states_setup(char *str) 130static int __init sleep_states_setup(char *str)
122{ 131{
123 relative_states = !strncmp(str, "1", 1); 132 relative_states = !strncmp(str, "1", 1);
124 pm_states[PM_SUSPEND_FREEZE] = pm_labels[relative_states ? 0 : 2];
125 return 1; 133 return 1;
126} 134}
127 135
@@ -211,7 +219,7 @@ static int platform_suspend_begin(suspend_state_t state)
211{ 219{
212 if (state == PM_SUSPEND_FREEZE && freeze_ops && freeze_ops->begin) 220 if (state == PM_SUSPEND_FREEZE && freeze_ops && freeze_ops->begin)
213 return freeze_ops->begin(); 221 return freeze_ops->begin();
214 else if (suspend_ops->begin) 222 else if (suspend_ops && suspend_ops->begin)
215 return suspend_ops->begin(state); 223 return suspend_ops->begin(state);
216 else 224 else
217 return 0; 225 return 0;
@@ -221,7 +229,7 @@ static void platform_resume_end(suspend_state_t state)
221{ 229{
222 if (state == PM_SUSPEND_FREEZE && freeze_ops && freeze_ops->end) 230 if (state == PM_SUSPEND_FREEZE && freeze_ops && freeze_ops->end)
223 freeze_ops->end(); 231 freeze_ops->end();
224 else if (suspend_ops->end) 232 else if (suspend_ops && suspend_ops->end)
225 suspend_ops->end(); 233 suspend_ops->end();
226} 234}
227 235