diff options
Diffstat (limited to 'drivers/acpi/sleep.c')
-rw-r--r-- | drivers/acpi/sleep.c | 29 |
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 | ||
50 | static int tts_notify_reboot(struct notifier_block *this, | 50 | static 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 | |||
64 | static 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 | ||
57 | static struct notifier_block tts_notifier = { | 74 | static 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 | } |