aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/acpi/acpica/achware.h12
-rw-r--r--drivers/acpi/acpica/hwesleep.c21
-rw-r--r--drivers/acpi/acpica/hwsleep.c21
-rw-r--r--drivers/acpi/acpica/hwxfsleep.c35
-rw-r--r--drivers/acpi/sleep.c13
-rw-r--r--include/acpi/acpixf.h4
-rw-r--r--include/acpi/actypes.h9
7 files changed, 73 insertions, 42 deletions
diff --git a/drivers/acpi/acpica/achware.h b/drivers/acpi/acpica/achware.h
index 5de4ec72766d..5ccb99ae3a6f 100644
--- a/drivers/acpi/acpica/achware.h
+++ b/drivers/acpi/acpica/achware.h
@@ -83,22 +83,22 @@ acpi_status acpi_hw_clear_acpi_status(void);
83/* 83/*
84 * hwsleep - sleep/wake support (Legacy sleep registers) 84 * hwsleep - sleep/wake support (Legacy sleep registers)
85 */ 85 */
86acpi_status acpi_hw_legacy_sleep(u8 sleep_state); 86acpi_status acpi_hw_legacy_sleep(u8 sleep_state, u8 flags);
87 87
88acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state); 88acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state, u8 flags);
89 89
90acpi_status acpi_hw_legacy_wake(u8 sleep_state); 90acpi_status acpi_hw_legacy_wake(u8 sleep_state, u8 flags);
91 91
92/* 92/*
93 * hwesleep - sleep/wake support (Extended FADT-V5 sleep registers) 93 * hwesleep - sleep/wake support (Extended FADT-V5 sleep registers)
94 */ 94 */
95void acpi_hw_execute_sleep_method(char *method_name, u32 integer_argument); 95void acpi_hw_execute_sleep_method(char *method_name, u32 integer_argument);
96 96
97acpi_status acpi_hw_extended_sleep(u8 sleep_state); 97acpi_status acpi_hw_extended_sleep(u8 sleep_state, u8 flags);
98 98
99acpi_status acpi_hw_extended_wake_prep(u8 sleep_state); 99acpi_status acpi_hw_extended_wake_prep(u8 sleep_state, u8 flags);
100 100
101acpi_status acpi_hw_extended_wake(u8 sleep_state); 101acpi_status acpi_hw_extended_wake(u8 sleep_state, u8 flags);
102 102
103/* 103/*
104 * hwvalid - Port I/O with validation 104 * hwvalid - Port I/O with validation
diff --git a/drivers/acpi/acpica/hwesleep.c b/drivers/acpi/acpica/hwesleep.c
index 6cbc4e10bfa8..1c409e82c461 100644
--- a/drivers/acpi/acpica/hwesleep.c
+++ b/drivers/acpi/acpica/hwesleep.c
@@ -103,6 +103,7 @@ void acpi_hw_execute_sleep_method(char *method_pathname, u32 integer_argument)
103 * FUNCTION: acpi_hw_extended_sleep 103 * FUNCTION: acpi_hw_extended_sleep
104 * 104 *
105 * PARAMETERS: sleep_state - Which sleep state to enter 105 * PARAMETERS: sleep_state - Which sleep state to enter
106 * Flags - ACPI_EXECUTE_GTS to run optional method
106 * 107 *
107 * RETURN: Status 108 * RETURN: Status
108 * 109 *
@@ -112,7 +113,7 @@ void acpi_hw_execute_sleep_method(char *method_pathname, u32 integer_argument)
112 * 113 *
113 ******************************************************************************/ 114 ******************************************************************************/
114 115
115acpi_status acpi_hw_extended_sleep(u8 sleep_state) 116acpi_status acpi_hw_extended_sleep(u8 sleep_state, u8 flags)
116{ 117{
117 acpi_status status; 118 acpi_status status;
118 u8 sleep_type_value; 119 u8 sleep_type_value;
@@ -136,9 +137,11 @@ acpi_status acpi_hw_extended_sleep(u8 sleep_state)
136 137
137 acpi_gbl_system_awake_and_running = FALSE; 138 acpi_gbl_system_awake_and_running = FALSE;
138 139
139 /* Execute the _GTS method (Going To Sleep) */ 140 /* Optionally execute _GTS (Going To Sleep) */
140 141
141 acpi_hw_execute_sleep_method(METHOD_PATHNAME__GTS, sleep_state); 142 if (flags & ACPI_EXECUTE_GTS) {
143 acpi_hw_execute_sleep_method(METHOD_PATHNAME__GTS, sleep_state);
144 }
142 145
143 /* Flush caches, as per ACPI specification */ 146 /* Flush caches, as per ACPI specification */
144 147
@@ -181,6 +184,7 @@ acpi_status acpi_hw_extended_sleep(u8 sleep_state)
181 * FUNCTION: acpi_hw_extended_wake_prep 184 * FUNCTION: acpi_hw_extended_wake_prep
182 * 185 *
183 * PARAMETERS: sleep_state - Which sleep state we just exited 186 * PARAMETERS: sleep_state - Which sleep state we just exited
187 * Flags - ACPI_EXECUTE_BFS to run optional method
184 * 188 *
185 * RETURN: Status 189 * RETURN: Status
186 * 190 *
@@ -189,7 +193,7 @@ acpi_status acpi_hw_extended_sleep(u8 sleep_state)
189 * 193 *
190 ******************************************************************************/ 194 ******************************************************************************/
191 195
192acpi_status acpi_hw_extended_wake_prep(u8 sleep_state) 196acpi_status acpi_hw_extended_wake_prep(u8 sleep_state, u8 flags)
193{ 197{
194 acpi_status status; 198 acpi_status status;
195 u8 sleep_type_value; 199 u8 sleep_type_value;
@@ -208,7 +212,11 @@ acpi_status acpi_hw_extended_wake_prep(u8 sleep_state)
208 &acpi_gbl_FADT.sleep_control); 212 &acpi_gbl_FADT.sleep_control);
209 } 213 }
210 214
211 acpi_hw_execute_sleep_method(METHOD_PATHNAME__BFS, sleep_state); 215 /* Optionally execute _BFS (Back From Sleep) */
216
217 if (flags & ACPI_EXECUTE_BFS) {
218 acpi_hw_execute_sleep_method(METHOD_PATHNAME__BFS, sleep_state);
219 }
212 return_ACPI_STATUS(AE_OK); 220 return_ACPI_STATUS(AE_OK);
213} 221}
214 222
@@ -217,6 +225,7 @@ acpi_status acpi_hw_extended_wake_prep(u8 sleep_state)
217 * FUNCTION: acpi_hw_extended_wake 225 * FUNCTION: acpi_hw_extended_wake
218 * 226 *
219 * PARAMETERS: sleep_state - Which sleep state we just exited 227 * PARAMETERS: sleep_state - Which sleep state we just exited
228 * Flags - Reserved, set to zero
220 * 229 *
221 * RETURN: Status 230 * RETURN: Status
222 * 231 *
@@ -225,7 +234,7 @@ acpi_status acpi_hw_extended_wake_prep(u8 sleep_state)
225 * 234 *
226 ******************************************************************************/ 235 ******************************************************************************/
227 236
228acpi_status acpi_hw_extended_wake(u8 sleep_state) 237acpi_status acpi_hw_extended_wake(u8 sleep_state, u8 flags)
229{ 238{
230 ACPI_FUNCTION_TRACE(hw_extended_wake); 239 ACPI_FUNCTION_TRACE(hw_extended_wake);
231 240
diff --git a/drivers/acpi/acpica/hwsleep.c b/drivers/acpi/acpica/hwsleep.c
index aba36349ba4d..8ab325cefa68 100644
--- a/drivers/acpi/acpica/hwsleep.c
+++ b/drivers/acpi/acpica/hwsleep.c
@@ -56,6 +56,7 @@ ACPI_MODULE_NAME("hwsleep")
56 * FUNCTION: acpi_hw_legacy_sleep 56 * FUNCTION: acpi_hw_legacy_sleep
57 * 57 *
58 * PARAMETERS: sleep_state - Which sleep state to enter 58 * PARAMETERS: sleep_state - Which sleep state to enter
59 * Flags - ACPI_EXECUTE_GTS to run optional method
59 * 60 *
60 * RETURN: Status 61 * RETURN: Status
61 * 62 *
@@ -63,7 +64,7 @@ ACPI_MODULE_NAME("hwsleep")
63 * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED 64 * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED
64 * 65 *
65 ******************************************************************************/ 66 ******************************************************************************/
66acpi_status acpi_hw_legacy_sleep(u8 sleep_state) 67acpi_status acpi_hw_legacy_sleep(u8 sleep_state, u8 flags)
67{ 68{
68 struct acpi_bit_register_info *sleep_type_reg_info; 69 struct acpi_bit_register_info *sleep_type_reg_info;
69 struct acpi_bit_register_info *sleep_enable_reg_info; 70 struct acpi_bit_register_info *sleep_enable_reg_info;
@@ -121,9 +122,11 @@ acpi_status acpi_hw_legacy_sleep(u8 sleep_state)
121 return_ACPI_STATUS(status); 122 return_ACPI_STATUS(status);
122 } 123 }
123 124
124 /* Execute the _GTS method (Going To Sleep) */ 125 /* Optionally execute _GTS (Going To Sleep) */
125 126
126 acpi_hw_execute_sleep_method(METHOD_PATHNAME__GTS, sleep_state); 127 if (flags & ACPI_EXECUTE_GTS) {
128 acpi_hw_execute_sleep_method(METHOD_PATHNAME__GTS, sleep_state);
129 }
127 130
128 /* Get current value of PM1A control */ 131 /* Get current value of PM1A control */
129 132
@@ -219,6 +222,7 @@ acpi_status acpi_hw_legacy_sleep(u8 sleep_state)
219 * FUNCTION: acpi_hw_legacy_wake_prep 222 * FUNCTION: acpi_hw_legacy_wake_prep
220 * 223 *
221 * PARAMETERS: sleep_state - Which sleep state we just exited 224 * PARAMETERS: sleep_state - Which sleep state we just exited
225 * Flags - ACPI_EXECUTE_BFS to run optional method
222 * 226 *
223 * RETURN: Status 227 * RETURN: Status
224 * 228 *
@@ -228,7 +232,7 @@ acpi_status acpi_hw_legacy_sleep(u8 sleep_state)
228 * 232 *
229 ******************************************************************************/ 233 ******************************************************************************/
230 234
231acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state) 235acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state, u8 flags)
232{ 236{
233 acpi_status status; 237 acpi_status status;
234 struct acpi_bit_register_info *sleep_type_reg_info; 238 struct acpi_bit_register_info *sleep_type_reg_info;
@@ -279,7 +283,11 @@ acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)
279 } 283 }
280 } 284 }
281 285
282 acpi_hw_execute_sleep_method(METHOD_PATHNAME__BFS, sleep_state); 286 /* Optionally execute _BFS (Back From Sleep) */
287
288 if (flags & ACPI_EXECUTE_BFS) {
289 acpi_hw_execute_sleep_method(METHOD_PATHNAME__BFS, sleep_state);
290 }
283 return_ACPI_STATUS(status); 291 return_ACPI_STATUS(status);
284} 292}
285 293
@@ -288,6 +296,7 @@ acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)
288 * FUNCTION: acpi_hw_legacy_wake 296 * FUNCTION: acpi_hw_legacy_wake
289 * 297 *
290 * PARAMETERS: sleep_state - Which sleep state we just exited 298 * PARAMETERS: sleep_state - Which sleep state we just exited
299 * Flags - Reserved, set to zero
291 * 300 *
292 * RETURN: Status 301 * RETURN: Status
293 * 302 *
@@ -296,7 +305,7 @@ acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)
296 * 305 *
297 ******************************************************************************/ 306 ******************************************************************************/
298 307
299acpi_status acpi_hw_legacy_wake(u8 sleep_state) 308acpi_status acpi_hw_legacy_wake(u8 sleep_state, u8 flags)
300{ 309{
301 acpi_status status; 310 acpi_status status;
302 311
diff --git a/drivers/acpi/acpica/hwxfsleep.c b/drivers/acpi/acpica/hwxfsleep.c
index cf0168e538d9..762d059bb508 100644
--- a/drivers/acpi/acpica/hwxfsleep.c
+++ b/drivers/acpi/acpica/hwxfsleep.c
@@ -49,15 +49,16 @@
49ACPI_MODULE_NAME("hwxfsleep") 49ACPI_MODULE_NAME("hwxfsleep")
50 50
51/* Local prototypes */ 51/* Local prototypes */
52static acpi_status acpi_hw_sleep_dispatch(u8 sleep_state, u32 function_id); 52static acpi_status
53acpi_hw_sleep_dispatch(u8 sleep_state, u8 flags, u32 function_id);
53 54
54/* 55/*
55 * Dispatch table used to efficiently branch to the various sleep 56 * Dispatch table used to efficiently branch to the various sleep
56 * functions. 57 * functions.
57 */ 58 */
58#define ACPI_SLEEP_FUNCTION 0 59#define ACPI_SLEEP_FUNCTION_ID 0
59#define ACPI_WAKE_PREP_FUNCTION 1 60#define ACPI_WAKE_PREP_FUNCTION_ID 1
60#define ACPI_WAKE_FUNCTION 2 61#define ACPI_WAKE_FUNCTION_ID 2
61 62
62/* Legacy functions are optional, based upon ACPI_REDUCED_HARDWARE */ 63/* Legacy functions are optional, based upon ACPI_REDUCED_HARDWARE */
63 64
@@ -233,7 +234,8 @@ ACPI_EXPORT_SYMBOL(acpi_enter_sleep_state_s4bios)
233 * function. 234 * function.
234 * 235 *
235 ******************************************************************************/ 236 ******************************************************************************/
236static acpi_status acpi_hw_sleep_dispatch(u8 sleep_state, u32 function_id) 237static acpi_status
238acpi_hw_sleep_dispatch(u8 sleep_state, u8 flags, u32 function_id)
237{ 239{
238 acpi_status status; 240 acpi_status status;
239 struct acpi_sleep_functions *sleep_functions = 241 struct acpi_sleep_functions *sleep_functions =
@@ -246,11 +248,11 @@ static acpi_status acpi_hw_sleep_dispatch(u8 sleep_state, u32 function_id)
246 * use the extended sleep registers 248 * use the extended sleep registers
247 */ 249 */
248 if (acpi_gbl_reduced_hardware || acpi_gbl_FADT.sleep_control.address) { 250 if (acpi_gbl_reduced_hardware || acpi_gbl_FADT.sleep_control.address) {
249 status = sleep_functions->extended_function(sleep_state); 251 status = sleep_functions->extended_function(sleep_state, flags);
250 } else { 252 } else {
251 /* Legacy sleep */ 253 /* Legacy sleep */
252 254
253 status = sleep_functions->legacy_function(sleep_state); 255 status = sleep_functions->legacy_function(sleep_state, flags);
254 } 256 }
255 257
256 return (status); 258 return (status);
@@ -260,7 +262,7 @@ static acpi_status acpi_hw_sleep_dispatch(u8 sleep_state, u32 function_id)
260 * For the case where reduced-hardware-only code is being generated, 262 * For the case where reduced-hardware-only code is being generated,
261 * we know that only the extended sleep registers are available 263 * we know that only the extended sleep registers are available
262 */ 264 */
263 status = sleep_functions->extended_function(sleep_state); 265 status = sleep_functions->extended_function(sleep_state, flags);
264 return (status); 266 return (status);
265 267
266#endif /* !ACPI_REDUCED_HARDWARE */ 268#endif /* !ACPI_REDUCED_HARDWARE */
@@ -290,8 +292,6 @@ acpi_status acpi_enter_sleep_state_prep(u8 sleep_state)
290 292
291 ACPI_FUNCTION_TRACE(acpi_enter_sleep_state_prep); 293 ACPI_FUNCTION_TRACE(acpi_enter_sleep_state_prep);
292 294
293 /* _PSW methods could be run here to enable wake-on keyboard, LAN, etc. */
294
295 status = acpi_get_sleep_type_data(sleep_state, 295 status = acpi_get_sleep_type_data(sleep_state,
296 &acpi_gbl_sleep_type_a, 296 &acpi_gbl_sleep_type_a,
297 &acpi_gbl_sleep_type_b); 297 &acpi_gbl_sleep_type_b);
@@ -349,6 +349,7 @@ ACPI_EXPORT_SYMBOL(acpi_enter_sleep_state_prep)
349 * FUNCTION: acpi_enter_sleep_state 349 * FUNCTION: acpi_enter_sleep_state
350 * 350 *
351 * PARAMETERS: sleep_state - Which sleep state to enter 351 * PARAMETERS: sleep_state - Which sleep state to enter
352 * Flags - ACPI_EXECUTE_GTS to run optional method
352 * 353 *
353 * RETURN: Status 354 * RETURN: Status
354 * 355 *
@@ -356,7 +357,7 @@ ACPI_EXPORT_SYMBOL(acpi_enter_sleep_state_prep)
356 * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED 357 * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED
357 * 358 *
358 ******************************************************************************/ 359 ******************************************************************************/
359acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state) 360acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state, u8 flags)
360{ 361{
361 acpi_status status; 362 acpi_status status;
362 363
@@ -369,7 +370,8 @@ acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state)
369 return_ACPI_STATUS(AE_AML_OPERAND_VALUE); 370 return_ACPI_STATUS(AE_AML_OPERAND_VALUE);
370 } 371 }
371 372
372 status = acpi_hw_sleep_dispatch(sleep_state, ACPI_SLEEP_FUNCTION); 373 status =
374 acpi_hw_sleep_dispatch(sleep_state, flags, ACPI_SLEEP_FUNCTION_ID);
373 return_ACPI_STATUS(status); 375 return_ACPI_STATUS(status);
374} 376}
375 377
@@ -380,6 +382,7 @@ ACPI_EXPORT_SYMBOL(acpi_enter_sleep_state)
380 * FUNCTION: acpi_leave_sleep_state_prep 382 * FUNCTION: acpi_leave_sleep_state_prep
381 * 383 *
382 * PARAMETERS: sleep_state - Which sleep state we are exiting 384 * PARAMETERS: sleep_state - Which sleep state we are exiting
385 * Flags - ACPI_EXECUTE_BFS to run optional method
383 * 386 *
384 * RETURN: Status 387 * RETURN: Status
385 * 388 *
@@ -388,13 +391,15 @@ ACPI_EXPORT_SYMBOL(acpi_enter_sleep_state)
388 * Called with interrupts DISABLED. 391 * Called with interrupts DISABLED.
389 * 392 *
390 ******************************************************************************/ 393 ******************************************************************************/
391acpi_status acpi_leave_sleep_state_prep(u8 sleep_state) 394acpi_status acpi_leave_sleep_state_prep(u8 sleep_state, u8 flags)
392{ 395{
393 acpi_status status; 396 acpi_status status;
394 397
395 ACPI_FUNCTION_TRACE(acpi_leave_sleep_state_prep); 398 ACPI_FUNCTION_TRACE(acpi_leave_sleep_state_prep);
396 399
397 status = acpi_hw_sleep_dispatch(sleep_state, ACPI_WAKE_PREP_FUNCTION); 400 status =
401 acpi_hw_sleep_dispatch(sleep_state, flags,
402 ACPI_WAKE_PREP_FUNCTION_ID);
398 return_ACPI_STATUS(status); 403 return_ACPI_STATUS(status);
399} 404}
400 405
@@ -419,7 +424,7 @@ acpi_status acpi_leave_sleep_state(u8 sleep_state)
419 ACPI_FUNCTION_TRACE(acpi_leave_sleep_state); 424 ACPI_FUNCTION_TRACE(acpi_leave_sleep_state);
420 425
421 426
422 status = acpi_hw_sleep_dispatch(sleep_state, ACPI_WAKE_FUNCTION); 427 status = acpi_hw_sleep_dispatch(sleep_state, 0, ACPI_WAKE_FUNCTION_ID);
423 return_ACPI_STATUS(status); 428 return_ACPI_STATUS(status);
424} 429}
425 430
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 4fda549fa599..8f1fb4520d24 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -250,7 +250,8 @@ static int acpi_suspend_enter(suspend_state_t pm_state)
250 switch (acpi_state) { 250 switch (acpi_state) {
251 case ACPI_STATE_S1: 251 case ACPI_STATE_S1:
252 barrier(); 252 barrier();
253 status = acpi_enter_sleep_state(acpi_state); 253 status = acpi_enter_sleep_state(acpi_state,
254 ACPI_NO_OPTIONAL_METHODS);
254 break; 255 break;
255 256
256 case ACPI_STATE_S3: 257 case ACPI_STATE_S3:
@@ -265,7 +266,7 @@ static int acpi_suspend_enter(suspend_state_t pm_state)
265 acpi_write_bit_register(ACPI_BITREG_SCI_ENABLE, 1); 266 acpi_write_bit_register(ACPI_BITREG_SCI_ENABLE, 1);
266 267
267 /* Reprogram control registers and execute _BFS */ 268 /* Reprogram control registers and execute _BFS */
268 acpi_leave_sleep_state_prep(acpi_state); 269 acpi_leave_sleep_state_prep(acpi_state, ACPI_NO_OPTIONAL_METHODS);
269 270
270 /* ACPI 3.0 specs (P62) says that it's the responsibility 271 /* ACPI 3.0 specs (P62) says that it's the responsibility
271 * of the OSPM to clear the status bit [ implying that the 272 * of the OSPM to clear the status bit [ implying that the
@@ -534,9 +535,9 @@ static int acpi_hibernation_enter(void)
534 ACPI_FLUSH_CPU_CACHE(); 535 ACPI_FLUSH_CPU_CACHE();
535 536
536 /* This shouldn't return. If it returns, we have a problem */ 537 /* This shouldn't return. If it returns, we have a problem */
537 status = acpi_enter_sleep_state(ACPI_STATE_S4); 538 status = acpi_enter_sleep_state(ACPI_STATE_S4, ACPI_NO_OPTIONAL_METHODS);
538 /* Reprogram control registers and execute _BFS */ 539 /* Reprogram control registers and execute _BFS */
539 acpi_leave_sleep_state_prep(ACPI_STATE_S4); 540 acpi_leave_sleep_state_prep(ACPI_STATE_S4, ACPI_NO_OPTIONAL_METHODS);
540 541
541 return ACPI_SUCCESS(status) ? 0 : -EFAULT; 542 return ACPI_SUCCESS(status) ? 0 : -EFAULT;
542} 543}
@@ -549,7 +550,7 @@ static void acpi_hibernation_leave(void)
549 */ 550 */
550 acpi_enable(); 551 acpi_enable();
551 /* Reprogram control registers and execute _BFS */ 552 /* Reprogram control registers and execute _BFS */
552 acpi_leave_sleep_state_prep(ACPI_STATE_S4); 553 acpi_leave_sleep_state_prep(ACPI_STATE_S4, ACPI_NO_OPTIONAL_METHODS);
553 /* Check the hardware signature */ 554 /* Check the hardware signature */
554 if (facs && s4_hardware_signature != facs->hardware_signature) { 555 if (facs && s4_hardware_signature != facs->hardware_signature) {
555 printk(KERN_EMERG "ACPI: Hardware changed while hibernated, " 556 printk(KERN_EMERG "ACPI: Hardware changed while hibernated, "
@@ -773,7 +774,7 @@ static void acpi_power_off(void)
773 /* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */ 774 /* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */
774 printk(KERN_DEBUG "%s called\n", __func__); 775 printk(KERN_DEBUG "%s called\n", __func__);
775 local_irq_disable(); 776 local_irq_disable();
776 acpi_enter_sleep_state(ACPI_STATE_S5); 777 acpi_enter_sleep_state(ACPI_STATE_S5, ACPI_NO_OPTIONAL_METHODS);
777} 778}
778 779
779/* 780/*
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h
index fb8a238115d6..488c986ebe44 100644
--- a/include/acpi/acpixf.h
+++ b/include/acpi/acpixf.h
@@ -486,11 +486,11 @@ acpi_get_sleep_type_data(u8 sleep_state, u8 * slp_typ_a, u8 * slp_typ_b);
486 486
487acpi_status acpi_enter_sleep_state_prep(u8 sleep_state); 487acpi_status acpi_enter_sleep_state_prep(u8 sleep_state);
488 488
489acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state); 489acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state, u8 flags);
490 490
491ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status asmlinkage acpi_enter_sleep_state_s4bios(void)) 491ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status asmlinkage acpi_enter_sleep_state_s4bios(void))
492 492
493acpi_status acpi_leave_sleep_state_prep(u8 sleep_state); 493acpi_status acpi_leave_sleep_state_prep(u8 sleep_state, u8 flags);
494 494
495acpi_status acpi_leave_sleep_state(u8 sleep_state); 495acpi_status acpi_leave_sleep_state(u8 sleep_state);
496 496
diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h
index 349615833a4a..eba66043cf1b 100644
--- a/include/acpi/actypes.h
+++ b/include/acpi/actypes.h
@@ -518,6 +518,13 @@ typedef u64 acpi_integer;
518#define ACPI_SLEEP_TYPE_INVALID 0xFF 518#define ACPI_SLEEP_TYPE_INVALID 0xFF
519 519
520/* 520/*
521 * Sleep/Wake flags
522 */
523#define ACPI_NO_OPTIONAL_METHODS 0x00 /* Do not execute any optional methods */
524#define ACPI_EXECUTE_GTS 0x01 /* For enter sleep interface */
525#define ACPI_EXECUTE_BFS 0x02 /* For leave sleep prep interface */
526
527/*
521 * Standard notify values 528 * Standard notify values
522 */ 529 */
523#define ACPI_NOTIFY_BUS_CHECK (u8) 0x00 530#define ACPI_NOTIFY_BUS_CHECK (u8) 0x00
@@ -790,7 +797,7 @@ typedef u8 acpi_adr_space_type;
790 797
791/* Sleep function dispatch */ 798/* Sleep function dispatch */
792 799
793typedef acpi_status(*ACPI_SLEEP_FUNCTION) (u8 sleep_state); 800typedef acpi_status(*ACPI_SLEEP_FUNCTION) (u8 sleep_state, u8 flags);
794 801
795struct acpi_sleep_functions { 802struct acpi_sleep_functions {
796 ACPI_SLEEP_FUNCTION legacy_function; 803 ACPI_SLEEP_FUNCTION legacy_function;