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