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