diff options
Diffstat (limited to 'kernel/power/hibernate.c')
| -rw-r--r-- | kernel/power/hibernate.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index 048d0b514831..1832bd264219 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c | |||
| @@ -51,18 +51,18 @@ enum { | |||
| 51 | 51 | ||
| 52 | static int hibernation_mode = HIBERNATION_SHUTDOWN; | 52 | static int hibernation_mode = HIBERNATION_SHUTDOWN; |
| 53 | 53 | ||
| 54 | static struct platform_hibernation_ops *hibernation_ops; | 54 | static const struct platform_hibernation_ops *hibernation_ops; |
| 55 | 55 | ||
| 56 | /** | 56 | /** |
| 57 | * hibernation_set_ops - set the global hibernate operations | 57 | * hibernation_set_ops - set the global hibernate operations |
| 58 | * @ops: the hibernation operations to use in subsequent hibernation transitions | 58 | * @ops: the hibernation operations to use in subsequent hibernation transitions |
| 59 | */ | 59 | */ |
| 60 | 60 | ||
| 61 | void hibernation_set_ops(struct platform_hibernation_ops *ops) | 61 | void hibernation_set_ops(const struct platform_hibernation_ops *ops) |
| 62 | { | 62 | { |
| 63 | if (ops && !(ops->begin && ops->end && ops->pre_snapshot | 63 | if (ops && !(ops->begin && ops->end && ops->pre_snapshot |
| 64 | && ops->prepare && ops->finish && ops->enter && ops->pre_restore | 64 | && ops->prepare && ops->finish && ops->enter && ops->pre_restore |
| 65 | && ops->restore_cleanup)) { | 65 | && ops->restore_cleanup && ops->leave)) { |
| 66 | WARN_ON(1); | 66 | WARN_ON(1); |
| 67 | return; | 67 | return; |
| 68 | } | 68 | } |
| @@ -278,7 +278,7 @@ static int create_image(int platform_mode) | |||
| 278 | goto Enable_irqs; | 278 | goto Enable_irqs; |
| 279 | } | 279 | } |
| 280 | 280 | ||
| 281 | if (hibernation_test(TEST_CORE) || !pm_check_wakeup_events()) | 281 | if (hibernation_test(TEST_CORE) || pm_wakeup_pending()) |
| 282 | goto Power_up; | 282 | goto Power_up; |
| 283 | 283 | ||
| 284 | in_suspend = 1; | 284 | in_suspend = 1; |
| @@ -516,7 +516,7 @@ int hibernation_platform_enter(void) | |||
| 516 | 516 | ||
| 517 | local_irq_disable(); | 517 | local_irq_disable(); |
| 518 | sysdev_suspend(PMSG_HIBERNATE); | 518 | sysdev_suspend(PMSG_HIBERNATE); |
| 519 | if (!pm_check_wakeup_events()) { | 519 | if (pm_wakeup_pending()) { |
| 520 | error = -EAGAIN; | 520 | error = -EAGAIN; |
| 521 | goto Power_up; | 521 | goto Power_up; |
| 522 | } | 522 | } |
| @@ -647,6 +647,7 @@ int hibernate(void) | |||
| 647 | swsusp_free(); | 647 | swsusp_free(); |
| 648 | if (!error) | 648 | if (!error) |
| 649 | power_down(); | 649 | power_down(); |
| 650 | in_suspend = 0; | ||
| 650 | pm_restore_gfp_mask(); | 651 | pm_restore_gfp_mask(); |
| 651 | } else { | 652 | } else { |
| 652 | pr_debug("PM: Image restored successfully.\n"); | 653 | pr_debug("PM: Image restored successfully.\n"); |
