1 /****************************************************************************** 2 * 3 * Name: acpixf.h - External interfaces to the ACPI subsystem 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2015, Intel Corp. 9 * All rights reserved. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions, and the following disclaimer, 16 * without modification. 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18 * substantially similar to the "NO WARRANTY" disclaimer below 19 * ("Disclaimer") and any redistribution must be conditioned upon 20 * including a substantially similar Disclaimer requirement for further 21 * binary redistribution. 22 * 3. Neither the names of the above-listed copyright holders nor the names 23 * of any contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * Alternatively, this software may be distributed under the terms of the 27 * GNU General Public License ("GPL") version 2 as published by the Free 28 * Software Foundation. 29 * 30 * NO WARRANTY 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41 * POSSIBILITY OF SUCH DAMAGES. 42 */ 43 44 #ifndef __ACXFACE_H__ 45 #define __ACXFACE_H__ 46 47 /* Current ACPICA subsystem version in YYYYMMDD format */ 48 49 #define ACPI_CA_VERSION 0x20150619 50 51 #include <acpi/acconfig.h> 52 #include <acpi/actypes.h> 53 #include <acpi/actbl.h> 54 #include <acpi/acbuffer.h> 55 56 /***************************************************************************** 57 * 58 * Macros used for ACPICA globals and configuration 59 * 60 ****************************************************************************/ 61 62 /* 63 * Ensure that global variables are defined and initialized only once. 64 * 65 * The use of these macros allows for a single list of globals (here) 66 * in order to simplify maintenance of the code. 67 */ 68 #ifdef DEFINE_ACPI_GLOBALS 69 #define ACPI_GLOBAL(type,name) \ 70 extern type name; \ 71 type name 72 73 #define ACPI_INIT_GLOBAL(type,name,value) \ 74 type name=value 75 76 #else 77 #ifndef ACPI_GLOBAL 78 #define ACPI_GLOBAL(type,name) \ 79 extern type name 80 #endif 81 82 #ifndef ACPI_INIT_GLOBAL 83 #define ACPI_INIT_GLOBAL(type,name,value) \ 84 extern type name 85 #endif 86 #endif 87 88 /* 89 * These macros configure the various ACPICA interfaces. They are 90 * useful for generating stub inline functions for features that are 91 * configured out of the current kernel or ACPICA application. 92 */ 93 #ifndef ACPI_EXTERNAL_RETURN_STATUS 94 #define ACPI_EXTERNAL_RETURN_STATUS(prototype) \ 95 prototype; 96 #endif 97 98 #ifndef ACPI_EXTERNAL_RETURN_OK 99 #define ACPI_EXTERNAL_RETURN_OK(prototype) \ 100 prototype; 101 #endif 102 103 #ifndef ACPI_EXTERNAL_RETURN_VOID 104 #define ACPI_EXTERNAL_RETURN_VOID(prototype) \ 105 prototype; 106 #endif 107 108 #ifndef ACPI_EXTERNAL_RETURN_UINT32 109 #define ACPI_EXTERNAL_RETURN_UINT32(prototype) \ 110 prototype; 111 #endif 112 113 #ifndef ACPI_EXTERNAL_RETURN_PTR 114 #define ACPI_EXTERNAL_RETURN_PTR(prototype) \ 115 prototype; 116 #endif 117 118 /***************************************************************************** 119 * 120 * Public globals and runtime configuration options 121 * 122 ****************************************************************************/ 123 124 /* 125 * Enable "slack mode" of the AML interpreter? Default is FALSE, and the 126 * interpreter strictly follows the ACPI specification. Setting to TRUE 127 * allows the interpreter to ignore certain errors and/or bad AML constructs. 128 * 129 * Currently, these features are enabled by this flag: 130 * 131 * 1) Allow "implicit return" of last value in a control method 132 * 2) Allow access beyond the end of an operation region 133 * 3) Allow access to uninitialized locals/args (auto-init to integer 0) 134 * 4) Allow ANY object type to be a source operand for the Store() operator 135 * 5) Allow unresolved references (invalid target name) in package objects 136 * 6) Enable warning messages for behavior that is not ACPI spec compliant 137 */ 138 ACPI_INIT_GLOBAL(u8, acpi_gbl_enable_interpreter_slack, FALSE); 139 140 /* 141 * Automatically serialize all methods that create named objects? Default 142 * is TRUE, meaning that all non_serialized methods are scanned once at 143 * table load time to determine those that create named objects. Methods 144 * that create named objects are marked Serialized in order to prevent 145 * possible run-time problems if they are entered by more than one thread. 146 */ 147 ACPI_INIT_GLOBAL(u8, acpi_gbl_auto_serialize_methods, TRUE); 148 149 /* 150 * Create the predefined _OSI method in the namespace? Default is TRUE 151 * because ACPICA is fully compatible with other ACPI implementations. 152 * Changing this will revert ACPICA (and machine ASL) to pre-OSI behavior. 153 */ 154 ACPI_INIT_GLOBAL(u8, acpi_gbl_create_osi_method, TRUE); 155 156 /* 157 * Optionally use default values for the ACPI register widths. Set this to 158 * TRUE to use the defaults, if an FADT contains incorrect widths/lengths. 159 */ 160 ACPI_INIT_GLOBAL(u8, acpi_gbl_use_default_register_widths, TRUE); 161 162 /* 163 * Whether or not to verify the table checksum before installation. Set 164 * this to TRUE to verify the table checksum before install it to the table 165 * manager. Note that enabling this option causes errors to happen in some 166 * OSPMs during early initialization stages. Default behavior is to do such 167 * verification. 168 */ 169 ACPI_INIT_GLOBAL(u8, acpi_gbl_verify_table_checksum, TRUE); 170 171 /* 172 * Optionally enable output from the AML Debug Object. 173 */ 174 ACPI_INIT_GLOBAL(u8, acpi_gbl_enable_aml_debug_object, FALSE); 175 176 /* 177 * Optionally copy the entire DSDT to local memory (instead of simply 178 * mapping it.) There are some BIOSs that corrupt or replace the original 179 * DSDT, creating the need for this option. Default is FALSE, do not copy 180 * the DSDT. 181 */ 182 ACPI_INIT_GLOBAL(u8, acpi_gbl_copy_dsdt_locally, FALSE); 183 184 /* 185 * Optionally ignore an XSDT if present and use the RSDT instead. 186 * Although the ACPI specification requires that an XSDT be used instead 187 * of the RSDT, the XSDT has been found to be corrupt or ill-formed on 188 * some machines. Default behavior is to use the XSDT if present. 189 */ 190 ACPI_INIT_GLOBAL(u8, acpi_gbl_do_not_use_xsdt, FALSE); 191 192 /* 193 * Optionally use 32-bit FADT addresses if and when there is a conflict 194 * (address mismatch) between the 32-bit and 64-bit versions of the 195 * address. Although ACPICA adheres to the ACPI specification which 196 * requires the use of the corresponding 64-bit address if it is non-zero, 197 * some machines have been found to have a corrupted non-zero 64-bit 198 * address. Default is FALSE, do not favor the 32-bit addresses. 199 */ 200 ACPI_INIT_GLOBAL(u8, acpi_gbl_use32_bit_fadt_addresses, FALSE); 201 202 /* 203 * Optionally use 32-bit FACS table addresses. 204 * It is reported that some platforms fail to resume from system suspending 205 * if 64-bit FACS table address is selected: 206 * https://bugzilla.kernel.org/show_bug.cgi?id=74021 207 * Default is TRUE, favor the 32-bit addresses. 208 */ 209 ACPI_INIT_GLOBAL(u8, acpi_gbl_use32_bit_facs_addresses, TRUE); 210 211 /* 212 * Optionally truncate I/O addresses to 16 bits. Provides compatibility 213 * with other ACPI implementations. NOTE: During ACPICA initialization, 214 * this value is set to TRUE if any Windows OSI strings have been 215 * requested by the BIOS. 216 */ 217 ACPI_INIT_GLOBAL(u8, acpi_gbl_truncate_io_addresses, FALSE); 218 219 /* 220 * Disable runtime checking and repair of values returned by control methods. 221 * Use only if the repair is causing a problem on a particular machine. 222 */ 223 ACPI_INIT_GLOBAL(u8, acpi_gbl_disable_auto_repair, FALSE); 224 225 /* 226 * Optionally do not install any SSDTs from the RSDT/XSDT during initialization. 227 * This can be useful for debugging ACPI problems on some machines. 228 */ 229 ACPI_INIT_GLOBAL(u8, acpi_gbl_disable_ssdt_table_install, FALSE); 230 231 /* 232 * Optionally enable runtime namespace override. 233 */ 234 ACPI_INIT_GLOBAL(u8, acpi_gbl_runtime_namespace_override, TRUE); 235 236 /* 237 * We keep track of the latest version of Windows that has been requested by 238 * the BIOS. ACPI 5.0. 239 */ 240 ACPI_INIT_GLOBAL(u8, acpi_gbl_osi_data, 0); 241 242 /* 243 * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning 244 * that the ACPI hardware is no longer required. A flag in the FADT indicates 245 * a reduced HW machine, and that flag is duplicated here for convenience. 246 */ 247 ACPI_INIT_GLOBAL(u8, acpi_gbl_reduced_hardware, FALSE); 248 249 /* 250 * This mechanism is used to trace a specified AML method. The method is 251 * traced each time it is executed. 252 */ 253 ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_flags, 0); 254 ACPI_INIT_GLOBAL(acpi_name, acpi_gbl_trace_method_name, 0); 255 256 /* 257 * Runtime configuration of debug output control masks. We want the debug 258 * switches statically initialized so they are already set when the debugger 259 * is entered. 260 */ 261 ACPI_INIT_GLOBAL(u32, acpi_dbg_level, ACPI_DEBUG_DEFAULT); 262 ACPI_INIT_GLOBAL(u32, acpi_dbg_layer, 0); 263 264 /* 265 * Other miscellaneous globals 266 */ 267 ACPI_GLOBAL(struct acpi_table_fadt, acpi_gbl_FADT); 268 ACPI_GLOBAL(u32, acpi_current_gpe_count); 269 ACPI_GLOBAL(u8, acpi_gbl_system_awake_and_running); 270 271 /***************************************************************************** 272 * 273 * ACPICA public interface configuration. 274 * 275 * Interfaces that are configured out of the ACPICA build are replaced 276 * by inlined stubs by default. 277 * 278 ****************************************************************************/ 279 280 /* 281 * Hardware-reduced prototypes (default: Not hardware reduced). 282 * 283 * All ACPICA hardware-related interfaces that use these macros will be 284 * configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag 285 * is set to TRUE. 286 * 287 * Note: This static build option for reduced hardware is intended to 288 * reduce ACPICA code size if desired or necessary. However, even if this 289 * option is not specified, the runtime behavior of ACPICA is dependent 290 * on the actual FADT reduced hardware flag (HW_REDUCED_ACPI). If set, 291 * the flag will enable similar behavior -- ACPICA will not attempt 292 * to access any ACPI-relate hardware (SCI, GPEs, Fixed Events, etc.) 293 */ 294 #if (!ACPI_REDUCED_HARDWARE) 295 #define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \ 296 ACPI_EXTERNAL_RETURN_STATUS(prototype) 297 298 #define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \ 299 ACPI_EXTERNAL_RETURN_OK(prototype) 300 301 #define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \ 302 ACPI_EXTERNAL_RETURN_VOID(prototype) 303 304 #else 305 #define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \ 306 static ACPI_INLINE prototype {return(AE_NOT_CONFIGURED);} 307 308 #define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \ 309 static ACPI_INLINE prototype {return(AE_OK);} 310 311 #define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \ 312 static ACPI_INLINE prototype {return;} 313 314 #endif /* !ACPI_REDUCED_HARDWARE */ 315 316 /* 317 * Error message prototypes (default: error messages enabled). 318 * 319 * All interfaces related to error and warning messages 320 * will be configured out of the ACPICA build if the 321 * ACPI_NO_ERROR_MESSAGE flag is defined. 322 */ 323 #ifndef ACPI_NO_ERROR_MESSAGES 324 #define ACPI_MSG_DEPENDENT_RETURN_VOID(prototype) \ 325 prototype; 326 327 #else 328 #define ACPI_MSG_DEPENDENT_RETURN_VOID(prototype) \ 329 static ACPI_INLINE prototype {return;} 330 331 #endif /* ACPI_NO_ERROR_MESSAGES */ 332 333 /* 334 * Debugging output prototypes (default: no debug output). 335 * 336 * All interfaces related to debug output messages 337 * will be configured out of the ACPICA build unless the 338 * ACPI_DEBUG_OUTPUT flag is defined. 339 */ 340 #ifdef ACPI_DEBUG_OUTPUT 341 #define ACPI_DBG_DEPENDENT_RETURN_VOID(prototype) \ 342 prototype; 343 344 #else 345 #define ACPI_DBG_DEPENDENT_RETURN_VOID(prototype) \ 346 static ACPI_INLINE prototype {return;} 347 348 #endif /* ACPI_DEBUG_OUTPUT */ 349 350 /* 351 * Application prototypes 352 * 353 * All interfaces used by application will be configured 354 * out of the ACPICA build unless the ACPI_APPLICATION 355 * flag is defined. 356 */ 357 #ifdef ACPI_APPLICATION 358 #define ACPI_APP_DEPENDENT_RETURN_VOID(prototype) \ 359 prototype; 360 361 #else 362 #define ACPI_APP_DEPENDENT_RETURN_VOID(prototype) \ 363 static ACPI_INLINE prototype {return;} 364 365 #endif /* ACPI_APPLICATION */ 366 367 /***************************************************************************** 368 * 369 * ACPICA public interface prototypes 370 * 371 ****************************************************************************/ 372 373 /* 374 * Initialization 375 */ 376 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init 377 acpi_initialize_tables(struct acpi_table_desc 378 *initial_storage, 379 u32 initial_table_count, 380 u8 allow_resize)) 381 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_initialize_subsystem(void)) 382 383 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_enable_subsystem(u32 flags)) 384 385 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init 386 acpi_initialize_objects(u32 flags)) 387 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_terminate(void)) 388 389 /* 390 * Miscellaneous global interfaces 391 */ 392 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable(void)) 393 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable(void)) 394 #ifdef ACPI_FUTURE_USAGE 395 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_subsystem_status(void)) 396 #endif 397 398 #ifdef ACPI_FUTURE_USAGE 399 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 400 acpi_get_system_info(struct acpi_buffer 401 *ret_buffer)) 402 #endif 403 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 404 acpi_get_statistics(struct acpi_statistics *stats)) 405 ACPI_EXTERNAL_RETURN_PTR(const char 406 *acpi_format_exception(acpi_status exception)) 407 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_purge_cached_objects(void)) 408 409 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 410 acpi_install_interface(acpi_string interface_name)) 411 412 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 413 acpi_remove_interface(acpi_string interface_name)) 414 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_update_interfaces(u8 action)) 415 416 ACPI_EXTERNAL_RETURN_UINT32(u32 417 acpi_check_address_range(acpi_adr_space_type 418 space_id, 419 acpi_physical_address 420 address, acpi_size length, 421 u8 warn)) 422 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 423 acpi_decode_pld_buffer(u8 *in_buffer, 424 acpi_size length, 425 struct acpi_pld_info 426 **return_buffer)) 427 428 /* 429 * ACPI table load/unload interfaces 430 */ 431 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init 432 acpi_install_table(acpi_physical_address address, 433 u8 physical)) 434 435 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 436 acpi_load_table(struct acpi_table_header *table)) 437 438 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 439 acpi_unload_parent_table(acpi_handle object)) 440 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_load_tables(void)) 441 442 /* 443 * ACPI table manipulation interfaces 444 */ 445 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_reallocate_root_table(void)) 446 447 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init 448 acpi_find_root_pointer(acpi_physical_address * 449 rsdp_address)) 450 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 451 acpi_get_table_header(acpi_string signature, 452 u32 instance, 453 struct acpi_table_header 454 *out_table_header)) 455 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 456 acpi_get_table(acpi_string signature, u32 instance, 457 struct acpi_table_header 458 **out_table)) 459 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 460 acpi_get_table_by_index(u32 table_index, 461 struct acpi_table_header 462 **out_table)) 463 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 464 acpi_install_table_handler(acpi_table_handler 465 handler, void *context)) 466 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 467 acpi_remove_table_handler(acpi_table_handler 468 handler)) 469 470 /* 471 * Namespace and name interfaces 472 */ 473 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 474 acpi_walk_namespace(acpi_object_type type, 475 acpi_handle start_object, 476 u32 max_depth, 477 acpi_walk_callback 478 descending_callback, 479 acpi_walk_callback 480 ascending_callback, 481 void *context, 482 void **return_value)) 483 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 484 acpi_get_devices(const char *HID, 485 acpi_walk_callback user_function, 486 void *context, 487 void **return_value)) 488 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 489 acpi_get_name(acpi_handle object, u32 name_type, 490 struct acpi_buffer *ret_path_ptr)) 491 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 492 acpi_get_handle(acpi_handle parent, 493 acpi_string pathname, 494 acpi_handle * ret_handle)) 495 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 496 acpi_attach_data(acpi_handle object, 497 acpi_object_handler handler, 498 void *data)) 499 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 500 acpi_detach_data(acpi_handle object, 501 acpi_object_handler handler)) 502 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 503 acpi_get_data(acpi_handle object, 504 acpi_object_handler handler, 505 void **data)) 506 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 507 acpi_debug_trace(char *name, u32 debug_level, 508 u32 debug_layer, u32 flags)) 509 510 /* 511 * Object manipulation and enumeration 512 */ 513 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 514 acpi_evaluate_object(acpi_handle object, 515 acpi_string pathname, 516 struct acpi_object_list 517 *parameter_objects, 518 struct acpi_buffer 519 *return_object_buffer)) 520 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 521 acpi_evaluate_object_typed(acpi_handle object, 522 acpi_string pathname, 523 struct acpi_object_list 524 *external_params, 525 struct acpi_buffer 526 *return_buffer, 527 acpi_object_type 528 return_type)) 529 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 530 acpi_get_object_info(acpi_handle object, 531 struct acpi_device_info 532 **return_buffer)) 533 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_install_method(u8 *buffer)) 534 535 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 536 acpi_get_next_object(acpi_object_type type, 537 acpi_handle parent, 538 acpi_handle child, 539 acpi_handle * out_handle)) 540 541 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 542 acpi_get_type(acpi_handle object, 543 acpi_object_type * out_type)) 544 545 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 546 acpi_get_parent(acpi_handle object, 547 acpi_handle * out_handle)) 548 549 /* 550 * Handler interfaces 551 */ 552 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 553 acpi_install_initialization_handler 554 (acpi_init_handler handler, u32 function)) 555 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 556 acpi_install_sci_handler(acpi_sci_handler 557 address, 558 void *context)) 559 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 560 acpi_remove_sci_handler(acpi_sci_handler 561 address)) 562 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 563 acpi_install_global_event_handler 564 (acpi_gbl_event_handler handler, 565 void *context)) 566 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 567 acpi_install_fixed_event_handler(u32 568 acpi_event, 569 acpi_event_handler 570 handler, 571 void 572 *context)) 573 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 574 acpi_remove_fixed_event_handler(u32 acpi_event, 575 acpi_event_handler 576 handler)) 577 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 578 acpi_install_gpe_handler(acpi_handle 579 gpe_device, 580 u32 gpe_number, 581 u32 type, 582 acpi_gpe_handler 583 address, 584 void *context)) 585 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 586 acpi_install_gpe_raw_handler(acpi_handle 587 gpe_device, 588 u32 gpe_number, 589 u32 type, 590 acpi_gpe_handler 591 address, 592 void *context)) 593 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 594 acpi_remove_gpe_handler(acpi_handle gpe_device, 595 u32 gpe_number, 596 acpi_gpe_handler 597 address)) 598 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 599 acpi_install_notify_handler(acpi_handle device, 600 u32 handler_type, 601 acpi_notify_handler 602 handler, 603 void *context)) 604 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 605 acpi_remove_notify_handler(acpi_handle device, 606 u32 handler_type, 607 acpi_notify_handler 608 handler)) 609 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 610 acpi_install_address_space_handler(acpi_handle 611 device, 612 acpi_adr_space_type 613 space_id, 614 acpi_adr_space_handler 615 handler, 616 acpi_adr_space_setup 617 setup, 618 void *context)) 619 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 620 acpi_remove_address_space_handler(acpi_handle 621 device, 622 acpi_adr_space_type 623 space_id, 624 acpi_adr_space_handler 625 handler)) 626 #ifdef ACPI_FUTURE_USAGE 627 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 628 acpi_install_exception_handler 629 (acpi_exception_handler handler)) 630 #endif 631 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 632 acpi_install_interface_handler 633 (acpi_interface_handler handler)) 634 635 /* 636 * Global Lock interfaces 637 */ 638 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 639 acpi_acquire_global_lock(u16 timeout, 640 u32 *handle)) 641 642 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 643 acpi_release_global_lock(u32 handle)) 644 645 /* 646 * Interfaces to AML mutex objects 647 */ 648 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 649 acpi_acquire_mutex(acpi_handle handle, 650 acpi_string pathname, 651 u16 timeout)) 652 653 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 654 acpi_release_mutex(acpi_handle handle, 655 acpi_string pathname)) 656 657 /* 658 * Fixed Event interfaces 659 */ 660 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 661 acpi_enable_event(u32 event, u32 flags)) 662 663 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 664 acpi_disable_event(u32 event, u32 flags)) 665 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_clear_event(u32 event)) 666 667 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 668 acpi_get_event_status(u32 event, 669 acpi_event_status 670 *event_status)) 671 672 /* 673 * General Purpose Event (GPE) Interfaces 674 */ 675 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_update_all_gpes(void)) 676 677 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 678 acpi_enable_gpe(acpi_handle gpe_device, 679 u32 gpe_number)) 680 681 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 682 acpi_disable_gpe(acpi_handle gpe_device, 683 u32 gpe_number)) 684 685 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 686 acpi_clear_gpe(acpi_handle gpe_device, 687 u32 gpe_number)) 688 689 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 690 acpi_set_gpe(acpi_handle gpe_device, 691 u32 gpe_number, u8 action)) 692 693 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 694 acpi_finish_gpe(acpi_handle gpe_device, 695 u32 gpe_number)) 696 697 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 698 acpi_mark_gpe_for_wake(acpi_handle gpe_device, 699 u32 gpe_number)) 700 701 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 702 acpi_setup_gpe_for_wake(acpi_handle 703 parent_device, 704 acpi_handle gpe_device, 705 u32 gpe_number)) 706 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 707 acpi_set_gpe_wake_mask(acpi_handle gpe_device, 708 u32 gpe_number, 709 u8 action)) 710 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 711 acpi_get_gpe_status(acpi_handle gpe_device, 712 u32 gpe_number, 713 acpi_event_status 714 *event_status)) 715 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable_all_gpes(void)) 716 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_runtime_gpes(void)) 717 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_wakeup_gpes(void)) 718 719 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 720 acpi_get_gpe_device(u32 gpe_index, 721 acpi_handle * gpe_device)) 722 723 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 724 acpi_install_gpe_block(acpi_handle gpe_device, 725 struct 726 acpi_generic_address 727 *gpe_block_address, 728 u32 register_count, 729 u32 interrupt_number)) 730 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 731 acpi_remove_gpe_block(acpi_handle gpe_device)) 732 733 /* 734 * Resource interfaces 735 */ 736 typedef 737 acpi_status(*acpi_walk_resource_callback) (struct acpi_resource * resource, 738 void *context); 739 740 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 741 acpi_get_vendor_resource(acpi_handle device, 742 char *name, 743 struct acpi_vendor_uuid 744 *uuid, 745 struct acpi_buffer 746 *ret_buffer)) 747 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 748 acpi_get_current_resources(acpi_handle device, 749 struct acpi_buffer 750 *ret_buffer)) 751 #ifdef ACPI_FUTURE_USAGE 752 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 753 acpi_get_possible_resources(acpi_handle device, 754 struct acpi_buffer 755 *ret_buffer)) 756 #endif 757 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 758 acpi_get_event_resources(acpi_handle device_handle, 759 struct acpi_buffer 760 *ret_buffer)) 761 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 762 acpi_walk_resource_buffer(struct acpi_buffer 763 *buffer, 764 acpi_walk_resource_callback 765 user_function, 766 void *context)) 767 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 768 acpi_walk_resources(acpi_handle device, char *name, 769 acpi_walk_resource_callback 770 user_function, void *context)) 771 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 772 acpi_set_current_resources(acpi_handle device, 773 struct acpi_buffer 774 *in_buffer)) 775 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 776 acpi_get_irq_routing_table(acpi_handle device, 777 struct acpi_buffer 778 *ret_buffer)) 779 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 780 acpi_resource_to_address64(struct acpi_resource 781 *resource, 782 struct 783 acpi_resource_address64 784 *out)) 785 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 786 acpi_buffer_to_resource(u8 *aml_buffer, 787 u16 aml_buffer_length, 788 struct acpi_resource 789 **resource_ptr)) 790 791 /* 792 * Hardware (ACPI device) interfaces 793 */ 794 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_reset(void)) 795 796 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 797 acpi_read(u64 *value, 798 struct acpi_generic_address *reg)) 799 800 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 801 acpi_write(u64 value, 802 struct acpi_generic_address *reg)) 803 804 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 805 acpi_read_bit_register(u32 register_id, 806 u32 *return_value)) 807 808 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 809 acpi_write_bit_register(u32 register_id, 810 u32 value)) 811 812 /* 813 * Sleep/Wake interfaces 814 */ 815 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 816 acpi_get_sleep_type_data(u8 sleep_state, 817 u8 *slp_typ_a, 818 u8 *slp_typ_b)) 819 820 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 821 acpi_enter_sleep_state_prep(u8 sleep_state)) 822 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_enter_sleep_state(u8 sleep_state)) 823 824 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enter_sleep_state_s4bios(void)) 825 826 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 827 acpi_leave_sleep_state_prep(u8 sleep_state)) 828 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_leave_sleep_state(u8 sleep_state)) 829 830 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 831 acpi_set_firmware_waking_vectors 832 (acpi_physical_address physical_address, 833 acpi_physical_address physical_address64)) 834 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 835 acpi_set_firmware_waking_vector(u32 836 physical_address)) 837 #if ACPI_MACHINE_WIDTH == 64 838 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 839 acpi_set_firmware_waking_vector64(u64 840 physical_address)) 841 #endif 842 /* 843 * ACPI Timer interfaces 844 */ 845 #ifdef ACPI_FUTURE_USAGE 846 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 847 acpi_get_timer_resolution(u32 *resolution)) 848 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_get_timer(u32 *ticks)) 849 850 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 851 acpi_get_timer_duration(u32 start_ticks, 852 u32 end_ticks, 853 u32 *time_elapsed)) 854 #endif /* ACPI_FUTURE_USAGE */ 855 856 /* 857 * Error/Warning output 858 */ 859 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 860 void ACPI_INTERNAL_VAR_XFACE 861 acpi_error(const char *module_name, 862 u32 line_number, 863 const char *format, ...)) 864 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(4) 865 void ACPI_INTERNAL_VAR_XFACE 866 acpi_exception(const char *module_name, 867 u32 line_number, 868 acpi_status status, 869 const char *format, ...)) 870 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 871 void ACPI_INTERNAL_VAR_XFACE 872 acpi_warning(const char *module_name, 873 u32 line_number, 874 const char *format, ...)) 875 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 876 void ACPI_INTERNAL_VAR_XFACE 877 acpi_info(const char *module_name, 878 u32 line_number, 879 const char *format, ...)) 880 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 881 void ACPI_INTERNAL_VAR_XFACE 882 acpi_bios_error(const char *module_name, 883 u32 line_number, 884 const char *format, ...)) 885 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 886 void ACPI_INTERNAL_VAR_XFACE 887 acpi_bios_warning(const char *module_name, 888 u32 line_number, 889 const char *format, ...)) 890 891 /* 892 * Debug output 893 */ 894 ACPI_DBG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(6) 895 void ACPI_INTERNAL_VAR_XFACE 896 acpi_debug_print(u32 requested_debug_level, 897 u32 line_number, 898 const char *function_name, 899 const char *module_name, 900 u32 component_id, 901 const char *format, ...)) 902 ACPI_DBG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(6) 903 void ACPI_INTERNAL_VAR_XFACE 904 acpi_debug_print_raw(u32 requested_debug_level, 905 u32 line_number, 906 const char *function_name, 907 const char *module_name, 908 u32 component_id, 909 const char *format, ...)) 910 ACPI_APP_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(1) 911 void ACPI_INTERNAL_VAR_XFACE 912 acpi_log_error(const char *format, ...)) 913 914 /* 915 * Divergences 916 */ 917 ACPI_GLOBAL(u8, acpi_gbl_permanent_mmap); 918 919 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 920 acpi_get_table_with_size(acpi_string signature, 921 u32 instance, 922 struct acpi_table_header 923 **out_table, 924 acpi_size *tbl_size)) 925 926 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 927 acpi_get_data_full(acpi_handle object, 928 acpi_object_handler handler, 929 void **data, 930 void (*callback)(void *))) 931 932 #endif /* __ACXFACE_H__ */ 933