diff options
| -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 | } |
