Merge branch 'vendor/OPENSSL'
[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 - 2015, Intel Corp.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions, and the following disclaimer,
16  *    without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  *    substantially similar to the "NO WARRANTY" disclaimer below
19  *    ("Disclaimer") and any redistribution must be conditioned upon
20  *    including a substantially similar Disclaimer requirement for further
21  *    binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  *    of any contributors may be used to endorse or promote products derived
24  *    from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41  * POSSIBILITY OF SUCH DAMAGES.
42  */
43
44 #ifndef __ACXFACE_H__
45 #define __ACXFACE_H__
46
47 /* Current ACPICA subsystem version in YYYYMMDD format */
48
49 #define ACPI_CA_VERSION                 0x20151124
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 use 32-bit FADT addresses if and when there is a conflict
196  * (address mismatch) between the 32-bit and 64-bit versions of the
197  * address. Although ACPICA adheres to the ACPI specification which
198  * requires the use of the corresponding 64-bit address if it is non-zero,
199  * some machines have been found to have a corrupted non-zero 64-bit
200  * address. Default is FALSE, do not favor the 32-bit addresses.
201  */
202 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_Use32BitFadtAddresses, FALSE);
203
204 /*
205  * Optionally use 32-bit FACS table addresses.
206  * It is reported that some platforms fail to resume from system suspending
207  * if 64-bit FACS table address is selected:
208  * https://bugzilla.kernel.org/show_bug.cgi?id=74021
209  * Default is TRUE, favor the 32-bit addresses.
210  */
211 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_Use32BitFacsAddresses, TRUE);
212
213 /*
214  * Optionally truncate I/O addresses to 16 bits. Provides compatibility
215  * with other ACPI implementations. NOTE: During ACPICA initialization,
216  * this value is set to TRUE if any Windows OSI strings have been
217  * requested by the BIOS.
218  */
219 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_TruncateIoAddresses, FALSE);
220
221 /*
222  * Disable runtime checking and repair of values returned by control methods.
223  * Use only if the repair is causing a problem on a particular machine.
224  */
225 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DisableAutoRepair, FALSE);
226
227 /*
228  * Optionally do not install any SSDTs from the RSDT/XSDT during initialization.
229  * This can be useful for debugging ACPI problems on some machines.
230  */
231 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DisableSsdtTableInstall, FALSE);
232
233 /*
234  * Optionally enable runtime namespace override.
235  */
236 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_RuntimeNamespaceOverride, TRUE);
237
238 /*
239  * We keep track of the latest version of Windows that has been requested by
240  * the BIOS. ACPI 5.0.
241  */
242 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_OsiData, 0);
243
244 /*
245  * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
246  * that the ACPI hardware is no longer required. A flag in the FADT indicates
247  * a reduced HW machine, and that flag is duplicated here for convenience.
248  */
249 ACPI_INIT_GLOBAL (BOOLEAN,          AcpiGbl_ReducedHardware, FALSE);
250
251 /*
252  * This mechanism is used to trace a specified AML method. The method is
253  * traced each time it is executed.
254  */
255 ACPI_INIT_GLOBAL (UINT32,           AcpiGbl_TraceFlags, 0);
256 ACPI_INIT_GLOBAL (const char *,     AcpiGbl_TraceMethodName, NULL);
257 ACPI_INIT_GLOBAL (UINT32,           AcpiGbl_TraceDbgLevel, ACPI_TRACE_LEVEL_DEFAULT);
258 ACPI_INIT_GLOBAL (UINT32,           AcpiGbl_TraceDbgLayer, ACPI_TRACE_LAYER_DEFAULT);
259
260 /*
261  * Runtime configuration of debug output control masks. We want the debug
262  * switches statically initialized so they are already set when the debugger
263  * is entered.
264  */
265 #ifdef ACPI_DEBUG_OUTPUT
266 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLevel, ACPI_DEBUG_DEFAULT);
267 #else
268 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLevel, ACPI_NORMAL_DEFAULT);
269 #endif
270 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLayer, ACPI_COMPONENT_DEFAULT);
271
272 /*
273  * Other miscellaneous globals
274  */
275 ACPI_GLOBAL (ACPI_TABLE_FADT,       AcpiGbl_FADT);
276 ACPI_GLOBAL (UINT32,                AcpiCurrentGpeCount);
277 ACPI_GLOBAL (BOOLEAN,               AcpiGbl_SystemAwakeAndRunning);
278
279
280 /*****************************************************************************
281  *
282  * ACPICA public interface configuration.
283  *
284  * Interfaces that are configured out of the ACPICA build are replaced
285  * by inlined stubs by default.
286  *
287  ****************************************************************************/
288
289 /*
290  * Hardware-reduced prototypes (default: Not hardware reduced).
291  *
292  * All ACPICA hardware-related interfaces that use these macros will be
293  * configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag
294  * is set to TRUE.
295  *
296  * Note: This static build option for reduced hardware is intended to
297  * reduce ACPICA code size if desired or necessary. However, even if this
298  * option is not specified, the runtime behavior of ACPICA is dependent
299  * on the actual FADT reduced hardware flag (HW_REDUCED_ACPI). If set,
300  * the flag will enable similar behavior -- ACPICA will not attempt
301  * to access any ACPI-relate hardware (SCI, GPEs, Fixed Events, etc.)
302  */
303 #if (!ACPI_REDUCED_HARDWARE)
304 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
305     ACPI_EXTERNAL_RETURN_STATUS(Prototype)
306
307 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
308     ACPI_EXTERNAL_RETURN_OK(Prototype)
309
310 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
311     ACPI_EXTERNAL_RETURN_VOID(Prototype)
312
313 #else
314 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
315     static ACPI_INLINE Prototype {return(AE_NOT_CONFIGURED);}
316
317 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
318     static ACPI_INLINE Prototype {return(AE_OK);}
319
320 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
321     static ACPI_INLINE Prototype {return;}
322
323 #endif /* !ACPI_REDUCED_HARDWARE */
324
325
326 /*
327  * Error message prototypes (default: error messages enabled).
328  *
329  * All interfaces related to error and warning messages
330  * will be configured out of the ACPICA build if the
331  * ACPI_NO_ERROR_MESSAGE flag is defined.
332  */
333 #ifndef ACPI_NO_ERROR_MESSAGES
334 #define ACPI_MSG_DEPENDENT_RETURN_VOID(Prototype) \
335     Prototype;
336
337 #else
338 #define ACPI_MSG_DEPENDENT_RETURN_VOID(Prototype) \
339     static ACPI_INLINE Prototype {return;}
340
341 #endif /* ACPI_NO_ERROR_MESSAGES */
342
343
344 /*
345  * Debugging output prototypes (default: no debug output).
346  *
347  * All interfaces related to debug output messages
348  * will be configured out of the ACPICA build unless the
349  * ACPI_DEBUG_OUTPUT flag is defined.
350  */
351 #ifdef ACPI_DEBUG_OUTPUT
352 #define ACPI_DBG_DEPENDENT_RETURN_VOID(Prototype) \
353     Prototype;
354
355 #else
356 #define ACPI_DBG_DEPENDENT_RETURN_VOID(Prototype) \
357     static ACPI_INLINE Prototype {return;}
358
359 #endif /* ACPI_DEBUG_OUTPUT */
360
361
362 /*
363  * Application prototypes
364  *
365  * All interfaces used by application will be configured
366  * out of the ACPICA build unless the ACPI_APPLICATION
367  * flag is defined.
368  */
369 #ifdef ACPI_APPLICATION
370 #define ACPI_APP_DEPENDENT_RETURN_VOID(Prototype) \
371     Prototype;
372
373 #else
374 #define ACPI_APP_DEPENDENT_RETURN_VOID(Prototype) \
375     static ACPI_INLINE Prototype {return;}
376
377 #endif /* ACPI_APPLICATION */
378
379
380 /*
381  * Debugger prototypes
382  *
383  * All interfaces used by debugger will be configured
384  * out of the ACPICA build unless the ACPI_DEBUGGER
385  * flag is defined.
386  */
387 #ifdef ACPI_DEBUGGER
388 #define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \
389     ACPI_EXTERNAL_RETURN_OK(Prototype)
390
391 #define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \
392     ACPI_EXTERNAL_RETURN_VOID(Prototype)
393
394 #else
395 #define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \
396     static ACPI_INLINE Prototype {return(AE_OK);}
397
398 #define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \
399     static ACPI_INLINE Prototype {return;}
400
401 #endif /* ACPI_DEBUGGER */
402
403
404 /*****************************************************************************
405  *
406  * ACPICA public interface prototypes
407  *
408  ****************************************************************************/
409
410 /*
411  * Initialization
412  */
413 ACPI_EXTERNAL_RETURN_STATUS (
414 ACPI_STATUS
415 AcpiInitializeTables (
416     ACPI_TABLE_DESC         *InitialStorage,
417     UINT32                  InitialTableCount,
418     BOOLEAN                 AllowResize))
419
420 ACPI_EXTERNAL_RETURN_STATUS (
421 ACPI_STATUS
422 AcpiInitializeSubsystem (
423     void))
424
425 ACPI_EXTERNAL_RETURN_STATUS (
426 ACPI_STATUS
427 AcpiEnableSubsystem (
428     UINT32                  Flags))
429
430 ACPI_EXTERNAL_RETURN_STATUS (
431 ACPI_STATUS
432 AcpiInitializeObjects (
433     UINT32                  Flags))
434
435 ACPI_EXTERNAL_RETURN_STATUS (
436 ACPI_STATUS
437 AcpiTerminate (
438     void))
439
440
441 /*
442  * Miscellaneous global interfaces
443  */
444 ACPI_HW_DEPENDENT_RETURN_STATUS (
445 ACPI_STATUS
446 AcpiEnable (
447     void))
448
449 ACPI_HW_DEPENDENT_RETURN_STATUS (
450 ACPI_STATUS
451 AcpiDisable (
452     void))
453
454 ACPI_EXTERNAL_RETURN_STATUS (
455 ACPI_STATUS
456 AcpiSubsystemStatus (
457     void))
458
459 ACPI_EXTERNAL_RETURN_STATUS (
460 ACPI_STATUS
461 AcpiGetSystemInfo (
462     ACPI_BUFFER             *RetBuffer))
463
464 ACPI_EXTERNAL_RETURN_STATUS (
465 ACPI_STATUS
466 AcpiGetStatistics (
467     ACPI_STATISTICS         *Stats))
468
469 ACPI_EXTERNAL_RETURN_PTR (
470 const char *
471 AcpiFormatException (
472     ACPI_STATUS             Exception))
473
474 ACPI_EXTERNAL_RETURN_STATUS (
475 ACPI_STATUS
476 AcpiPurgeCachedObjects (
477     void))
478
479 ACPI_EXTERNAL_RETURN_STATUS (
480 ACPI_STATUS
481 AcpiInstallInterface (
482     ACPI_STRING             InterfaceName))
483
484 ACPI_EXTERNAL_RETURN_STATUS (
485 ACPI_STATUS
486 AcpiRemoveInterface (
487     ACPI_STRING             InterfaceName))
488
489 ACPI_EXTERNAL_RETURN_STATUS (
490 ACPI_STATUS
491 AcpiUpdateInterfaces (
492     UINT8                   Action))
493
494 ACPI_EXTERNAL_RETURN_UINT32 (
495 UINT32
496 AcpiCheckAddressRange (
497     ACPI_ADR_SPACE_TYPE     SpaceId,
498     ACPI_PHYSICAL_ADDRESS   Address,
499     ACPI_SIZE               Length,
500     BOOLEAN                 Warn))
501
502 ACPI_EXTERNAL_RETURN_STATUS (
503 ACPI_STATUS
504 AcpiDecodePldBuffer (
505     UINT8                   *InBuffer,
506     ACPI_SIZE               Length,
507     ACPI_PLD_INFO           **ReturnBuffer))
508
509
510 /*
511  * ACPI table load/unload interfaces
512  */
513 ACPI_EXTERNAL_RETURN_STATUS (
514 ACPI_STATUS
515 AcpiInstallTable (
516     ACPI_PHYSICAL_ADDRESS   Address,
517     BOOLEAN                 Physical))
518
519 ACPI_EXTERNAL_RETURN_STATUS (
520 ACPI_STATUS
521 AcpiLoadTable (
522     ACPI_TABLE_HEADER       *Table))
523
524 ACPI_EXTERNAL_RETURN_STATUS (
525 ACPI_STATUS
526 AcpiUnloadParentTable (
527     ACPI_HANDLE             Object))
528
529 ACPI_EXTERNAL_RETURN_STATUS (
530 ACPI_STATUS
531 AcpiLoadTables (
532     void))
533
534
535 /*
536  * ACPI table manipulation interfaces
537  */
538 ACPI_EXTERNAL_RETURN_STATUS (
539 ACPI_STATUS
540 AcpiReallocateRootTable (
541     void))
542
543 ACPI_EXTERNAL_RETURN_STATUS (
544 ACPI_STATUS
545 AcpiFindRootPointer (
546     ACPI_PHYSICAL_ADDRESS   *RsdpAddress))
547
548 ACPI_EXTERNAL_RETURN_STATUS (
549 ACPI_STATUS
550 AcpiGetTableHeader (
551     ACPI_STRING             Signature,
552     UINT32                  Instance,
553     ACPI_TABLE_HEADER       *OutTableHeader))
554
555 ACPI_EXTERNAL_RETURN_STATUS (
556 ACPI_STATUS
557 AcpiGetTable (
558     ACPI_STRING             Signature,
559     UINT32                  Instance,
560     ACPI_TABLE_HEADER       **OutTable))
561
562 ACPI_EXTERNAL_RETURN_STATUS (
563 ACPI_STATUS
564 AcpiGetTableByIndex (
565     UINT32                  TableIndex,
566     ACPI_TABLE_HEADER       **OutTable))
567
568 ACPI_EXTERNAL_RETURN_STATUS (
569 ACPI_STATUS
570 AcpiInstallTableHandler (
571     ACPI_TABLE_HANDLER      Handler,
572     void                    *Context))
573
574 ACPI_EXTERNAL_RETURN_STATUS (
575 ACPI_STATUS
576 AcpiRemoveTableHandler (
577     ACPI_TABLE_HANDLER      Handler))
578
579
580 /*
581  * Namespace and name interfaces
582  */
583 ACPI_EXTERNAL_RETURN_STATUS (
584 ACPI_STATUS
585 AcpiWalkNamespace (
586     ACPI_OBJECT_TYPE        Type,
587     ACPI_HANDLE             StartObject,
588     UINT32                  MaxDepth,
589     ACPI_WALK_CALLBACK      DescendingCallback,
590     ACPI_WALK_CALLBACK      AscendingCallback,
591     void                    *Context,
592     void                    **ReturnValue))
593
594 ACPI_EXTERNAL_RETURN_STATUS (
595 ACPI_STATUS
596 AcpiGetDevices (
597     char                    *HID,
598     ACPI_WALK_CALLBACK      UserFunction,
599     void                    *Context,
600     void                    **ReturnValue))
601
602 ACPI_EXTERNAL_RETURN_STATUS (
603 ACPI_STATUS
604 AcpiGetName (
605     ACPI_HANDLE             Object,
606     UINT32                  NameType,
607     ACPI_BUFFER             *RetPathPtr))
608
609 ACPI_EXTERNAL_RETURN_STATUS (
610 ACPI_STATUS
611 AcpiGetHandle (
612     ACPI_HANDLE             Parent,
613     ACPI_STRING             Pathname,
614     ACPI_HANDLE             *RetHandle))
615
616 ACPI_EXTERNAL_RETURN_STATUS (
617 ACPI_STATUS
618 AcpiAttachData (
619     ACPI_HANDLE             Object,
620     ACPI_OBJECT_HANDLER     Handler,
621     void                    *Data))
622
623 ACPI_EXTERNAL_RETURN_STATUS (
624 ACPI_STATUS
625 AcpiDetachData (
626     ACPI_HANDLE             Object,
627     ACPI_OBJECT_HANDLER     Handler))
628
629 ACPI_EXTERNAL_RETURN_STATUS (
630 ACPI_STATUS
631 AcpiGetData (
632     ACPI_HANDLE             Object,
633     ACPI_OBJECT_HANDLER     Handler,
634     void                    **Data))
635
636 ACPI_EXTERNAL_RETURN_STATUS (
637 ACPI_STATUS
638 AcpiDebugTrace (
639     const char              *Name,
640     UINT32                  DebugLevel,
641     UINT32                  DebugLayer,
642     UINT32                  Flags))
643
644
645 /*
646  * Object manipulation and enumeration
647  */
648 ACPI_EXTERNAL_RETURN_STATUS (
649 ACPI_STATUS
650 AcpiEvaluateObject (
651     ACPI_HANDLE             Object,
652     ACPI_STRING             Pathname,
653     ACPI_OBJECT_LIST        *ParameterObjects,
654     ACPI_BUFFER             *ReturnObjectBuffer))
655
656 ACPI_EXTERNAL_RETURN_STATUS (
657 ACPI_STATUS
658 AcpiEvaluateObjectTyped (
659     ACPI_HANDLE             Object,
660     ACPI_STRING             Pathname,
661     ACPI_OBJECT_LIST        *ExternalParams,
662     ACPI_BUFFER             *ReturnBuffer,
663     ACPI_OBJECT_TYPE        ReturnType))
664
665 ACPI_EXTERNAL_RETURN_STATUS (
666 ACPI_STATUS
667 AcpiGetObjectInfo (
668     ACPI_HANDLE             Object,
669     ACPI_DEVICE_INFO        **ReturnBuffer))
670
671 ACPI_EXTERNAL_RETURN_STATUS (
672 ACPI_STATUS
673 AcpiInstallMethod (
674     UINT8                   *Buffer))
675
676 ACPI_EXTERNAL_RETURN_STATUS (
677 ACPI_STATUS
678 AcpiGetNextObject (
679     ACPI_OBJECT_TYPE        Type,
680     ACPI_HANDLE             Parent,
681     ACPI_HANDLE             Child,
682     ACPI_HANDLE             *OutHandle))
683
684 ACPI_EXTERNAL_RETURN_STATUS (
685 ACPI_STATUS
686 AcpiGetType (
687     ACPI_HANDLE             Object,
688     ACPI_OBJECT_TYPE        *OutType))
689
690 ACPI_EXTERNAL_RETURN_STATUS (
691 ACPI_STATUS
692 AcpiGetParent (
693     ACPI_HANDLE             Object,
694     ACPI_HANDLE             *OutHandle))
695
696
697 /*
698  * Handler interfaces
699  */
700 ACPI_EXTERNAL_RETURN_STATUS (
701 ACPI_STATUS
702 AcpiInstallInitializationHandler (
703     ACPI_INIT_HANDLER       Handler,
704     UINT32                  Function))
705
706 ACPI_HW_DEPENDENT_RETURN_STATUS (
707 ACPI_STATUS
708 AcpiInstallSciHandler (
709     ACPI_SCI_HANDLER        Address,
710     void                    *Context))
711
712 ACPI_HW_DEPENDENT_RETURN_STATUS (
713 ACPI_STATUS
714 AcpiRemoveSciHandler (
715     ACPI_SCI_HANDLER        Address))
716
717 ACPI_HW_DEPENDENT_RETURN_STATUS (
718 ACPI_STATUS
719 AcpiInstallGlobalEventHandler (
720     ACPI_GBL_EVENT_HANDLER  Handler,
721     void                    *Context))
722
723 ACPI_HW_DEPENDENT_RETURN_STATUS (
724 ACPI_STATUS
725 AcpiInstallFixedEventHandler (
726     UINT32                  AcpiEvent,
727     ACPI_EVENT_HANDLER      Handler,
728     void                    *Context))
729
730 ACPI_HW_DEPENDENT_RETURN_STATUS (
731 ACPI_STATUS
732 AcpiRemoveFixedEventHandler (
733     UINT32                  AcpiEvent,
734     ACPI_EVENT_HANDLER      Handler))
735
736 ACPI_HW_DEPENDENT_RETURN_STATUS (
737 ACPI_STATUS
738 AcpiInstallGpeHandler (
739     ACPI_HANDLE             GpeDevice,
740     UINT32                  GpeNumber,
741     UINT32                  Type,
742     ACPI_GPE_HANDLER        Address,
743     void                    *Context))
744
745 ACPI_HW_DEPENDENT_RETURN_STATUS (
746 ACPI_STATUS
747 AcpiInstallGpeRawHandler (
748     ACPI_HANDLE             GpeDevice,
749     UINT32                  GpeNumber,
750     UINT32                  Type,
751     ACPI_GPE_HANDLER        Address,
752     void                    *Context))
753
754 ACPI_HW_DEPENDENT_RETURN_STATUS (
755 ACPI_STATUS
756 AcpiRemoveGpeHandler (
757     ACPI_HANDLE             GpeDevice,
758     UINT32                  GpeNumber,
759     ACPI_GPE_HANDLER        Address))
760
761 ACPI_EXTERNAL_RETURN_STATUS (
762 ACPI_STATUS
763 AcpiInstallNotifyHandler (
764     ACPI_HANDLE             Device,
765     UINT32                  HandlerType,
766     ACPI_NOTIFY_HANDLER     Handler,
767     void                    *Context))
768
769 ACPI_EXTERNAL_RETURN_STATUS (
770 ACPI_STATUS
771 AcpiRemoveNotifyHandler (
772     ACPI_HANDLE             Device,
773     UINT32                  HandlerType,
774     ACPI_NOTIFY_HANDLER     Handler))
775
776 ACPI_EXTERNAL_RETURN_STATUS (
777 ACPI_STATUS
778 AcpiInstallAddressSpaceHandler (
779     ACPI_HANDLE             Device,
780     ACPI_ADR_SPACE_TYPE     SpaceId,
781     ACPI_ADR_SPACE_HANDLER  Handler,
782     ACPI_ADR_SPACE_SETUP    Setup,
783     void                    *Context))
784
785 ACPI_EXTERNAL_RETURN_STATUS (
786 ACPI_STATUS
787 AcpiRemoveAddressSpaceHandler (
788     ACPI_HANDLE             Device,
789     ACPI_ADR_SPACE_TYPE     SpaceId,
790     ACPI_ADR_SPACE_HANDLER  Handler))
791
792 ACPI_EXTERNAL_RETURN_STATUS (
793 ACPI_STATUS
794 AcpiInstallExceptionHandler (
795     ACPI_EXCEPTION_HANDLER  Handler))
796
797 ACPI_EXTERNAL_RETURN_STATUS (
798 ACPI_STATUS
799 AcpiInstallInterfaceHandler (
800     ACPI_INTERFACE_HANDLER  Handler))
801
802
803 /*
804  * Global Lock interfaces
805  */
806 ACPI_HW_DEPENDENT_RETURN_STATUS (
807 ACPI_STATUS
808 AcpiAcquireGlobalLock (
809     UINT16                  Timeout,
810     UINT32                  *Handle))
811
812 ACPI_HW_DEPENDENT_RETURN_STATUS (
813 ACPI_STATUS
814 AcpiReleaseGlobalLock (
815     UINT32                  Handle))
816
817
818 /*
819  * Interfaces to AML mutex objects
820  */
821 ACPI_EXTERNAL_RETURN_STATUS (
822 ACPI_STATUS
823 AcpiAcquireMutex (
824     ACPI_HANDLE             Handle,
825     ACPI_STRING             Pathname,
826     UINT16                  Timeout))
827
828 ACPI_EXTERNAL_RETURN_STATUS (
829 ACPI_STATUS
830 AcpiReleaseMutex (
831     ACPI_HANDLE             Handle,
832     ACPI_STRING             Pathname))
833
834
835 /*
836  * Fixed Event interfaces
837  */
838 ACPI_HW_DEPENDENT_RETURN_STATUS (
839 ACPI_STATUS
840 AcpiEnableEvent (
841     UINT32                  Event,
842     UINT32                  Flags))
843
844 ACPI_HW_DEPENDENT_RETURN_STATUS (
845 ACPI_STATUS
846 AcpiDisableEvent (
847     UINT32                  Event,
848     UINT32                  Flags))
849
850 ACPI_HW_DEPENDENT_RETURN_STATUS (
851 ACPI_STATUS
852 AcpiClearEvent (
853     UINT32                  Event))
854
855 ACPI_HW_DEPENDENT_RETURN_STATUS (
856 ACPI_STATUS
857 AcpiGetEventStatus (
858     UINT32                  Event,
859     ACPI_EVENT_STATUS       *EventStatus))
860
861
862 /*
863  * General Purpose Event (GPE) Interfaces
864  */
865 ACPI_HW_DEPENDENT_RETURN_STATUS (
866 ACPI_STATUS
867 AcpiUpdateAllGpes (
868     void))
869
870 ACPI_HW_DEPENDENT_RETURN_STATUS (
871 ACPI_STATUS
872 AcpiEnableGpe (
873     ACPI_HANDLE             GpeDevice,
874     UINT32                  GpeNumber))
875
876 ACPI_HW_DEPENDENT_RETURN_STATUS (
877 ACPI_STATUS
878 AcpiDisableGpe (
879     ACPI_HANDLE             GpeDevice,
880     UINT32                  GpeNumber))
881
882 ACPI_HW_DEPENDENT_RETURN_STATUS (
883 ACPI_STATUS
884 AcpiClearGpe (
885     ACPI_HANDLE             GpeDevice,
886     UINT32                  GpeNumber))
887
888 ACPI_HW_DEPENDENT_RETURN_STATUS (
889 ACPI_STATUS
890 AcpiSetGpe (
891     ACPI_HANDLE             GpeDevice,
892     UINT32                  GpeNumber,
893     UINT8                   Action))
894
895 ACPI_HW_DEPENDENT_RETURN_STATUS (
896 ACPI_STATUS
897 AcpiFinishGpe (
898     ACPI_HANDLE             GpeDevice,
899     UINT32                  GpeNumber))
900
901 ACPI_HW_DEPENDENT_RETURN_STATUS (
902 ACPI_STATUS
903 AcpiMarkGpeForWake (
904     ACPI_HANDLE             GpeDevice,
905     UINT32                  GpeNumber))
906
907 ACPI_HW_DEPENDENT_RETURN_STATUS (
908 ACPI_STATUS
909 AcpiSetupGpeForWake (
910     ACPI_HANDLE             ParentDevice,
911     ACPI_HANDLE             GpeDevice,
912     UINT32                  GpeNumber))
913
914 ACPI_HW_DEPENDENT_RETURN_STATUS (
915 ACPI_STATUS
916 AcpiSetGpeWakeMask (
917     ACPI_HANDLE             GpeDevice,
918     UINT32                  GpeNumber,
919     UINT8                   Action))
920
921 ACPI_HW_DEPENDENT_RETURN_STATUS (
922 ACPI_STATUS
923 AcpiGetGpeStatus (
924     ACPI_HANDLE             GpeDevice,
925     UINT32                  GpeNumber,
926     ACPI_EVENT_STATUS       *EventStatus))
927
928 ACPI_HW_DEPENDENT_RETURN_STATUS (
929 ACPI_STATUS
930 AcpiDisableAllGpes (
931     void))
932
933 ACPI_HW_DEPENDENT_RETURN_STATUS (
934 ACPI_STATUS
935 AcpiEnableAllRuntimeGpes (
936     void))
937
938 ACPI_HW_DEPENDENT_RETURN_STATUS (
939 ACPI_STATUS
940 AcpiEnableAllWakeupGpes (
941     void))
942
943 ACPI_HW_DEPENDENT_RETURN_STATUS (
944 ACPI_STATUS
945 AcpiGetGpeDevice (
946     UINT32                  GpeIndex,
947     ACPI_HANDLE             *GpeDevice))
948
949 ACPI_HW_DEPENDENT_RETURN_STATUS (
950 ACPI_STATUS
951 AcpiInstallGpeBlock (
952     ACPI_HANDLE             GpeDevice,
953     ACPI_GENERIC_ADDRESS    *GpeBlockAddress,
954     UINT32                  RegisterCount,
955     UINT32                  InterruptNumber))
956
957 ACPI_HW_DEPENDENT_RETURN_STATUS (
958 ACPI_STATUS
959 AcpiRemoveGpeBlock (
960     ACPI_HANDLE             GpeDevice))
961
962
963 /*
964  * Resource interfaces
965  */
966 typedef
967 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
968     ACPI_RESOURCE           *Resource,
969     void                    *Context);
970
971 ACPI_EXTERNAL_RETURN_STATUS (
972 ACPI_STATUS
973 AcpiGetVendorResource (
974     ACPI_HANDLE             Device,
975     char                    *Name,
976     ACPI_VENDOR_UUID        *Uuid,
977     ACPI_BUFFER             *RetBuffer))
978
979 ACPI_EXTERNAL_RETURN_STATUS (
980 ACPI_STATUS
981 AcpiGetCurrentResources (
982     ACPI_HANDLE             Device,
983     ACPI_BUFFER             *RetBuffer))
984
985 ACPI_EXTERNAL_RETURN_STATUS (
986 ACPI_STATUS
987 AcpiGetPossibleResources (
988     ACPI_HANDLE             Device,
989     ACPI_BUFFER             *RetBuffer))
990
991 ACPI_EXTERNAL_RETURN_STATUS (
992 ACPI_STATUS
993 AcpiGetEventResources (
994     ACPI_HANDLE             DeviceHandle,
995     ACPI_BUFFER             *RetBuffer))
996
997 ACPI_EXTERNAL_RETURN_STATUS (
998 ACPI_STATUS
999 AcpiWalkResourceBuffer (
1000     ACPI_BUFFER                 *Buffer,
1001     ACPI_WALK_RESOURCE_CALLBACK UserFunction,
1002     void                        *Context))
1003
1004 ACPI_EXTERNAL_RETURN_STATUS (
1005 ACPI_STATUS
1006 AcpiWalkResources (
1007     ACPI_HANDLE                 Device,
1008     char                        *Name,
1009     ACPI_WALK_RESOURCE_CALLBACK UserFunction,
1010     void                        *Context))
1011
1012 ACPI_EXTERNAL_RETURN_STATUS (
1013 ACPI_STATUS
1014 AcpiSetCurrentResources (
1015     ACPI_HANDLE             Device,
1016     ACPI_BUFFER             *InBuffer))
1017
1018 ACPI_EXTERNAL_RETURN_STATUS (
1019 ACPI_STATUS
1020 AcpiGetIrqRoutingTable (
1021     ACPI_HANDLE             Device,
1022     ACPI_BUFFER             *RetBuffer))
1023
1024 ACPI_EXTERNAL_RETURN_STATUS (
1025 ACPI_STATUS
1026 AcpiResourceToAddress64 (
1027     ACPI_RESOURCE           *Resource,
1028     ACPI_RESOURCE_ADDRESS64 *Out))
1029
1030 ACPI_EXTERNAL_RETURN_STATUS (
1031 ACPI_STATUS
1032 AcpiBufferToResource (
1033     UINT8                   *AmlBuffer,
1034     UINT16                  AmlBufferLength,
1035     ACPI_RESOURCE           **ResourcePtr))
1036
1037
1038 /*
1039  * Hardware (ACPI device) interfaces
1040  */
1041 ACPI_EXTERNAL_RETURN_STATUS (
1042 ACPI_STATUS
1043 AcpiReset (
1044     void))
1045
1046 ACPI_EXTERNAL_RETURN_STATUS (
1047 ACPI_STATUS
1048 AcpiRead (
1049     UINT64                  *Value,
1050     ACPI_GENERIC_ADDRESS    *Reg))
1051
1052 ACPI_EXTERNAL_RETURN_STATUS (
1053 ACPI_STATUS
1054 AcpiWrite (
1055     UINT64                  Value,
1056     ACPI_GENERIC_ADDRESS    *Reg))
1057
1058 ACPI_HW_DEPENDENT_RETURN_STATUS (
1059 ACPI_STATUS
1060 AcpiReadBitRegister (
1061     UINT32                  RegisterId,
1062     UINT32                  *ReturnValue))
1063
1064 ACPI_HW_DEPENDENT_RETURN_STATUS (
1065 ACPI_STATUS
1066 AcpiWriteBitRegister (
1067     UINT32                  RegisterId,
1068     UINT32                  Value))
1069
1070
1071 /*
1072  * Sleep/Wake interfaces
1073  */
1074 ACPI_EXTERNAL_RETURN_STATUS (
1075 ACPI_STATUS
1076 AcpiGetSleepTypeData (
1077     UINT8                   SleepState,
1078     UINT8                   *Slp_TypA,
1079     UINT8                   *Slp_TypB))
1080
1081 ACPI_EXTERNAL_RETURN_STATUS (
1082 ACPI_STATUS
1083 AcpiEnterSleepStatePrep (
1084     UINT8                   SleepState))
1085
1086 ACPI_EXTERNAL_RETURN_STATUS (
1087 ACPI_STATUS
1088 AcpiEnterSleepState (
1089     UINT8                   SleepState))
1090
1091 ACPI_HW_DEPENDENT_RETURN_STATUS (
1092 ACPI_STATUS
1093 AcpiEnterSleepStateS4bios (
1094     void))
1095
1096 ACPI_EXTERNAL_RETURN_STATUS (
1097 ACPI_STATUS
1098 AcpiLeaveSleepStatePrep (
1099     UINT8                   SleepState))
1100
1101 ACPI_EXTERNAL_RETURN_STATUS (
1102 ACPI_STATUS
1103 AcpiLeaveSleepState (
1104     UINT8                   SleepState))
1105
1106 ACPI_HW_DEPENDENT_RETURN_STATUS (
1107 ACPI_STATUS
1108 AcpiSetFirmwareWakingVector (
1109     ACPI_PHYSICAL_ADDRESS   PhysicalAddress,
1110     ACPI_PHYSICAL_ADDRESS   PhysicalAddress64))
1111
1112
1113 /*
1114  * ACPI Timer interfaces
1115  */
1116 ACPI_HW_DEPENDENT_RETURN_STATUS (
1117 ACPI_STATUS
1118 AcpiGetTimerResolution (
1119     UINT32                  *Resolution))
1120
1121 ACPI_HW_DEPENDENT_RETURN_STATUS (
1122 ACPI_STATUS
1123 AcpiGetTimer (
1124     UINT32                  *Ticks))
1125
1126 ACPI_HW_DEPENDENT_RETURN_STATUS (
1127 ACPI_STATUS
1128 AcpiGetTimerDuration (
1129     UINT32                  StartTicks,
1130     UINT32                  EndTicks,
1131     UINT32                  *TimeElapsed))
1132
1133
1134 /*
1135  * Error/Warning output
1136  */
1137 ACPI_MSG_DEPENDENT_RETURN_VOID (
1138 ACPI_PRINTF_LIKE(3)
1139 void ACPI_INTERNAL_VAR_XFACE
1140 AcpiError (
1141     const char              *ModuleName,
1142     UINT32                  LineNumber,
1143     const char              *Format,
1144     ...))
1145
1146 ACPI_MSG_DEPENDENT_RETURN_VOID (
1147 ACPI_PRINTF_LIKE(4)
1148 void  ACPI_INTERNAL_VAR_XFACE
1149 AcpiException (
1150     const char              *ModuleName,
1151     UINT32                  LineNumber,
1152     ACPI_STATUS             Status,
1153     const char              *Format,
1154     ...))
1155
1156 ACPI_MSG_DEPENDENT_RETURN_VOID (
1157 ACPI_PRINTF_LIKE(3)
1158 void ACPI_INTERNAL_VAR_XFACE
1159 AcpiWarning (
1160     const char              *ModuleName,
1161     UINT32                  LineNumber,
1162     const char              *Format,
1163     ...))
1164
1165 ACPI_MSG_DEPENDENT_RETURN_VOID (
1166 ACPI_PRINTF_LIKE(3)
1167 void ACPI_INTERNAL_VAR_XFACE
1168 AcpiInfo (
1169     const char              *ModuleName,
1170     UINT32                  LineNumber,
1171     const char              *Format,
1172     ...))
1173
1174 ACPI_MSG_DEPENDENT_RETURN_VOID (
1175 ACPI_PRINTF_LIKE(3)
1176 void ACPI_INTERNAL_VAR_XFACE
1177 AcpiBiosError (
1178     const char              *ModuleName,
1179     UINT32                  LineNumber,
1180     const char              *Format,
1181     ...))
1182
1183 ACPI_MSG_DEPENDENT_RETURN_VOID (
1184 ACPI_PRINTF_LIKE(3)
1185 void ACPI_INTERNAL_VAR_XFACE
1186 AcpiBiosWarning (
1187     const char              *ModuleName,
1188     UINT32                  LineNumber,
1189     const char              *Format,
1190     ...))
1191
1192
1193 /*
1194  * Debug output
1195  */
1196 ACPI_DBG_DEPENDENT_RETURN_VOID (
1197 ACPI_PRINTF_LIKE(6)
1198 void ACPI_INTERNAL_VAR_XFACE
1199 AcpiDebugPrint (
1200     UINT32                  RequestedDebugLevel,
1201     UINT32                  LineNumber,
1202     const char              *FunctionName,
1203     const char              *ModuleName,
1204     UINT32                  ComponentId,
1205     const char              *Format,
1206     ...))
1207
1208 ACPI_DBG_DEPENDENT_RETURN_VOID (
1209 ACPI_PRINTF_LIKE(6)
1210 void ACPI_INTERNAL_VAR_XFACE
1211 AcpiDebugPrintRaw (
1212     UINT32                  RequestedDebugLevel,
1213     UINT32                  LineNumber,
1214     const char              *FunctionName,
1215     const char              *ModuleName,
1216     UINT32                  ComponentId,
1217     const char              *Format,
1218     ...))
1219
1220 ACPI_DBG_DEPENDENT_RETURN_VOID (
1221 void
1222 AcpiTracePoint (
1223     ACPI_TRACE_EVENT_TYPE   Type,
1224     BOOLEAN                 Begin,
1225     UINT8                   *Aml,
1226     char                    *Pathname))
1227
1228 ACPI_APP_DEPENDENT_RETURN_VOID (
1229 ACPI_PRINTF_LIKE(1)
1230 void ACPI_INTERNAL_VAR_XFACE
1231 AcpiLogError (
1232     const char              *Format,
1233     ...))
1234
1235 ACPI_STATUS
1236 AcpiInitializeDebugger (
1237     void);
1238
1239 void
1240 AcpiTerminateDebugger (
1241     void);
1242
1243 void
1244 AcpiSetDebuggerThreadId (
1245     ACPI_THREAD_ID          ThreadId);
1246
1247 #endif /* __ACXFACE_H__ */