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 0x20150818 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(const char *, acpi_gbl_trace_method_name, NULL); 255 ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_dbg_level, ACPI_TRACE_LEVEL_DEFAULT); 256 ACPI_INIT_GLOBAL(u32, acpi_gbl_trace_dbg_layer, ACPI_TRACE_LAYER_DEFAULT); 257 258 /* 259 * Runtime configuration of debug output control masks. We want the debug 260 * switches statically initialized so they are already set when the debugger 261 * is entered. 262 */ 263 ACPI_INIT_GLOBAL(u32, acpi_dbg_level, ACPI_DEBUG_DEFAULT); 264 ACPI_INIT_GLOBAL(u32, acpi_dbg_layer, 0); 265 266 /* 267 * Other miscellaneous globals 268 */ 269 ACPI_GLOBAL(struct acpi_table_fadt, acpi_gbl_FADT); 270 ACPI_GLOBAL(u32, acpi_current_gpe_count); 271 ACPI_GLOBAL(u8, acpi_gbl_system_awake_and_running); 272 273 /***************************************************************************** 274 * 275 * ACPICA public interface configuration. 276 * 277 * Interfaces that are configured out of the ACPICA build are replaced 278 * by inlined stubs by default. 279 * 280 ****************************************************************************/ 281 282 /* 283 * Hardware-reduced prototypes (default: Not hardware reduced). 284 * 285 * All ACPICA hardware-related interfaces that use these macros will be 286 * configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag 287 * is set to TRUE. 288 * 289 * Note: This static build option for reduced hardware is intended to 290 * reduce ACPICA code size if desired or necessary. However, even if this 291 * option is not specified, the runtime behavior of ACPICA is dependent 292 * on the actual FADT reduced hardware flag (HW_REDUCED_ACPI). If set, 293 * the flag will enable similar behavior -- ACPICA will not attempt 294 * to access any ACPI-relate hardware (SCI, GPEs, Fixed Events, etc.) 295 */ 296 #if (!ACPI_REDUCED_HARDWARE) 297 #define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \ 298 ACPI_EXTERNAL_RETURN_STATUS(prototype) 299 300 #define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \ 301 ACPI_EXTERNAL_RETURN_OK(prototype) 302 303 #define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \ 304 ACPI_EXTERNAL_RETURN_VOID(prototype) 305 306 #else 307 #define ACPI_HW_DEPENDENT_RETURN_STATUS(prototype) \ 308 static ACPI_INLINE prototype {return(AE_NOT_CONFIGURED);} 309 310 #define ACPI_HW_DEPENDENT_RETURN_OK(prototype) \ 311 static ACPI_INLINE prototype {return(AE_OK);} 312 313 #define ACPI_HW_DEPENDENT_RETURN_VOID(prototype) \ 314 static ACPI_INLINE prototype {return;} 315 316 #endif /* !ACPI_REDUCED_HARDWARE */ 317 318 /* 319 * Error message prototypes (default: error messages enabled). 320 * 321 * All interfaces related to error and warning messages 322 * will be configured out of the ACPICA build if the 323 * ACPI_NO_ERROR_MESSAGE flag is defined. 324 */ 325 #ifndef ACPI_NO_ERROR_MESSAGES 326 #define ACPI_MSG_DEPENDENT_RETURN_VOID(prototype) \ 327 prototype; 328 329 #else 330 #define ACPI_MSG_DEPENDENT_RETURN_VOID(prototype) \ 331 static ACPI_INLINE prototype {return;} 332 333 #endif /* ACPI_NO_ERROR_MESSAGES */ 334 335 /* 336 * Debugging output prototypes (default: no debug output). 337 * 338 * All interfaces related to debug output messages 339 * will be configured out of the ACPICA build unless the 340 * ACPI_DEBUG_OUTPUT flag is defined. 341 */ 342 #ifdef ACPI_DEBUG_OUTPUT 343 #define ACPI_DBG_DEPENDENT_RETURN_VOID(prototype) \ 344 prototype; 345 346 #else 347 #define ACPI_DBG_DEPENDENT_RETURN_VOID(prototype) \ 348 static ACPI_INLINE prototype {return;} 349 350 #endif /* ACPI_DEBUG_OUTPUT */ 351 352 /* 353 * Application prototypes 354 * 355 * All interfaces used by application will be configured 356 * out of the ACPICA build unless the ACPI_APPLICATION 357 * flag is defined. 358 */ 359 #ifdef ACPI_APPLICATION 360 #define ACPI_APP_DEPENDENT_RETURN_VOID(prototype) \ 361 prototype; 362 363 #else 364 #define ACPI_APP_DEPENDENT_RETURN_VOID(prototype) \ 365 static ACPI_INLINE prototype {return;} 366 367 #endif /* ACPI_APPLICATION */ 368 369 /***************************************************************************** 370 * 371 * ACPICA public interface prototypes 372 * 373 ****************************************************************************/ 374 375 /* 376 * Initialization 377 */ 378 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init 379 acpi_initialize_tables(struct acpi_table_desc 380 *initial_storage, 381 u32 initial_table_count, 382 u8 allow_resize)) 383 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_initialize_subsystem(void)) 384 385 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_enable_subsystem(u32 flags)) 386 387 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init 388 acpi_initialize_objects(u32 flags)) 389 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_terminate(void)) 390 391 /* 392 * Miscellaneous global interfaces 393 */ 394 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable(void)) 395 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable(void)) 396 #ifdef ACPI_FUTURE_USAGE 397 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_subsystem_status(void)) 398 #endif 399 400 #ifdef ACPI_FUTURE_USAGE 401 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 402 acpi_get_system_info(struct acpi_buffer 403 *ret_buffer)) 404 #endif 405 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 406 acpi_get_statistics(struct acpi_statistics *stats)) 407 ACPI_EXTERNAL_RETURN_PTR(const char 408 *acpi_format_exception(acpi_status exception)) 409 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_purge_cached_objects(void)) 410 411 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 412 acpi_install_interface(acpi_string interface_name)) 413 414 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 415 acpi_remove_interface(acpi_string interface_name)) 416 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_update_interfaces(u8 action)) 417 418 ACPI_EXTERNAL_RETURN_UINT32(u32 419 acpi_check_address_range(acpi_adr_space_type 420 space_id, 421 acpi_physical_address 422 address, acpi_size length, 423 u8 warn)) 424 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 425 acpi_decode_pld_buffer(u8 *in_buffer, 426 acpi_size length, 427 struct acpi_pld_info 428 **return_buffer)) 429 430 /* 431 * ACPI table load/unload interfaces 432 */ 433 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init 434 acpi_install_table(acpi_physical_address address, 435 u8 physical)) 436 437 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 438 acpi_load_table(struct acpi_table_header *table)) 439 440 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 441 acpi_unload_parent_table(acpi_handle object)) 442 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_load_tables(void)) 443 444 /* 445 * ACPI table manipulation interfaces 446 */ 447 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init acpi_reallocate_root_table(void)) 448 449 ACPI_EXTERNAL_RETURN_STATUS(acpi_status __init 450 acpi_find_root_pointer(acpi_physical_address * 451 rsdp_address)) 452 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 453 acpi_get_table_header(acpi_string signature, 454 u32 instance, 455 struct acpi_table_header 456 *out_table_header)) 457 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 458 acpi_get_table(acpi_string signature, u32 instance, 459 struct acpi_table_header 460 **out_table)) 461 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 462 acpi_get_table_by_index(u32 table_index, 463 struct acpi_table_header 464 **out_table)) 465 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 466 acpi_install_table_handler(acpi_table_handler 467 handler, void *context)) 468 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 469 acpi_remove_table_handler(acpi_table_handler 470 handler)) 471 472 /* 473 * Namespace and name interfaces 474 */ 475 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 476 acpi_walk_namespace(acpi_object_type type, 477 acpi_handle start_object, 478 u32 max_depth, 479 acpi_walk_callback 480 descending_callback, 481 acpi_walk_callback 482 ascending_callback, 483 void *context, 484 void **return_value)) 485 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 486 acpi_get_devices(const char *HID, 487 acpi_walk_callback user_function, 488 void *context, 489 void **return_value)) 490 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 491 acpi_get_name(acpi_handle object, u32 name_type, 492 struct acpi_buffer *ret_path_ptr)) 493 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 494 acpi_get_handle(acpi_handle parent, 495 acpi_string pathname, 496 acpi_handle * ret_handle)) 497 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 498 acpi_attach_data(acpi_handle object, 499 acpi_object_handler handler, 500 void *data)) 501 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 502 acpi_detach_data(acpi_handle object, 503 acpi_object_handler handler)) 504 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 505 acpi_get_data(acpi_handle object, 506 acpi_object_handler handler, 507 void **data)) 508 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 509 acpi_debug_trace(const char *name, u32 debug_level, 510 u32 debug_layer, u32 flags)) 511 512 /* 513 * Object manipulation and enumeration 514 */ 515 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 516 acpi_evaluate_object(acpi_handle object, 517 acpi_string pathname, 518 struct acpi_object_list 519 *parameter_objects, 520 struct acpi_buffer 521 *return_object_buffer)) 522 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 523 acpi_evaluate_object_typed(acpi_handle object, 524 acpi_string pathname, 525 struct acpi_object_list 526 *external_params, 527 struct acpi_buffer 528 *return_buffer, 529 acpi_object_type 530 return_type)) 531 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 532 acpi_get_object_info(acpi_handle object, 533 struct acpi_device_info 534 **return_buffer)) 535 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_install_method(u8 *buffer)) 536 537 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 538 acpi_get_next_object(acpi_object_type type, 539 acpi_handle parent, 540 acpi_handle child, 541 acpi_handle * out_handle)) 542 543 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 544 acpi_get_type(acpi_handle object, 545 acpi_object_type * out_type)) 546 547 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 548 acpi_get_parent(acpi_handle object, 549 acpi_handle * out_handle)) 550 551 /* 552 * Handler interfaces 553 */ 554 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 555 acpi_install_initialization_handler 556 (acpi_init_handler handler, u32 function)) 557 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 558 acpi_install_sci_handler(acpi_sci_handler 559 address, 560 void *context)) 561 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 562 acpi_remove_sci_handler(acpi_sci_handler 563 address)) 564 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 565 acpi_install_global_event_handler 566 (acpi_gbl_event_handler handler, 567 void *context)) 568 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 569 acpi_install_fixed_event_handler(u32 570 acpi_event, 571 acpi_event_handler 572 handler, 573 void 574 *context)) 575 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 576 acpi_remove_fixed_event_handler(u32 acpi_event, 577 acpi_event_handler 578 handler)) 579 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 580 acpi_install_gpe_handler(acpi_handle 581 gpe_device, 582 u32 gpe_number, 583 u32 type, 584 acpi_gpe_handler 585 address, 586 void *context)) 587 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 588 acpi_install_gpe_raw_handler(acpi_handle 589 gpe_device, 590 u32 gpe_number, 591 u32 type, 592 acpi_gpe_handler 593 address, 594 void *context)) 595 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 596 acpi_remove_gpe_handler(acpi_handle gpe_device, 597 u32 gpe_number, 598 acpi_gpe_handler 599 address)) 600 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 601 acpi_install_notify_handler(acpi_handle device, 602 u32 handler_type, 603 acpi_notify_handler 604 handler, 605 void *context)) 606 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 607 acpi_remove_notify_handler(acpi_handle device, 608 u32 handler_type, 609 acpi_notify_handler 610 handler)) 611 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 612 acpi_install_address_space_handler(acpi_handle 613 device, 614 acpi_adr_space_type 615 space_id, 616 acpi_adr_space_handler 617 handler, 618 acpi_adr_space_setup 619 setup, 620 void *context)) 621 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 622 acpi_remove_address_space_handler(acpi_handle 623 device, 624 acpi_adr_space_type 625 space_id, 626 acpi_adr_space_handler 627 handler)) 628 #ifdef ACPI_FUTURE_USAGE 629 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 630 acpi_install_exception_handler 631 (acpi_exception_handler handler)) 632 #endif 633 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 634 acpi_install_interface_handler 635 (acpi_interface_handler handler)) 636 637 /* 638 * Global Lock interfaces 639 */ 640 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 641 acpi_acquire_global_lock(u16 timeout, 642 u32 *handle)) 643 644 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 645 acpi_release_global_lock(u32 handle)) 646 647 /* 648 * Interfaces to AML mutex objects 649 */ 650 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 651 acpi_acquire_mutex(acpi_handle handle, 652 acpi_string pathname, 653 u16 timeout)) 654 655 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 656 acpi_release_mutex(acpi_handle handle, 657 acpi_string pathname)) 658 659 /* 660 * Fixed Event interfaces 661 */ 662 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 663 acpi_enable_event(u32 event, u32 flags)) 664 665 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 666 acpi_disable_event(u32 event, u32 flags)) 667 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_clear_event(u32 event)) 668 669 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 670 acpi_get_event_status(u32 event, 671 acpi_event_status 672 *event_status)) 673 674 /* 675 * General Purpose Event (GPE) Interfaces 676 */ 677 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_update_all_gpes(void)) 678 679 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 680 acpi_enable_gpe(acpi_handle gpe_device, 681 u32 gpe_number)) 682 683 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 684 acpi_disable_gpe(acpi_handle gpe_device, 685 u32 gpe_number)) 686 687 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 688 acpi_clear_gpe(acpi_handle gpe_device, 689 u32 gpe_number)) 690 691 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 692 acpi_set_gpe(acpi_handle gpe_device, 693 u32 gpe_number, u8 action)) 694 695 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 696 acpi_finish_gpe(acpi_handle gpe_device, 697 u32 gpe_number)) 698 699 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 700 acpi_mark_gpe_for_wake(acpi_handle gpe_device, 701 u32 gpe_number)) 702 703 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 704 acpi_setup_gpe_for_wake(acpi_handle 705 parent_device, 706 acpi_handle gpe_device, 707 u32 gpe_number)) 708 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 709 acpi_set_gpe_wake_mask(acpi_handle gpe_device, 710 u32 gpe_number, 711 u8 action)) 712 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 713 acpi_get_gpe_status(acpi_handle gpe_device, 714 u32 gpe_number, 715 acpi_event_status 716 *event_status)) 717 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_disable_all_gpes(void)) 718 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_runtime_gpes(void)) 719 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enable_all_wakeup_gpes(void)) 720 721 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 722 acpi_get_gpe_device(u32 gpe_index, 723 acpi_handle * gpe_device)) 724 725 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 726 acpi_install_gpe_block(acpi_handle gpe_device, 727 struct 728 acpi_generic_address 729 *gpe_block_address, 730 u32 register_count, 731 u32 interrupt_number)) 732 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 733 acpi_remove_gpe_block(acpi_handle gpe_device)) 734 735 /* 736 * Resource interfaces 737 */ 738 typedef 739 acpi_status(*acpi_walk_resource_callback) (struct acpi_resource * resource, 740 void *context); 741 742 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 743 acpi_get_vendor_resource(acpi_handle device, 744 char *name, 745 struct acpi_vendor_uuid 746 *uuid, 747 struct acpi_buffer 748 *ret_buffer)) 749 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 750 acpi_get_current_resources(acpi_handle device, 751 struct acpi_buffer 752 *ret_buffer)) 753 #ifdef ACPI_FUTURE_USAGE 754 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 755 acpi_get_possible_resources(acpi_handle device, 756 struct acpi_buffer 757 *ret_buffer)) 758 #endif 759 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 760 acpi_get_event_resources(acpi_handle device_handle, 761 struct acpi_buffer 762 *ret_buffer)) 763 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 764 acpi_walk_resource_buffer(struct acpi_buffer 765 *buffer, 766 acpi_walk_resource_callback 767 user_function, 768 void *context)) 769 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 770 acpi_walk_resources(acpi_handle device, char *name, 771 acpi_walk_resource_callback 772 user_function, void *context)) 773 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 774 acpi_set_current_resources(acpi_handle device, 775 struct acpi_buffer 776 *in_buffer)) 777 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 778 acpi_get_irq_routing_table(acpi_handle device, 779 struct acpi_buffer 780 *ret_buffer)) 781 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 782 acpi_resource_to_address64(struct acpi_resource 783 *resource, 784 struct 785 acpi_resource_address64 786 *out)) 787 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 788 acpi_buffer_to_resource(u8 *aml_buffer, 789 u16 aml_buffer_length, 790 struct acpi_resource 791 **resource_ptr)) 792 793 /* 794 * Hardware (ACPI device) interfaces 795 */ 796 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_reset(void)) 797 798 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 799 acpi_read(u64 *value, 800 struct acpi_generic_address *reg)) 801 802 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 803 acpi_write(u64 value, 804 struct acpi_generic_address *reg)) 805 806 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 807 acpi_read_bit_register(u32 register_id, 808 u32 *return_value)) 809 810 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 811 acpi_write_bit_register(u32 register_id, 812 u32 value)) 813 814 /* 815 * Sleep/Wake interfaces 816 */ 817 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 818 acpi_get_sleep_type_data(u8 sleep_state, 819 u8 *slp_typ_a, 820 u8 *slp_typ_b)) 821 822 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 823 acpi_enter_sleep_state_prep(u8 sleep_state)) 824 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_enter_sleep_state(u8 sleep_state)) 825 826 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_enter_sleep_state_s4bios(void)) 827 828 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 829 acpi_leave_sleep_state_prep(u8 sleep_state)) 830 ACPI_EXTERNAL_RETURN_STATUS(acpi_status acpi_leave_sleep_state(u8 sleep_state)) 831 832 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 833 acpi_set_firmware_waking_vectors 834 (acpi_physical_address physical_address, 835 acpi_physical_address physical_address64)) 836 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 837 acpi_set_firmware_waking_vector(u32 838 physical_address)) 839 #if ACPI_MACHINE_WIDTH == 64 840 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 841 acpi_set_firmware_waking_vector64(u64 842 physical_address)) 843 #endif 844 /* 845 * ACPI Timer interfaces 846 */ 847 #ifdef ACPI_FUTURE_USAGE 848 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 849 acpi_get_timer_resolution(u32 *resolution)) 850 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status acpi_get_timer(u32 *ticks)) 851 852 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status 853 acpi_get_timer_duration(u32 start_ticks, 854 u32 end_ticks, 855 u32 *time_elapsed)) 856 #endif /* ACPI_FUTURE_USAGE */ 857 858 /* 859 * Error/Warning output 860 */ 861 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 862 void ACPI_INTERNAL_VAR_XFACE 863 acpi_error(const char *module_name, 864 u32 line_number, 865 const char *format, ...)) 866 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(4) 867 void ACPI_INTERNAL_VAR_XFACE 868 acpi_exception(const char *module_name, 869 u32 line_number, 870 acpi_status status, 871 const char *format, ...)) 872 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 873 void ACPI_INTERNAL_VAR_XFACE 874 acpi_warning(const char *module_name, 875 u32 line_number, 876 const char *format, ...)) 877 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 878 void ACPI_INTERNAL_VAR_XFACE 879 acpi_info(const char *module_name, 880 u32 line_number, 881 const char *format, ...)) 882 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 883 void ACPI_INTERNAL_VAR_XFACE 884 acpi_bios_error(const char *module_name, 885 u32 line_number, 886 const char *format, ...)) 887 ACPI_MSG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(3) 888 void ACPI_INTERNAL_VAR_XFACE 889 acpi_bios_warning(const char *module_name, 890 u32 line_number, 891 const char *format, ...)) 892 893 /* 894 * Debug output 895 */ 896 ACPI_DBG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(6) 897 void ACPI_INTERNAL_VAR_XFACE 898 acpi_debug_print(u32 requested_debug_level, 899 u32 line_number, 900 const char *function_name, 901 const char *module_name, 902 u32 component_id, 903 const char *format, ...)) 904 ACPI_DBG_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(6) 905 void ACPI_INTERNAL_VAR_XFACE 906 acpi_debug_print_raw(u32 requested_debug_level, 907 u32 line_number, 908 const char *function_name, 909 const char *module_name, 910 u32 component_id, 911 const char *format, ...)) 912 913 ACPI_DBG_DEPENDENT_RETURN_VOID(void 914 acpi_trace_point(acpi_trace_event_type type, 915 u8 begin, 916 u8 *aml, char *pathname)) 917 ACPI_APP_DEPENDENT_RETURN_VOID(ACPI_PRINTF_LIKE(1) 918 void ACPI_INTERNAL_VAR_XFACE 919 acpi_log_error(const char *format, ...)) 920 acpi_status acpi_initialize_debugger(void); 921 922 void acpi_terminate_debugger(void); 923 924 /* 925 * Divergences 926 */ 927 ACPI_GLOBAL(u8, acpi_gbl_permanent_mmap); 928 929 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 930 acpi_get_table_with_size(acpi_string signature, 931 u32 instance, 932 struct acpi_table_header 933 **out_table, 934 acpi_size *tbl_size)) 935 936 ACPI_EXTERNAL_RETURN_STATUS(acpi_status 937 acpi_get_data_full(acpi_handle object, 938 acpi_object_handler handler, 939 void **data, 940 void (*callback)(void *))) 941 942 #endif /* __ACXFACE_H__ */ 943