Subversion Repositories Kolibri OS

Rev

Rev 6588 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

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