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