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