1 /****************************************************************************** 2 * 3 * Name: acpixf.h - External interfaces to the ACPI subsystem 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2018, 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 0x20180105 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 validate (map) an entire table to verify 164 * checksum/duplication in early stage before install. Set this to TRUE to 165 * allow early table validation before install it to the table manager. 166 * Note that enabling this option causes errors to happen in some OSPMs 167 * during early initialization stages. Default behavior is to allow such 168 * validation. 169 */ 170 ACPI_INIT_GLOBAL(u8, acpi_gbl_enable_table_validation, TRUE); 171 172 /* 173 * Optionally enable output from the AML Debug Object. 174 */ 175 ACPI_INIT_GLOBAL(u8, acpi_gbl_enable_aml_debug_object, FALSE); 176 177 /* 178 * Optionally copy the entire DSDT to local memory (instead of simply 179 * mapping it.) There are some BIOSs that corrupt or replace the original 180 * DSDT, creating the need for this option. Default is FALSE, do not copy 181 * the DSDT. 182 */ 183 ACPI_INIT_GLOBAL(u8, acpi_gbl_copy_dsdt_locally, FALSE); 184 185 /* 186 * Optionally ignore an XSDT if present and use the RSDT instead. 187 * Although the ACPI specification requires that an XSDT be used instead 188 * of the RSDT, the XSDT has been found to be corrupt or ill-formed on 189 * some machines. Default behavior is to use the XSDT if present. 190 */ 191 ACPI_INIT_GLOBAL(u8, acpi_gbl_do_not_use_xsdt, FALSE); 192 193 /* 194 * Optionally support group module level code. 195 */ 196 ACPI_INIT_GLOBAL(u8, acpi_gbl_group_module_level_code, TRUE); 197 198 /* 199 * Optionally support module level code by parsing the entire table as 200 * a term_list. Default is FALSE, do not execute entire table until some 201 * lock order issues are fixed. 202 */ 203 ACPI_INIT_GLOBAL(u8, acpi_gbl_parse_table_as_term_list, FALSE); 204 205 /* 206 * Optionally use 32-bit FADT addresses if and when there is a conflict 207 * (address mismatch) between the 32-bit and 64-bit versions of the 208 * address. Although ACPICA adheres to the ACPI specification which 209 * requires the use of the corresponding 64-bit address if it is non-zero, 210 * some machines have been found to have a corrupted non-zero 64-bit 211 * address. Default is FALSE, do not favor the 32-bit addresses. 212 */ 213 ACPI_INIT_GLOBAL(u8, acpi_gbl_use32_bit_fadt_addresses, FALSE); 214 215 /* 216 * Optionally use 32-bit FACS table addresses. 217 * It is reported that some platforms fail to resume from system suspending 218 * if 64-bit FACS table address is selected: 219 * https://bugzilla.kernel.org/show_bug.cgi?id=74021 220 * Default is TRUE, favor the 32-bit addresses. 221 */ 222 ACPI_INIT_GLOBAL(u8, acpi_gbl_use32_bit_facs_addresses, TRUE); 223 224 /* 225 * Optionally truncate I/O addresses to 16 bits. Provides compatibility 226 * with other ACPI implementations. NOTE: During ACPICA initialization, 227 * this value is set to TRUE if any Windows OSI strings have been 228 * requested by the BIOS. 229 */ 230 ACPI_INIT_GLOBAL(u8, acpi_gbl_truncate_io_addresses, FALSE); 231 232 /* 233 * Disable runtime checking and repair of values returned by control methods. 234 * Use only if the repair is causing a problem on a particular machine. 235 */ 236 ACPI_INIT_GLOBAL(u8, acpi_gbl_disable_auto_repair, FALSE); 237 238 /* 239 * Optionally do not install any SSDTs from the RSDT/XSDT during initialization. 240 * This can be useful for debugging ACPI problems on some machines. 241 */ 242 ACPI_INIT_GLOBAL(u8, acpi_gbl_disable_ssdt_table_install, FALSE); 243 244 /* 245 * Optionally enable runtime namespace override. 246 */ 247 ACPI_INIT_GLOBAL(u8, acpi_gbl_runtime_namespace_override, TRUE); 248 249 /* 250 * We keep track of the latest version of Windows that has been requested by 251 * the BIOS. ACPI 5.0. 252 */ 253 ACPI_INIT_GLOBAL(u8, acpi_gbl_osi_data, 0); 254 255 /* 256 * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning 257 * that the ACPI hardware is no longer required. A flag in the FADT indicates 258 * a reduced HW machine, and that flag is duplicated here for convenience. 259 */ 260 ACPI_INIT_GLOBAL(u8, acpi_gbl_reduced_hardware, FALSE); 261 262 /* 263 * Maximum timeout for While() loop iterations before forced method abort. 264 * This mechanism is intended to prevent infinite loops during interpreter 265 * execution within a host kernel. 266 */ 267 ACPI_INIT_GLOBAL(u32, acpi_gbl_max_loop_iterations, ACPI_MAX_LOOP_TIMEOUT); 268 269 /* 270 * This mechanism is used to trace a specified AML method. The method is 271 * traced each time it is executed. 272 */ 273 ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_flags, 0); 274 ACPI_INIT_GLOBAL(const char *, acpi_gbl_trace_method_name, NULL); 275 ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_dbg_level, ACPI_TRACE_LEVEL_DEFAULT); 276 ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_dbg_layer, ACPI_TRACE_LAYER_DEFAULT); 277 278 /* 279 * Runtime configuration of debug output control masks. We want the debug 280 * switches statically initialized so they are already set when the debugger 281 * is entered. 282 */ 283 ACPI_INIT_GLOBAL(u32, acpi_dbg_level, ACPI_DEBUG_DEFAULT); 284 ACPI_INIT_GLOBAL(u32, acpi_dbg_layer, 0); 285 286 /* Optionally enable timer output with Debug Object output */ 287 288 ACPI_INIT_GLOBAL(u8, acpi_gbl_display_debug_timer, FALSE); 289 290 /* 291 * Debugger command handshake globals. Host OSes need to access these 292 * variables to implement their own command handshake mechanism. 293 */ 294 #ifdef ACPI_DEBUGGER 295 ACPI_INIT_GLOBAL(u8, acpi_gbl_method_executing, FALSE); 296 ACPI_GLOBAL(char, acpi_gbl_db_line_buf[ACPI_DB_LINE_BUFFER_SIZE]); 297 #endif 298 299 /* 300 * Other miscellaneous globals 301 */ 302 ACPI_GLOBAL(struct acpi_table_fadt, acpi_gbl_FADT); 303 ACPI_GLOBAL(u32, acpi_current_gpe_count); 304 ACPI_GLOBAL(u8, acpi_gbl_system_awake_and_running); 305 306 /***************************************************************************** 307 * 308 * ACPICA public interface configuration. 309 * 310 * Interfaces that are configured out of the ACPICA build are replaced 311 * by inlined stubs by default. 312 * 313 ****************************************************************************/ 314 315 /* 316 * Hardware-reduced prototypes (default: Not hardware reduced). 317 * 318 * All ACPICA hardware-related interfaces that use these macros will be 319 * configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag 320 * is set to TRUE. 321 * 322 * Note: This static build option for reduced hardware is intended to 323 * reduce ACPICA code size if desired or necessary. However, even if this 324 * option is not specified, the runtime behavior of ACPICA is dependent 325 * on the actual FADT reduced hardware flag (HW_REDUCED_ACPI). If set, 326 * the flag will enable similar behavior -- ACPICA will not attempt 327 * to access any ACPI-relate hardware (SCI, GPEs, Fixed Events, etc.) 328 */ 329 #if (!ACPI_REDUCED_HARDWARE) 330 #define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \ 331 ACPI_EXTERNAL_RETURN_STATUS(prototype) 332 333 #define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \ 334 ACPI_EXTERNAL_RETURN_OK(prototype) 335 336 #define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \ 337 ACPI_EXTERNAL_RETURN_VOID(prototype) 338 339 #else 340 #define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \ 341 static ACPI_INLINE prototype {return(AE_NOT_CONFIGURED);} 342 343 #define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \ 344 static ACPI_INLINE prototype {return(AE_OK);} 345 346 #define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \ 347 static ACPI_INLINE prototype {return;} 348 349 #endif /* !ACPI_REDUCED_HARDWARE */ 350 351 /* 352 * Error message prototypes (default: error messages enabled). 353 * 354 * All interfaces related to error and warning messages 355 * will be configured out of the ACPICA build if the 356 * ACPI_NO_ERROR_MESSAGE flag is defined. 357 */ 358 #ifndef ACPI_NO_ERROR_MESSAGES 359 #define ACPI_MSG_DEPENDENT_RETURN_VOID(prototype) \ 360 prototype; 361 362 #else 363 #define ACPI_MSG_DEPENDENT_RETURN_VOID(prototype) \ 364 static ACPI_INLINE prototype {return;} 365 366 #endif /* ACPI_NO_ERROR_MESSAGES */ 367 368 /* 369 * Debugging output prototypes (default: no debug output). 370 * 371 * All interfaces related to debug output messages 372 * will be configured out of the ACPICA build unless the 373 * ACPI_DEBUG_OUTPUT flag is defined. 374 */ 375 #ifdef ACPI_DEBUG_OUTPUT 376 #define ACPI_DBG_DEPENDENT_RETURN_VOID(prototype) \ 377 prototype; 378 379 #else 380 #define ACPI_DBG_DEPENDENT_RETURN_VOID(prototype) \ 381 static ACPI_INLINE prototype {return;} 382 383 #endif /* ACPI_DEBUG_OUTPUT */ 384 385 /* 386 * Application prototypes 387 * 388 * All interfaces used by application will be configured 389 * out of the ACPICA build unless the ACPI_APPLICATION 390 * flag is defined. 391 */ 392 #ifdef ACPI_APPLICATION 393 #define ACPI_APP_DEPENDENT_RETURN_VOID(prototype) \ 394 prototype; 395 396 #else 397 #define ACPI_APP_DEPENDENT_RETURN_VOID(prototype) \ 398 static ACPI_INLINE prototype {return;} 399 400 #endif /* ACPI_APPLICATION */ 401 402 /* 403 * Debugger prototypes 404 * 405 * All interfaces used by debugger will be configured 406 * out of the ACPICA build unless the ACPI_DEBUGGER 407 * flag is defined. 408 */ 409 #ifdef ACPI_DEBUGGER 410 #define ACPI_DBR_DEPENDENT_RETURN_OK(prototype) \ 411 ACPI_EXTERNAL_RETURN_OK(prototype) 412 413 #define ACPI_DBR_DEPENDENT_RETURN_VOID(prototype) \ 414 ACPI_EXTERNAL_RETURN_VOID(prototype) 415 416 #else 417 #define ACPI_DBR_DEPENDENT_RETURN_OK(prototype) \ 418 static ACPI_INLINE prototype {return(AE_OK);} 419 420 #define ACPI_DBR_DEPENDENT_RETURN_VOID(prototype) \ 421 static ACPI_INLINE prototype {return;} 422 423 #endif /* ACPI_DEBUGGER */ 424 425 /***************************************************************************** 426 * 427 * ACPICA public interface prototypes 428 * 429 ****************************************************************************/ 430 431 /* 432 * Initialization 433 */ 434 ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION 435 acpi_initialize_tables(struct acpi_table_desc 436 *initial_storage, 437 u32 initial_table_count, 438 u8 allow_resize)) 439 ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION 440 acpi_initialize_subsystem(void)) 441 ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION 442 acpi_enable_subsystem(u32 flags)) 443 ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION 444 acpi_initialize_objects(u32 flags)) 445 ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION 446 acpi_terminate(void)) 447 448 /* 449 * Miscellaneous global interfaces 450 */ 451 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable(void)) 452 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable(void)) 453 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_subsystem_status(void)) 454 455 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 456 acpi_get_system_info(struct acpi_buffer 457 *ret_buffer)) 458 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 459 acpi_get_statistics(struct acpi_statistics *stats)) 460 ACPI_EXTERNAL_RETURN_PTR(const char 461 *acpi_format_exception(acpi_status exception)) 462 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_purge_cached_objects(void)) 463 464 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 465 acpi_install_interface(acpi_string interface_name)) 466 467 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 468 acpi_remove_interface(acpi_string interface_name)) 469 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_update_interfaces(u8 action)) 470 471 ACPI_EXTERNAL_RETURN_UINT32(u32 472 acpi_check_address_range(acpi_adr_space_type 473 space_id, 474 acpi_physical_address 475 address, acpi_size length, 476 u8 warn)) 477 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 478 acpi_decode_pld_buffer(u8 *in_buffer, 479 acpi_size length, 480 struct acpi_pld_info 481 **return_buffer)) 482 483 /* 484 * ACPI table load/unload interfaces 485 */ 486 ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION 487 acpi_install_table(acpi_physical_address address, 488 u8 physical)) 489 490 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 491 acpi_load_table(struct acpi_table_header *table)) 492 493 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 494 acpi_unload_parent_table(acpi_handle object)) 495 496 ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION 497 acpi_load_tables(void)) 498 499 /* 500 * ACPI table manipulation interfaces 501 */ 502 ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION 503 acpi_reallocate_root_table(void)) 504 505 ACPI_EXTERNAL_RETURN_STATUS(acpi_status ACPI_INIT_FUNCTION 506 acpi_find_root_pointer(acpi_physical_address 507 *rsdp_address)) 508 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 509 acpi_get_table_header(acpi_string signature, 510 u32 instance, 511 struct acpi_table_header 512 *out_table_header)) 513 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 514 acpi_get_table(acpi_string signature, u32 instance, 515 struct acpi_table_header 516 **out_table)) 517 ACPI_EXTERNAL_RETURN_VOID(void acpi_put_table(struct acpi_table_header *table)) 518 519 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 520 acpi_get_table_by_index(u32 table_index, 521 struct acpi_table_header 522 **out_table)) 523 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 524 acpi_install_table_handler(acpi_table_handler 525 handler, void *context)) 526 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 527 acpi_remove_table_handler(acpi_table_handler 528 handler)) 529 530 /* 531 * Namespace and name interfaces 532 */ 533 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 534 acpi_walk_namespace(acpi_object_type type, 535 acpi_handle start_object, 536 u32 max_depth, 537 acpi_walk_callback 538 descending_callback, 539 acpi_walk_callback 540 ascending_callback, 541 void *context, 542 void **return_value)) 543 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 544 acpi_get_devices(const char *HID, 545 acpi_walk_callback user_function, 546 void *context, 547 void **return_value)) 548 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 549 acpi_get_name(acpi_handle object, u32 name_type, 550 struct acpi_buffer *ret_path_ptr)) 551 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 552 acpi_get_handle(acpi_handle parent, 553 acpi_string pathname, 554 acpi_handle *ret_handle)) 555 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 556 acpi_attach_data(acpi_handle object, 557 acpi_object_handler handler, 558 void *data)) 559 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 560 acpi_detach_data(acpi_handle object, 561 acpi_object_handler handler)) 562 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 563 acpi_get_data(acpi_handle object, 564 acpi_object_handler handler, 565 void **data)) 566 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 567 acpi_debug_trace(const char *name, u32 debug_level, 568 u32 debug_layer, u32 flags)) 569 570 /* 571 * Object manipulation and enumeration 572 */ 573 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 574 acpi_evaluate_object(acpi_handle object, 575 acpi_string pathname, 576 struct acpi_object_list 577 *parameter_objects, 578 struct acpi_buffer 579 *return_object_buffer)) 580 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 581 acpi_evaluate_object_typed(acpi_handle object, 582 acpi_string pathname, 583 struct acpi_object_list 584 *external_params, 585 struct acpi_buffer 586 *return_buffer, 587 acpi_object_type 588 return_type)) 589 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 590 acpi_get_object_info(acpi_handle object, 591 struct acpi_device_info 592 **return_buffer)) 593 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_install_method(u8 *buffer)) 594 595 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 596 acpi_get_next_object(acpi_object_type type, 597 acpi_handle parent, 598 acpi_handle child, 599 acpi_handle *out_handle)) 600 601 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 602 acpi_get_type(acpi_handle object, 603 acpi_object_type *out_type)) 604 605 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 606 acpi_get_parent(acpi_handle object, 607 acpi_handle *out_handle)) 608 609 /* 610 * Handler interfaces 611 */ 612 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 613 acpi_install_initialization_handler 614 (acpi_init_handler handler, u32 function)) 615 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 616 acpi_install_sci_handler(acpi_sci_handler 617 address, 618 void *context)) 619 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 620 acpi_remove_sci_handler(acpi_sci_handler 621 address)) 622 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 623 acpi_install_global_event_handler 624 (acpi_gbl_event_handler handler, 625 void *context)) 626 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 627 acpi_install_fixed_event_handler(u32 628 acpi_event, 629 acpi_event_handler 630 handler, 631 void 632 *context)) 633 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 634 acpi_remove_fixed_event_handler(u32 acpi_event, 635 acpi_event_handler 636 handler)) 637 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 638 acpi_install_gpe_handler(acpi_handle 639 gpe_device, 640 u32 gpe_number, 641 u32 type, 642 acpi_gpe_handler 643 address, 644 void *context)) 645 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 646 acpi_install_gpe_raw_handler(acpi_handle 647 gpe_device, 648 u32 gpe_number, 649 u32 type, 650 acpi_gpe_handler 651 address, 652 void *context)) 653 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 654 acpi_remove_gpe_handler(acpi_handle gpe_device, 655 u32 gpe_number, 656 acpi_gpe_handler 657 address)) 658 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 659 acpi_install_notify_handler(acpi_handle device, 660 u32 handler_type, 661 acpi_notify_handler 662 handler, 663 void *context)) 664 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 665 acpi_remove_notify_handler(acpi_handle device, 666 u32 handler_type, 667 acpi_notify_handler 668 handler)) 669 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 670 acpi_install_address_space_handler(acpi_handle 671 device, 672 acpi_adr_space_type 673 space_id, 674 acpi_adr_space_handler 675 handler, 676 acpi_adr_space_setup 677 setup, 678 void *context)) 679 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 680 acpi_remove_address_space_handler(acpi_handle 681 device, 682 acpi_adr_space_type 683 space_id, 684 acpi_adr_space_handler 685 handler)) 686 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 687 acpi_install_exception_handler 688 (acpi_exception_handler handler)) 689 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 690 acpi_install_interface_handler 691 (acpi_interface_handler handler)) 692 693 /* 694 * Global Lock interfaces 695 */ 696 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 697 acpi_acquire_global_lock(u16 timeout, 698 u32 *handle)) 699 700 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 701 acpi_release_global_lock(u32 handle)) 702 703 /* 704 * Interfaces to AML mutex objects 705 */ 706 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 707 acpi_acquire_mutex(acpi_handle handle, 708 acpi_string pathname, 709 u16 timeout)) 710 711 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 712 acpi_release_mutex(acpi_handle handle, 713 acpi_string pathname)) 714 715 /* 716 * Fixed Event interfaces 717 */ 718 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 719 acpi_enable_event(u32 event, u32 flags)) 720 721 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 722 acpi_disable_event(u32 event, u32 flags)) 723 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_clear_event(u32 event)) 724 725 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 726 acpi_get_event_status(u32 event, 727 acpi_event_status 728 *event_status)) 729 730 /* 731 * General Purpose Event (GPE) Interfaces 732 */ 733 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_update_all_gpes(void)) 734 735 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 736 acpi_enable_gpe(acpi_handle gpe_device, 737 u32 gpe_number)) 738 739 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 740 acpi_disable_gpe(acpi_handle gpe_device, 741 u32 gpe_number)) 742 743 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 744 acpi_clear_gpe(acpi_handle gpe_device, 745 u32 gpe_number)) 746 747 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 748 acpi_set_gpe(acpi_handle gpe_device, 749 u32 gpe_number, u8 action)) 750 751 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 752 acpi_finish_gpe(acpi_handle gpe_device, 753 u32 gpe_number)) 754 755 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 756 acpi_mask_gpe(acpi_handle gpe_device, 757 u32 gpe_number, u8 is_masked)) 758 759 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 760 acpi_mark_gpe_for_wake(acpi_handle gpe_device, 761 u32 gpe_number)) 762 763 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 764 acpi_setup_gpe_for_wake(acpi_handle 765 parent_device, 766 acpi_handle gpe_device, 767 u32 gpe_number)) 768 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 769 acpi_set_gpe_wake_mask(acpi_handle gpe_device, 770 u32 gpe_number, 771 u8 action)) 772 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 773 acpi_get_gpe_status(acpi_handle gpe_device, 774 u32 gpe_number, 775 acpi_event_status 776 *event_status)) 777 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable_all_gpes(void)) 778 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_runtime_gpes(void)) 779 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_wakeup_gpes(void)) 780 781 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 782 acpi_get_gpe_device(u32 gpe_index, 783 acpi_handle *gpe_device)) 784 785 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 786 acpi_install_gpe_block(acpi_handle gpe_device, 787 struct 788 acpi_generic_address 789 *gpe_block_address, 790 u32 register_count, 791 u32 interrupt_number)) 792 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 793 acpi_remove_gpe_block(acpi_handle gpe_device)) 794 795 /* 796 * Resource interfaces 797 */ 798 typedef 799 acpi_status (*acpi_walk_resource_callback) (struct acpi_resource * resource, 800 void *context); 801 802 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 803 acpi_get_vendor_resource(acpi_handle device, 804 char *name, 805 struct acpi_vendor_uuid 806 *uuid, 807 struct acpi_buffer 808 *ret_buffer)) 809 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 810 acpi_get_current_resources(acpi_handle device, 811 struct acpi_buffer 812 *ret_buffer)) 813 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 814 acpi_get_possible_resources(acpi_handle device, 815 struct acpi_buffer 816 *ret_buffer)) 817 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 818 acpi_get_event_resources(acpi_handle device_handle, 819 struct acpi_buffer 820 *ret_buffer)) 821 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 822 acpi_walk_resource_buffer(struct acpi_buffer 823 *buffer, 824 acpi_walk_resource_callback 825 user_function, 826 void *context)) 827 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 828 acpi_walk_resources(acpi_handle device, char *name, 829 acpi_walk_resource_callback 830 user_function, void *context)) 831 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 832 acpi_set_current_resources(acpi_handle device, 833 struct acpi_buffer 834 *in_buffer)) 835 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 836 acpi_get_irq_routing_table(acpi_handle device, 837 struct acpi_buffer 838 *ret_buffer)) 839 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 840 acpi_resource_to_address64(struct acpi_resource 841 *resource, 842 struct 843 acpi_resource_address64 844 *out)) 845 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 846 acpi_buffer_to_resource(u8 *aml_buffer, 847 u16 aml_buffer_length, 848 struct acpi_resource 849 **resource_ptr)) 850 851 /* 852 * Hardware (ACPI device) interfaces 853 */ 854 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_reset(void)) 855 856 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 857 acpi_read(u64 *value, 858 struct acpi_generic_address *reg)) 859 860 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 861 acpi_write(u64 value, 862 struct acpi_generic_address *reg)) 863 864 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 865 acpi_read_bit_register(u32 register_id, 866 u32 *return_value)) 867 868 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 869 acpi_write_bit_register(u32 register_id, 870 u32 value)) 871 872 /* 873 * Sleep/Wake interfaces 874 */ 875 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 876 acpi_get_sleep_type_data(u8 sleep_state, 877 u8 *slp_typ_a, 878 u8 *slp_typ_b)) 879 880 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 881 acpi_enter_sleep_state_prep(u8 sleep_state)) 882 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_enter_sleep_state(u8 sleep_state)) 883 884 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enter_sleep_state_s4bios(void)) 885 886 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 887 acpi_leave_sleep_state_prep(u8 sleep_state)) 888 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_leave_sleep_state(u8 sleep_state)) 889 890 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 891 acpi_set_firmware_waking_vector 892 (acpi_physical_address physical_address, 893 acpi_physical_address physical_address64)) 894 /* 895 * ACPI Timer interfaces 896 */ 897 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 898 acpi_get_timer_resolution(u32 *resolution)) 899 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_get_timer(u32 *ticks)) 900 901 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 902 acpi_get_timer_duration(u32 start_ticks, 903 u32 end_ticks, 904 u32 *time_elapsed)) 905 906 /* 907 * Error/Warning output 908 */ 909 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 910 void ACPI_INTERNAL_VAR_XFACE 911 acpi_error(const char *module_name, 912 u32 line_number, 913 const char *format, ...)) 914 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(4) 915 void ACPI_INTERNAL_VAR_XFACE 916 acpi_exception(const char *module_name, 917 u32 line_number, 918 acpi_status status, 919 const char *format, ...)) 920 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 921 void ACPI_INTERNAL_VAR_XFACE 922 acpi_warning(const char *module_name, 923 u32 line_number, 924 const char *format, ...)) 925 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(1) 926 void ACPI_INTERNAL_VAR_XFACE 927 acpi_info(const char *format, ...)) 928 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 929 void ACPI_INTERNAL_VAR_XFACE 930 acpi_bios_error(const char *module_name, 931 u32 line_number, 932 const char *format, ...)) 933 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 934 void ACPI_INTERNAL_VAR_XFACE 935 acpi_bios_warning(const char *module_name, 936 u32 line_number, 937 const char *format, ...)) 938 939 /* 940 * Debug output 941 */ 942 ACPI_DBG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(6) 943 void ACPI_INTERNAL_VAR_XFACE 944 acpi_debug_print(u32 requested_debug_level, 945 u32 line_number, 946 const char *function_name, 947 const char *module_name, 948 u32 component_id, 949 const char *format, ...)) 950 ACPI_DBG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(6) 951 void ACPI_INTERNAL_VAR_XFACE 952 acpi_debug_print_raw(u32 requested_debug_level, 953 u32 line_number, 954 const char *function_name, 955 const char *module_name, 956 u32 component_id, 957 const char *format, ...)) 958 959 ACPI_DBG_DEPENDENT_RETURN_VOID(void 960 acpi_trace_point(acpi_trace_event_type type, 961 u8 begin, 962 u8 *aml, char *pathname)) 963 964 acpi_status acpi_initialize_debugger(void); 965 966 void acpi_terminate_debugger(void); 967 968 /* 969 * Divergences 970 */ 971 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 972 acpi_get_data_full(acpi_handle object, 973 acpi_object_handler handler, 974 void **data, 975 void (*callback)(void *))) 976 977 void acpi_run_debugger(char *batch_buffer); 978 979 void acpi_set_debugger_thread_id(acpi_thread_id thread_id); 980 981 #endif /* __ACXFACE_H__ */ 982