aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/sleep.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/sleep.c')
-rw-r--r--drivers/acpi/sleep.c29
1 files changed, 23 insertions, 6 deletions
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 7a2e4d45b266..2b38c1bb0446 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -47,15 +47,32 @@ static void acpi_sleep_tts_switch(u32 acpi_state)
47 } 47 }
48} 48}
49 49
50static int tts_notify_reboot(struct notifier_block *this, 50static void acpi_sleep_pts_switch(u32 acpi_state)
51{
52 acpi_status status;
53
54 status = acpi_execute_simple_method(NULL, "\\_PTS", acpi_state);
55 if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
56 /*
57 * OS can't evaluate the _PTS object correctly. Some warning
58 * message will be printed. But it won't break anything.
59 */
60 printk(KERN_NOTICE "Failure in evaluating _PTS object\n");
61 }
62}
63
64static int sleep_notify_reboot(struct notifier_block *this,
51 unsigned long code, void *x) 65 unsigned long code, void *x)
52{ 66{
53 acpi_sleep_tts_switch(ACPI_STATE_S5); 67 acpi_sleep_tts_switch(ACPI_STATE_S5);
68
69 acpi_sleep_pts_switch(ACPI_STATE_S5);
70
54 return NOTIFY_DONE; 71 return NOTIFY_DONE;
55} 72}
56 73
57static struct notifier_block tts_notifier = { 74static struct notifier_block sleep_notifier = {
58 .notifier_call = tts_notify_reboot, 75 .notifier_call = sleep_notify_reboot,
59 .next = NULL, 76 .next = NULL,
60 .priority = 0, 77 .priority = 0,
61}; 78};
@@ -899,9 +916,9 @@ int __init acpi_sleep_init(void)
899 pr_info(PREFIX "(supports%s)\n", supported); 916 pr_info(PREFIX "(supports%s)\n", supported);
900 917
901 /* 918 /*
902 * Register the tts_notifier to reboot notifier list so that the _TTS 919 * Register the sleep_notifier to reboot notifier list so that the _TTS
903 * object can also be evaluated when the system enters S5. 920 * and _PTS object can also be evaluated when the system enters S5.
904 */ 921 */
905 register_reboot_notifier(&tts_notifier); 922 register_reboot_notifier(&sleep_notifier);
906 return 0; 923 return 0;
907} 924}