Merge branch 'vendor/LIBRESSL'
[dragonfly.git] / sys / contrib / dev / acpica / source / include / acpixf.h
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                 0x20160831
50
51 #include "acconfig.h"
52 #include "actypes.h"
53 #include "actbl.h"
54 #include "acbuffer.h"
55
56
57 /*****************************************************************************
58  *
59  * Macros used for ACPICA globals and configuration
60  *
61  ****************************************************************************/
62
63 /*
64  * Ensure that global variables are defined and initialized only once.
65  *
66  * The use of these macros allows for a single list of globals (here)
67  * in order to simplify maintenance of the code.
68  */
69 #ifdef DEFINE_ACPI_GLOBALS
70 #define ACPI_GLOBAL(type,name) \
71     extern type name; \
72     type name
73
74 #define ACPI_INIT_GLOBAL(type,name,value) \
75     type name=value
76
77 #else
78 #ifndef ACPI_GLOBAL
79 #define ACPI_GLOBAL(type,name) \
80     extern type name
81 #endif
82
83 #ifndef ACPI_INIT_GLOBAL
84 #define ACPI_INIT_GLOBAL(type,name,value) \
85     extern type name
86 #endif
87 #endif
88
89 /*
90  * These macros configure the various ACPICA interfaces. They are
91  * useful for generating stub inline functions for features that are
92  * configured out of the current kernel or ACPICA application.
93  */
94 #ifndef ACPI_EXTERNAL_RETURN_STATUS
95 #define ACPI_EXTERNAL_RETURN_STATUS(Prototype) \
96     Prototype;
97 #endif
98
99 #ifndef ACPI_EXTERNAL_RETURN_OK
100 #define ACPI_EXTERNAL_RETURN_OK(Prototype) \
101     Prototype;
102 #endif
103
104 #ifndef ACPI_EXTERNAL_RETURN_VOID
105 #define ACPI_EXTERNAL_RETURN_VOID(Prototype) \
106     Prototype;
107 #endif
108
109 #ifndef ACPI_EXTERNAL_RETURN_UINT32
110 #define ACPI_EXTERNAL_RETURN_UINT32(Prototype) \
111     Prototype;
112 #endif
113
114 #ifndef ACPI_EXTERNAL_RETURN_PTR
115 #define ACPI_EXTERNAL_RETURN_PTR(Prototype) \
116     Prototype;
117 #endif
118
119
120 /*****************************************************************************
121  *
122  * Public globals and runtime configuration options
123  *
124  ****************************************************************************/
125
126 /*
127  * Enable "slack mode" of the AML interpreter?  Default is FALSE, and the
128  * interpreter strictly follows the ACPI specification. Setting to TRUE
129  * allows the interpreter to ignore certain errors and/or bad AML constructs.
130  *
131  * Currently, these features are enabled by this flag:
132  *
133  * 1) Allow "implicit return" of last value in a control method
134  * 2) Allow access beyond the end of an operation region
135  * 3) Allow access to uninitialized locals/args (auto-init to integer 0)
136  * 4) Allow ANY object type to be a source operand for the Store() operator
137  * 5) Allow unresolved references (invalid target name) in package objects
138  * 6) Enable warning messages for behavior that is not ACPI spec compliant
139  */
140 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_EnableInterpreterSlack, FALSE);
141
142 /*
143  * Automatically serialize all methods that create named objects? Default
144  * is TRUE, meaning that all NonSerialized methods are scanned once at
145  * table load time to determine those that create named objects. Methods
146  * that create named objects are marked Serialized in order to prevent
147  * possible run-time problems if they are entered by more than one thread.
148  */
149 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_AutoSerializeMethods, TRUE);
150
151 /*
152  * Create the predefined _OSI method in the namespace? Default is TRUE
153  * because ACPICA is fully compatible with other ACPI implementations.
154  * Changing this will revert ACPICA (and machine ASL) to pre-OSI behavior.
155  */
156 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_CreateOsiMethod, TRUE);
157
158 /*
159  * Optionally use default values for the ACPI register widths. Set this to
160  * TRUE to use the defaults, if an FADT contains incorrect widths/lengths.
161  */
162 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_UseDefaultRegisterWidths, TRUE);
163
164 /*
165  * Whether or not to verify the table checksum before installation. Set
166  * this to TRUE to verify the table checksum before install it to the table
167  * manager. Note that enabling this option causes errors to happen in some
168  * OSPMs during early initialization stages. Default behavior is to do such
169  * verification.
170  */
171 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_VerifyTableChecksum, TRUE);
172
173 /*
174  * Optionally enable output from the AML Debug Object.
175  */
176 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_EnableAmlDebugObject, FALSE);
177
178 /*
179  * Optionally copy the entire DSDT to local memory (instead of simply
180  * mapping it.) There are some BIOSs that corrupt or replace the original
181  * DSDT, creating the need for this option. Default is FALSE, do not copy
182  * the DSDT.
183  */
184 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_CopyDsdtLocally, FALSE);
185
186 /*
187  * Optionally ignore an XSDT if present and use the RSDT instead.
188  * Although the ACPI specification requires that an XSDT be used instead
189  * of the RSDT, the XSDT has been found to be corrupt or ill-formed on
190  * some machines. Default behavior is to use the XSDT if present.
191  */
192 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DoNotUseXsdt, FALSE);
193
194 /*
195  * Optionally support group module level code.
196  */
197 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_GroupModuleLevelCode, FALSE);
198
199 /*
200  * Optionally support module level code by parsing the entire table as
201  * a TermList. Default is FALSE, do not execute entire table until some
202  * lock order issues are fixed.
203  */
204 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_ParseTableAsTermList, FALSE);
205
206 /*
207  * Optionally use 32-bit FADT addresses if and when there is a conflict
208  * (address mismatch) between the 32-bit and 64-bit versions of the
209  * address. Although ACPICA adheres to the ACPI specification which
210  * requires the use of the corresponding 64-bit address if it is non-zero,
211  * some machines have been found to have a corrupted non-zero 64-bit
212  * address. Default is FALSE, do not favor the 32-bit addresses.
213  */
214 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_Use32BitFadtAddresses, FALSE);
215
216 /*
217  * Optionally use 32-bit FACS table addresses.
218  * It is reported that some platforms fail to resume from system suspending
219  * if 64-bit FACS table address is selected:
220  * https://bugzilla.kernel.org/show_bug.cgi?id=74021
221  * Default is TRUE, favor the 32-bit addresses.
222  */
223 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_Use32BitFacsAddresses, TRUE);
224
225 /*
226  * Optionally truncate I/O addresses to 16 bits. Provides compatibility
227  * with other ACPI implementations. NOTE: During ACPICA initialization,
228  * this value is set to TRUE if any Windows OSI strings have been
229  * requested by the BIOS.
230  */
231 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_TruncateIoAddresses, FALSE);
232
233 /*
234  * Disable runtime checking and repair of values returned by control methods.
235  * Use only if the repair is causing a problem on a particular machine.
236  */
237 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DisableAutoRepair, FALSE);
238
239 /*
240  * Optionally do not install any SSDTs from the RSDT/XSDT during initialization.
241  * This can be useful for debugging ACPI problems on some machines.
242  */
243 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DisableSsdtTableInstall, FALSE);
244
245 /*
246  * Optionally enable runtime namespace override.
247  */
248 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_RuntimeNamespaceOverride, TRUE);
249
250 /*
251  * We keep track of the latest version of Windows that has been requested by
252  * the BIOS. ACPI 5.0.
253  */
254 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_OsiData, 0);
255
256 /*
257  * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
258  * that the ACPI hardware is no longer required. A flag in the FADT indicates
259  * a reduced HW machine, and that flag is duplicated here for convenience.
260  */
261 ACPI_INIT_GLOBAL (BOOLEAN,          AcpiGbl_ReducedHardware, FALSE);
262
263 /*
264  * This mechanism is used to trace a specified AML method. The method is
265  * traced each time it is executed.
266  */
267 ACPI_INIT_GLOBAL (UINT32,           AcpiGbl_TraceFlags, 0);
268 ACPI_INIT_GLOBAL (const char *,     AcpiGbl_TraceMethodName, NULL);
269 ACPI_INIT_GLOBAL (UINT32,           AcpiGbl_TraceDbgLevel, ACPI_TRACE_LEVEL_DEFAULT);
270 ACPI_INIT_GLOBAL (UINT32,           AcpiGbl_TraceDbgLayer, ACPI_TRACE_LAYER_DEFAULT);
271
272 /*
273  * Runtime configuration of debug output control masks. We want the debug
274  * switches statically initialized so they are already set when the debugger
275  * is entered.
276  */
277 #ifdef ACPI_DEBUG_OUTPUT
278 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLevel, ACPI_DEBUG_DEFAULT);
279 #else
280 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLevel, ACPI_NORMAL_DEFAULT);
281 #endif
282 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLayer, ACPI_COMPONENT_DEFAULT);
283
284 /* Optionally enable timer output with Debug Object output */
285
286 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DisplayDebugTimer, FALSE);
287
288 /*
289  * Other miscellaneous globals
290  */
291 ACPI_GLOBAL (ACPI_TABLE_FADT,       AcpiGbl_FADT);
292 ACPI_GLOBAL (UINT32,                AcpiCurrentGpeCount);
293 ACPI_GLOBAL (BOOLEAN,               AcpiGbl_SystemAwakeAndRunning);
294
295
296 /*****************************************************************************
297  *
298  * ACPICA public interface configuration.
299  *
300  * Interfaces that are configured out of the ACPICA build are replaced
301  * by inlined stubs by default.
302  *
303  ****************************************************************************/
304
305 /*
306  * Hardware-reduced prototypes (default: Not hardware reduced).
307  *
308  * All ACPICA hardware-related interfaces that use these macros will be
309  * configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag
310  * is set to TRUE.
311  *
312  * Note: This static build option for reduced hardware is intended to
313  * reduce ACPICA code size if desired or necessary. However, even if this
314  * option is not specified, the runtime behavior of ACPICA is dependent
315  * on the actual FADT reduced hardware flag (HW_REDUCED_ACPI). If set,
316  * the flag will enable similar behavior -- ACPICA will not attempt
317  * to access any ACPI-relate hardware (SCI, GPEs, Fixed Events, etc.)
318  */
319 #if (!ACPI_REDUCED_HARDWARE)
320 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
321     ACPI_EXTERNAL_RETURN_STATUS(Prototype)
322
323 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
324     ACPI_EXTERNAL_RETURN_OK(Prototype)
325
326 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
327     ACPI_EXTERNAL_RETURN_VOID(Prototype)
328
329 #else
330 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
331     static ACPI_INLINE Prototype {return(AE_NOT_CONFIGURED);}
332
333 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
334     static ACPI_INLINE Prototype {return(AE_OK);}
335
336 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
337     static ACPI_INLINE Prototype {return;}
338
339 #endif /* !ACPI_REDUCED_HARDWARE */
340
341
342 /*
343  * Error message prototypes (default: error messages enabled).
344  *
345  * All interfaces related to error and warning messages
346  * will be configured out of the ACPICA build if the
347  * ACPI_NO_ERROR_MESSAGE flag is defined.
348  */
349 #ifndef ACPI_NO_ERROR_MESSAGES
350 #define ACPI_MSG_DEPENDENT_RETURN_VOID(Prototype) \
351     Prototype;
352
353 #else
354 #define ACPI_MSG_DEPENDENT_RETURN_VOID(Prototype) \
355     static ACPI_INLINE Prototype {return;}
356
357 #endif /* ACPI_NO_ERROR_MESSAGES */
358
359
360 /*
361  * Debugging output prototypes (default: no debug output).
362  *
363  * All interfaces related to debug output messages
364  * will be configured out of the ACPICA build unless the
365  * ACPI_DEBUG_OUTPUT flag is defined.
366  */
367 #ifdef ACPI_DEBUG_OUTPUT
368 #define ACPI_DBG_DEPENDENT_RETURN_VOID(Prototype) \
369     Prototype;
370
371 #else
372 #define ACPI_DBG_DEPENDENT_RETURN_VOID(Prototype) \
373     static ACPI_INLINE Prototype {return;}
374
375 #endif /* ACPI_DEBUG_OUTPUT */
376
377
378 /*
379  * Application prototypes
380  *
381  * All interfaces used by application will be configured
382  * out of the ACPICA build unless the ACPI_APPLICATION
383  * flag is defined.
384  */
385 #ifdef ACPI_APPLICATION
386 #define ACPI_APP_DEPENDENT_RETURN_VOID(Prototype) \
387     Prototype;
388
389 #else
390 #define ACPI_APP_DEPENDENT_RETURN_VOID(Prototype) \
391     static ACPI_INLINE Prototype {return;}
392
393 #endif /* ACPI_APPLICATION */
394
395
396 /*
397  * Debugger prototypes
398  *
399  * All interfaces used by debugger will be configured
400  * out of the ACPICA build unless the ACPI_DEBUGGER
401  * flag is defined.
402  */
403 #ifdef ACPI_DEBUGGER
404 #define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \
405     ACPI_EXTERNAL_RETURN_OK(Prototype)
406
407 #define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \
408     ACPI_EXTERNAL_RETURN_VOID(Prototype)
409
410 #else
411 #define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \
412     static ACPI_INLINE Prototype {return(AE_OK);}
413
414 #define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \
415     static ACPI_INLINE Prototype {return;}
416
417 #endif /* ACPI_DEBUGGER */
418
419
420 /*****************************************************************************
421  *
422  * ACPICA public interface prototypes
423  *
424  ****************************************************************************/
425
426 /*
427  * Initialization
428  */
429 ACPI_EXTERNAL_RETURN_STATUS (
430 ACPI_STATUS ACPI_INIT_FUNCTION
431 AcpiInitializeTables (
432     ACPI_TABLE_DESC         *InitialStorage,
433     UINT32                  InitialTableCount,
434     BOOLEAN                 AllowResize))
435
436 ACPI_EXTERNAL_RETURN_STATUS (
437 ACPI_STATUS ACPI_INIT_FUNCTION
438 AcpiInitializeSubsystem (
439     void))
440
441 ACPI_EXTERNAL_RETURN_STATUS (
442 ACPI_STATUS ACPI_INIT_FUNCTION
443 AcpiEnableSubsystem (
444     UINT32                  Flags))
445
446 ACPI_EXTERNAL_RETURN_STATUS (
447 ACPI_STATUS ACPI_INIT_FUNCTION
448 AcpiInitializeObjects (
449     UINT32                  Flags))
450
451 ACPI_EXTERNAL_RETURN_STATUS (
452 ACPI_STATUS ACPI_INIT_FUNCTION
453 AcpiTerminate (
454     void))
455
456
457 /*
458  * Miscellaneous global interfaces
459  */
460 ACPI_HW_DEPENDENT_RETURN_STATUS (
461 ACPI_STATUS
462 AcpiEnable (
463     void))
464
465 ACPI_HW_DEPENDENT_RETURN_STATUS (
466 ACPI_STATUS
467 AcpiDisable (
468     void))
469
470 ACPI_EXTERNAL_RETURN_STATUS (
471 ACPI_STATUS
472 AcpiSubsystemStatus (
473     void))
474
475 ACPI_EXTERNAL_RETURN_STATUS (
476 ACPI_STATUS
477 AcpiGetSystemInfo (
478     ACPI_BUFFER             *RetBuffer))
479
480 ACPI_EXTERNAL_RETURN_STATUS (
481 ACPI_STATUS
482 AcpiGetStatistics (
483     ACPI_STATISTICS         *Stats))
484
485 ACPI_EXTERNAL_RETURN_PTR (
486 const char *
487 AcpiFormatException (
488     ACPI_STATUS             Exception))
489
490 ACPI_EXTERNAL_RETURN_STATUS (
491 ACPI_STATUS
492 AcpiPurgeCachedObjects (
493     void))
494
495 ACPI_EXTERNAL_RETURN_STATUS (
496 ACPI_STATUS
497 AcpiInstallInterface (
498     ACPI_STRING             InterfaceName))
499
500 ACPI_EXTERNAL_RETURN_STATUS (
501 ACPI_STATUS
502 AcpiRemoveInterface (
503     ACPI_STRING             InterfaceName))
504
505 ACPI_EXTERNAL_RETURN_STATUS (
506 ACPI_STATUS
507 AcpiUpdateInterfaces (
508     UINT8                   Action))
509
510 ACPI_EXTERNAL_RETURN_UINT32 (
511 UINT32
512 AcpiCheckAddressRange (
513     ACPI_ADR_SPACE_TYPE     SpaceId,
514     ACPI_PHYSICAL_ADDRESS   Address,
515     ACPI_SIZE               Length,
516     BOOLEAN                 Warn))
517
518 ACPI_EXTERNAL_RETURN_STATUS (
519 ACPI_STATUS
520 AcpiDecodePldBuffer (
521     UINT8                   *InBuffer,
522     ACPI_SIZE               Length,
523     ACPI_PLD_INFO           **ReturnBuffer))
524
525
526 /*
527  * ACPI table load/unload interfaces
528  */
529 ACPI_EXTERNAL_RETURN_STATUS (
530 ACPI_STATUS ACPI_INIT_FUNCTION
531 AcpiInstallTable (
532     ACPI_PHYSICAL_ADDRESS   Address,
533     BOOLEAN                 Physical))
534
535 ACPI_EXTERNAL_RETURN_STATUS (
536 ACPI_STATUS
537 AcpiLoadTable (
538     ACPI_TABLE_HEADER       *Table))
539
540 ACPI_EXTERNAL_RETURN_STATUS (
541 ACPI_STATUS
542 AcpiUnloadParentTable (
543     ACPI_HANDLE             Object))
544
545 ACPI_EXTERNAL_RETURN_STATUS (
546 ACPI_STATUS ACPI_INIT_FUNCTION
547 AcpiLoadTables (
548     void))
549
550
551 /*
552  * ACPI table manipulation interfaces
553  */
554 ACPI_EXTERNAL_RETURN_STATUS (
555 ACPI_STATUS ACPI_INIT_FUNCTION
556 AcpiReallocateRootTable (
557     void))
558
559 ACPI_EXTERNAL_RETURN_STATUS (
560 ACPI_STATUS ACPI_INIT_FUNCTION
561 AcpiFindRootPointer (
562     ACPI_PHYSICAL_ADDRESS   *RsdpAddress))
563
564 ACPI_EXTERNAL_RETURN_STATUS (
565 ACPI_STATUS
566 AcpiGetTableHeader (
567     ACPI_STRING             Signature,
568     UINT32                  Instance,
569     ACPI_TABLE_HEADER       *OutTableHeader))
570
571 ACPI_EXTERNAL_RETURN_STATUS (
572 ACPI_STATUS
573 AcpiGetTable (
574     ACPI_STRING             Signature,
575     UINT32                  Instance,
576     ACPI_TABLE_HEADER       **OutTable))
577
578 ACPI_EXTERNAL_RETURN_STATUS (
579 ACPI_STATUS
580 AcpiGetTableByIndex (
581     UINT32                  TableIndex,
582     ACPI_TABLE_HEADER       **OutTable))
583
584 ACPI_EXTERNAL_RETURN_STATUS (
585 ACPI_STATUS
586 AcpiInstallTableHandler (
587     ACPI_TABLE_HANDLER      Handler,
588     void                    *Context))
589
590 ACPI_EXTERNAL_RETURN_STATUS (
591 ACPI_STATUS
592 AcpiRemoveTableHandler (
593     ACPI_TABLE_HANDLER      Handler))
594
595
596 /*
597  * Namespace and name interfaces
598  */
599 ACPI_EXTERNAL_RETURN_STATUS (
600 ACPI_STATUS
601 AcpiWalkNamespace (
602     ACPI_OBJECT_TYPE        Type,
603     ACPI_HANDLE             StartObject,
604     UINT32                  MaxDepth,
605     ACPI_WALK_CALLBACK      DescendingCallback,
606     ACPI_WALK_CALLBACK      AscendingCallback,
607     void                    *Context,
608     void                    **ReturnValue))
609
610 ACPI_EXTERNAL_RETURN_STATUS (
611 ACPI_STATUS
612 AcpiGetDevices (
613     char                    *HID,
614     ACPI_WALK_CALLBACK      UserFunction,
615     void                    *Context,
616     void                    **ReturnValue))
617
618 ACPI_EXTERNAL_RETURN_STATUS (
619 ACPI_STATUS
620 AcpiGetName (
621     ACPI_HANDLE             Object,
622     UINT32                  NameType,
623     ACPI_BUFFER             *RetPathPtr))
624
625 ACPI_EXTERNAL_RETURN_STATUS (
626 ACPI_STATUS
627 AcpiGetHandle (
628     ACPI_HANDLE             Parent,
629     ACPI_STRING             Pathname,
630     ACPI_HANDLE             *RetHandle))
631
632 ACPI_EXTERNAL_RETURN_STATUS (
633 ACPI_STATUS
634 AcpiAttachData (
635     ACPI_HANDLE             Object,
636     ACPI_OBJECT_HANDLER     Handler,
637     void                    *Data))
638
639 ACPI_EXTERNAL_RETURN_STATUS (
640 ACPI_STATUS
641 AcpiDetachData (
642     ACPI_HANDLE             Object,
643     ACPI_OBJECT_HANDLER     Handler))
644
645 ACPI_EXTERNAL_RETURN_STATUS (
646 ACPI_STATUS
647 AcpiGetData (
648     ACPI_HANDLE             Object,
649     ACPI_OBJECT_HANDLER     Handler,
650     void                    **Data))
651
652 ACPI_EXTERNAL_RETURN_STATUS (
653 ACPI_STATUS
654 AcpiDebugTrace (
655     const char              *Name,
656     UINT32                  DebugLevel,
657     UINT32                  DebugLayer,
658     UINT32                  Flags))
659
660
661 /*
662  * Object manipulation and enumeration
663  */
664 ACPI_EXTERNAL_RETURN_STATUS (
665 ACPI_STATUS
666 AcpiEvaluateObject (
667     ACPI_HANDLE             Object,
668     ACPI_STRING             Pathname,
669     ACPI_OBJECT_LIST        *ParameterObjects,
670     ACPI_BUFFER             *ReturnObjectBuffer))
671
672 ACPI_EXTERNAL_RETURN_STATUS (
673 ACPI_STATUS
674 AcpiEvaluateObjectTyped (
675     ACPI_HANDLE             Object,
676     ACPI_STRING             Pathname,
677     ACPI_OBJECT_LIST        *ExternalParams,
678     ACPI_BUFFER             *ReturnBuffer,
679     ACPI_OBJECT_TYPE        ReturnType))
680
681 ACPI_EXTERNAL_RETURN_STATUS (
682 ACPI_STATUS
683 AcpiGetObjectInfo (
684     ACPI_HANDLE             Object,
685     ACPI_DEVICE_INFO        **ReturnBuffer))
686
687 ACPI_EXTERNAL_RETURN_STATUS (
688 ACPI_STATUS
689 AcpiInstallMethod (
690     UINT8                   *Buffer))
691
692 ACPI_EXTERNAL_RETURN_STATUS (
693 ACPI_STATUS
694 AcpiGetNextObject (
695     ACPI_OBJECT_TYPE        Type,
696     ACPI_HANDLE             Parent,
697     ACPI_HANDLE             Child,
698     ACPI_HANDLE             *OutHandle))
699
700 ACPI_EXTERNAL_RETURN_STATUS (
701 ACPI_STATUS
702 AcpiGetType (
703     ACPI_HANDLE             Object,
704     ACPI_OBJECT_TYPE        *OutType))
705
706 ACPI_EXTERNAL_RETURN_STATUS (
707 ACPI_STATUS
708 AcpiGetParent (
709     ACPI_HANDLE             Object,
710     ACPI_HANDLE             *OutHandle))
711
712
713 /*
714  * Handler interfaces
715  */
716 ACPI_EXTERNAL_RETURN_STATUS (
717 ACPI_STATUS
718 AcpiInstallInitializationHandler (
719     ACPI_INIT_HANDLER       Handler,
720     UINT32                  Function))
721
722 ACPI_HW_DEPENDENT_RETURN_STATUS (
723 ACPI_STATUS
724 AcpiInstallSciHandler (
725     ACPI_SCI_HANDLER        Address,
726     void                    *Context))
727
728 ACPI_HW_DEPENDENT_RETURN_STATUS (
729 ACPI_STATUS
730 AcpiRemoveSciHandler (
731     ACPI_SCI_HANDLER        Address))
732
733 ACPI_HW_DEPENDENT_RETURN_STATUS (
734 ACPI_STATUS
735 AcpiInstallGlobalEventHandler (
736     ACPI_GBL_EVENT_HANDLER  Handler,
737     void                    *Context))
738
739 ACPI_HW_DEPENDENT_RETURN_STATUS (
740 ACPI_STATUS
741 AcpiInstallFixedEventHandler (
742     UINT32                  AcpiEvent,
743     ACPI_EVENT_HANDLER      Handler,
744     void                    *Context))
745
746 ACPI_HW_DEPENDENT_RETURN_STATUS (
747 ACPI_STATUS
748 AcpiRemoveFixedEventHandler (
749     UINT32                  AcpiEvent,
750     ACPI_EVENT_HANDLER      Handler))
751
752 ACPI_HW_DEPENDENT_RETURN_STATUS (
753 ACPI_STATUS
754 AcpiInstallGpeHandler (
755     ACPI_HANDLE             GpeDevice,
756     UINT32                  GpeNumber,
757     UINT32                  Type,
758     ACPI_GPE_HANDLER        Address,
759     void                    *Context))
760
761 ACPI_HW_DEPENDENT_RETURN_STATUS (
762 ACPI_STATUS
763 AcpiInstallGpeRawHandler (
764     ACPI_HANDLE             GpeDevice,
765     UINT32                  GpeNumber,
766     UINT32                  Type,
767     ACPI_GPE_HANDLER        Address,
768     void                    *Context))
769
770 ACPI_HW_DEPENDENT_RETURN_STATUS (
771 ACPI_STATUS
772 AcpiRemoveGpeHandler (
773     ACPI_HANDLE             GpeDevice,
774     UINT32                  GpeNumber,
775     ACPI_GPE_HANDLER        Address))
776
777 ACPI_EXTERNAL_RETURN_STATUS (
778 ACPI_STATUS
779 AcpiInstallNotifyHandler (
780     ACPI_HANDLE             Device,
781     UINT32                  HandlerType,
782     ACPI_NOTIFY_HANDLER     Handler,
783     void                    *Context))
784
785 ACPI_EXTERNAL_RETURN_STATUS (
786 ACPI_STATUS
787 AcpiRemoveNotifyHandler (
788     ACPI_HANDLE             Device,
789     UINT32                  HandlerType,
790     ACPI_NOTIFY_HANDLER     Handler))
791
792 ACPI_EXTERNAL_RETURN_STATUS (
793 ACPI_STATUS
794 AcpiInstallAddressSpaceHandler (
795     ACPI_HANDLE             Device,
796     ACPI_ADR_SPACE_TYPE     SpaceId,
797     ACPI_ADR_SPACE_HANDLER  Handler,
798     ACPI_ADR_SPACE_SETUP    Setup,
799     void                    *Context))
800
801 ACPI_EXTERNAL_RETURN_STATUS (
802 ACPI_STATUS
803 AcpiRemoveAddressSpaceHandler (
804     ACPI_HANDLE             Device,
805     ACPI_ADR_SPACE_TYPE     SpaceId,
806     ACPI_ADR_SPACE_HANDLER  Handler))
807
808 ACPI_EXTERNAL_RETURN_STATUS (
809 ACPI_STATUS
810 AcpiInstallExceptionHandler (
811     ACPI_EXCEPTION_HANDLER  Handler))
812
813 ACPI_EXTERNAL_RETURN_STATUS (
814 ACPI_STATUS
815 AcpiInstallInterfaceHandler (
816     ACPI_INTERFACE_HANDLER  Handler))
817
818
819 /*
820  * Global Lock interfaces
821  */
822 ACPI_HW_DEPENDENT_RETURN_STATUS (
823 ACPI_STATUS
824 AcpiAcquireGlobalLock (
825     UINT16                  Timeout,
826     UINT32                  *Handle))
827
828 ACPI_HW_DEPENDENT_RETURN_STATUS (
829 ACPI_STATUS
830 AcpiReleaseGlobalLock (
831     UINT32                  Handle))
832
833
834 /*
835  * Interfaces to AML mutex objects
836  */
837 ACPI_EXTERNAL_RETURN_STATUS (
838 ACPI_STATUS
839 AcpiAcquireMutex (
840     ACPI_HANDLE             Handle,
841     ACPI_STRING             Pathname,
842     UINT16                  Timeout))
843
844 ACPI_EXTERNAL_RETURN_STATUS (
845 ACPI_STATUS
846 AcpiReleaseMutex (
847     ACPI_HANDLE             Handle,
848     ACPI_STRING             Pathname))
849
850
851 /*
852  * Fixed Event interfaces
853  */
854 ACPI_HW_DEPENDENT_RETURN_STATUS (
855 ACPI_STATUS
856 AcpiEnableEvent (
857     UINT32                  Event,
858     UINT32                  Flags))
859
860 ACPI_HW_DEPENDENT_RETURN_STATUS (
861 ACPI_STATUS
862 AcpiDisableEvent (
863     UINT32                  Event,
864     UINT32                  Flags))
865
866 ACPI_HW_DEPENDENT_RETURN_STATUS (
867 ACPI_STATUS
868 AcpiClearEvent (
869     UINT32                  Event))
870
871 ACPI_HW_DEPENDENT_RETURN_STATUS (
872 ACPI_STATUS
873 AcpiGetEventStatus (
874     UINT32                  Event,
875     ACPI_EVENT_STATUS       *EventStatus))
876
877
878 /*
879  * General Purpose Event (GPE) Interfaces
880  */
881 ACPI_HW_DEPENDENT_RETURN_STATUS (
882 ACPI_STATUS
883 AcpiUpdateAllGpes (
884     void))
885
886 ACPI_HW_DEPENDENT_RETURN_STATUS (
887 ACPI_STATUS
888 AcpiEnableGpe (
889     ACPI_HANDLE             GpeDevice,
890     UINT32                  GpeNumber))
891
892 ACPI_HW_DEPENDENT_RETURN_STATUS (
893 ACPI_STATUS
894 AcpiDisableGpe (
895     ACPI_HANDLE             GpeDevice,
896     UINT32                  GpeNumber))
897
898 ACPI_HW_DEPENDENT_RETURN_STATUS (
899 ACPI_STATUS
900 AcpiClearGpe (
901     ACPI_HANDLE             GpeDevice,
902     UINT32                  GpeNumber))
903
904 ACPI_HW_DEPENDENT_RETURN_STATUS (
905 ACPI_STATUS
906 AcpiSetGpe (
907     ACPI_HANDLE             GpeDevice,
908     UINT32                  GpeNumber,
909     UINT8                   Action))
910
911 ACPI_HW_DEPENDENT_RETURN_STATUS (
912 ACPI_STATUS
913 AcpiFinishGpe (
914     ACPI_HANDLE             GpeDevice,
915     UINT32                  GpeNumber))
916
917 ACPI_HW_DEPENDENT_RETURN_STATUS (
918 ACPI_STATUS
919 AcpiMaskGpe (
920     ACPI_HANDLE             GpeDevice,
921     UINT32                  GpeNumber,
922     BOOLEAN                 IsMasked))
923
924 ACPI_HW_DEPENDENT_RETURN_STATUS (
925 ACPI_STATUS
926 AcpiMarkGpeForWake (
927     ACPI_HANDLE             GpeDevice,
928     UINT32                  GpeNumber))
929
930 ACPI_HW_DEPENDENT_RETURN_STATUS (
931 ACPI_STATUS
932 AcpiSetupGpeForWake (
933     ACPI_HANDLE             ParentDevice,
934     ACPI_HANDLE             GpeDevice,
935     UINT32                  GpeNumber))
936
937 ACPI_HW_DEPENDENT_RETURN_STATUS (
938 ACPI_STATUS
939 AcpiSetGpeWakeMask (
940     ACPI_HANDLE             GpeDevice,
941     UINT32                  GpeNumber,
942     UINT8                   Action))
943
944 ACPI_HW_DEPENDENT_RETURN_STATUS (
945 ACPI_STATUS
946 AcpiGetGpeStatus (
947     ACPI_HANDLE             GpeDevice,
948     UINT32                  GpeNumber,
949     ACPI_EVENT_STATUS       *EventStatus))
950
951 ACPI_HW_DEPENDENT_RETURN_STATUS (
952 ACPI_STATUS
953 AcpiDisableAllGpes (
954     void))
955
956 ACPI_HW_DEPENDENT_RETURN_STATUS (
957 ACPI_STATUS
958 AcpiEnableAllRuntimeGpes (
959     void))
960
961 ACPI_HW_DEPENDENT_RETURN_STATUS (
962 ACPI_STATUS
963 AcpiEnableAllWakeupGpes (
964     void))
965
966 ACPI_HW_DEPENDENT_RETURN_STATUS (
967 ACPI_STATUS
968 AcpiGetGpeDevice (
969     UINT32                  GpeIndex,
970     ACPI_HANDLE             *GpeDevice))
971
972 ACPI_HW_DEPENDENT_RETURN_STATUS (
973 ACPI_STATUS
974 AcpiInstallGpeBlock (
975     ACPI_HANDLE             GpeDevice,
976     ACPI_GENERIC_ADDRESS    *GpeBlockAddress,
977     UINT32                  RegisterCount,
978     UINT32                  InterruptNumber))
979
980 ACPI_HW_DEPENDENT_RETURN_STATUS (
981 ACPI_STATUS
982 AcpiRemoveGpeBlock (
983     ACPI_HANDLE             GpeDevice))
984
985
986 /*
987  * Resource interfaces
988  */
989 typedef
990 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
991     ACPI_RESOURCE           *Resource,
992     void                    *Context);
993
994 ACPI_EXTERNAL_RETURN_STATUS (
995 ACPI_STATUS
996 AcpiGetVendorResource (
997     ACPI_HANDLE             Device,
998     char                    *Name,
999     ACPI_VENDOR_UUID        *Uuid,
1000     ACPI_BUFFER             *RetBuffer))
1001
1002 ACPI_EXTERNAL_RETURN_STATUS (
1003 ACPI_STATUS
1004 AcpiGetCurrentResources (
1005     ACPI_HANDLE             Device,
1006     ACPI_BUFFER             *RetBuffer))
1007
1008 ACPI_EXTERNAL_RETURN_STATUS (
1009 ACPI_STATUS
1010 AcpiGetPossibleResources (
1011     ACPI_HANDLE             Device,
1012     ACPI_BUFFER             *RetBuffer))
1013
1014 ACPI_EXTERNAL_RETURN_STATUS (
1015 ACPI_STATUS
1016 AcpiGetEventResources (
1017     ACPI_HANDLE             DeviceHandle,
1018     ACPI_BUFFER             *RetBuffer))
1019
1020 ACPI_EXTERNAL_RETURN_STATUS (
1021 ACPI_STATUS
1022 AcpiWalkResourceBuffer (
1023     ACPI_BUFFER                 *Buffer,
1024     ACPI_WALK_RESOURCE_CALLBACK UserFunction,
1025     void                        *Context))
1026
1027 ACPI_EXTERNAL_RETURN_STATUS (
1028 ACPI_STATUS
1029 AcpiWalkResources (
1030     ACPI_HANDLE                 Device,
1031     char                        *Name,
1032     ACPI_WALK_RESOURCE_CALLBACK UserFunction,
1033     void                        *Context))
1034
1035 ACPI_EXTERNAL_RETURN_STATUS (
1036 ACPI_STATUS
1037 AcpiSetCurrentResources (
1038     ACPI_HANDLE             Device,
1039     ACPI_BUFFER             *InBuffer))
1040
1041 ACPI_EXTERNAL_RETURN_STATUS (
1042 ACPI_STATUS
1043 AcpiGetIrqRoutingTable (
1044     ACPI_HANDLE             Device,
1045     ACPI_BUFFER             *RetBuffer))
1046
1047 ACPI_EXTERNAL_RETURN_STATUS (
1048 ACPI_STATUS
1049 AcpiResourceToAddress64 (
1050     ACPI_RESOURCE           *Resource,
1051     ACPI_RESOURCE_ADDRESS64 *Out))
1052
1053 ACPI_EXTERNAL_RETURN_STATUS (
1054 ACPI_STATUS
1055 AcpiBufferToResource (
1056     UINT8                   *AmlBuffer,
1057     UINT16                  AmlBufferLength,
1058     ACPI_RESOURCE           **ResourcePtr))
1059
1060
1061 /*
1062  * Hardware (ACPI device) interfaces
1063  */
1064 ACPI_EXTERNAL_RETURN_STATUS (
1065 ACPI_STATUS
1066 AcpiReset (
1067     void))
1068
1069 ACPI_EXTERNAL_RETURN_STATUS (
1070 ACPI_STATUS
1071 AcpiRead (
1072     UINT64                  *Value,
1073     ACPI_GENERIC_ADDRESS    *Reg))
1074
1075 ACPI_EXTERNAL_RETURN_STATUS (
1076 ACPI_STATUS
1077 AcpiWrite (
1078     UINT64                  Value,
1079     ACPI_GENERIC_ADDRESS    *Reg))
1080
1081 ACPI_HW_DEPENDENT_RETURN_STATUS (
1082 ACPI_STATUS
1083 AcpiReadBitRegister (
1084     UINT32                  RegisterId,
1085     UINT32                  *ReturnValue))
1086
1087 ACPI_HW_DEPENDENT_RETURN_STATUS (
1088 ACPI_STATUS
1089 AcpiWriteBitRegister (
1090     UINT32                  RegisterId,
1091     UINT32                  Value))
1092
1093
1094 /*
1095  * Sleep/Wake interfaces
1096  */
1097 ACPI_EXTERNAL_RETURN_STATUS (
1098 ACPI_STATUS
1099 AcpiGetSleepTypeData (
1100     UINT8                   SleepState,
1101     UINT8                   *Slp_TypA,
1102     UINT8                   *Slp_TypB))
1103
1104 ACPI_EXTERNAL_RETURN_STATUS (
1105 ACPI_STATUS
1106 AcpiEnterSleepStatePrep (
1107     UINT8                   SleepState))
1108
1109 ACPI_EXTERNAL_RETURN_STATUS (
1110 ACPI_STATUS
1111 AcpiEnterSleepState (
1112     UINT8                   SleepState))
1113
1114 ACPI_HW_DEPENDENT_RETURN_STATUS (
1115 ACPI_STATUS
1116 AcpiEnterSleepStateS4bios (
1117     void))
1118
1119 ACPI_EXTERNAL_RETURN_STATUS (
1120 ACPI_STATUS
1121 AcpiLeaveSleepStatePrep (
1122     UINT8                   SleepState))
1123
1124 ACPI_EXTERNAL_RETURN_STATUS (
1125 ACPI_STATUS
1126 AcpiLeaveSleepState (
1127     UINT8                   SleepState))
1128
1129 ACPI_HW_DEPENDENT_RETURN_STATUS (
1130 ACPI_STATUS
1131 AcpiSetFirmwareWakingVector (
1132     ACPI_PHYSICAL_ADDRESS   PhysicalAddress,
1133     ACPI_PHYSICAL_ADDRESS   PhysicalAddress64))
1134
1135
1136 /*
1137  * ACPI Timer interfaces
1138  */
1139 ACPI_HW_DEPENDENT_RETURN_STATUS (
1140 ACPI_STATUS
1141 AcpiGetTimerResolution (
1142     UINT32                  *Resolution))
1143
1144 ACPI_HW_DEPENDENT_RETURN_STATUS (
1145 ACPI_STATUS
1146 AcpiGetTimer (
1147     UINT32                  *Ticks))
1148
1149 ACPI_HW_DEPENDENT_RETURN_STATUS (
1150 ACPI_STATUS
1151 AcpiGetTimerDuration (
1152     UINT32                  StartTicks,
1153     UINT32                  EndTicks,
1154     UINT32                  *TimeElapsed))
1155
1156
1157 /*
1158  * Error/Warning output
1159  */
1160 ACPI_MSG_DEPENDENT_RETURN_VOID (
1161 ACPI_PRINTF_LIKE(3)
1162 void ACPI_INTERNAL_VAR_XFACE
1163 AcpiError (
1164     const char              *ModuleName,
1165     UINT32                  LineNumber,
1166     const char              *Format,
1167     ...))
1168
1169 ACPI_MSG_DEPENDENT_RETURN_VOID (
1170 ACPI_PRINTF_LIKE(4)
1171 void  ACPI_INTERNAL_VAR_XFACE
1172 AcpiException (
1173     const char              *ModuleName,
1174     UINT32                  LineNumber,
1175     ACPI_STATUS             Status,
1176     const char              *Format,
1177     ...))
1178
1179 ACPI_MSG_DEPENDENT_RETURN_VOID (
1180 ACPI_PRINTF_LIKE(3)
1181 void ACPI_INTERNAL_VAR_XFACE
1182 AcpiWarning (
1183     const char              *ModuleName,
1184     UINT32                  LineNumber,
1185     const char              *Format,
1186     ...))
1187
1188 ACPI_MSG_DEPENDENT_RETURN_VOID (
1189 ACPI_PRINTF_LIKE(1)
1190 void ACPI_INTERNAL_VAR_XFACE
1191 AcpiInfo (
1192     const char              *Format,
1193     ...))
1194
1195 ACPI_MSG_DEPENDENT_RETURN_VOID (
1196 ACPI_PRINTF_LIKE(3)
1197 void ACPI_INTERNAL_VAR_XFACE
1198 AcpiBiosError (
1199     const char              *ModuleName,
1200     UINT32                  LineNumber,
1201     const char              *Format,
1202     ...))
1203
1204 ACPI_MSG_DEPENDENT_RETURN_VOID (
1205 ACPI_PRINTF_LIKE(3)
1206 void ACPI_INTERNAL_VAR_XFACE
1207 AcpiBiosWarning (
1208     const char              *ModuleName,
1209     UINT32                  LineNumber,
1210     const char              *Format,
1211     ...))
1212
1213
1214 /*
1215  * Debug output
1216  */
1217 ACPI_DBG_DEPENDENT_RETURN_VOID (
1218 ACPI_PRINTF_LIKE(6)
1219 void ACPI_INTERNAL_VAR_XFACE
1220 AcpiDebugPrint (
1221     UINT32                  RequestedDebugLevel,
1222     UINT32                  LineNumber,
1223     const char              *FunctionName,
1224     const char              *ModuleName,
1225     UINT32                  ComponentId,
1226     const char              *Format,
1227     ...))
1228
1229 ACPI_DBG_DEPENDENT_RETURN_VOID (
1230 ACPI_PRINTF_LIKE(6)
1231 void ACPI_INTERNAL_VAR_XFACE
1232 AcpiDebugPrintRaw (
1233     UINT32                  RequestedDebugLevel,
1234     UINT32                  LineNumber,
1235     const char              *FunctionName,
1236     const char              *ModuleName,
1237     UINT32                  ComponentId,
1238     const char              *Format,
1239     ...))
1240
1241 ACPI_DBG_DEPENDENT_RETURN_VOID (
1242 void
1243 AcpiTracePoint (
1244     ACPI_TRACE_EVENT_TYPE   Type,
1245     BOOLEAN                 Begin,
1246     UINT8                   *Aml,
1247     char                    *Pathname))
1248
1249 ACPI_STATUS
1250 AcpiInitializeDebugger (
1251     void);
1252
1253 void
1254 AcpiTerminateDebugger (
1255     void);
1256
1257 void
1258 AcpiSetDebuggerThreadId (
1259     ACPI_THREAD_ID          ThreadId);
1260
1261 #endif /* __ACXFACE_H__ */