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