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 <contrib/dev/acpica/include/acconfig.h>
52#include <contrib/dev/acpica/include/actypes.h>
53#include <contrib/dev/acpica/include/actbl.h>
54#include <contrib/dev/acpica/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 */
140ACPI_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 */
149ACPI_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 */
156ACPI_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 */
162ACPI_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 */
171ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_VerifyTableChecksum, TRUE);
172
173/*
174 * Optionally enable output from the AML Debug Object.
175 */
176ACPI_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 */
184ACPI_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 */
192ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DoNotUseXsdt, FALSE);
193
194/*
195 * Optionally support group module level code.
196 */
197ACPI_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 */
207ACPI_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 */
216ACPI_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 */
224ACPI_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 */
230ACPI_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 */
236ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DisableSsdtTableInstall, FALSE);
237
238/*
239 * Optionally enable runtime namespace override.
240 */
241ACPI_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 */
247ACPI_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 */
254ACPI_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 */
260ACPI_INIT_GLOBAL (UINT32,           AcpiGbl_TraceFlags, 0);
261ACPI_INIT_GLOBAL (const char *,     AcpiGbl_TraceMethodName, NULL);
262ACPI_INIT_GLOBAL (UINT32,           AcpiGbl_TraceDbgLevel, ACPI_TRACE_LEVEL_DEFAULT);
263ACPI_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
271ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLevel, ACPI_DEBUG_DEFAULT);
272#else
273ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLevel, ACPI_NORMAL_DEFAULT);
274#endif
275ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLayer, ACPI_COMPONENT_DEFAULT);
276
277/* Optionally enable timer output with Debug Object output */
278
279ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DisplayDebugTimer, FALSE);
280
281/*
282 * Other miscellaneous globals
283 */
284ACPI_GLOBAL (ACPI_TABLE_FADT,       AcpiGbl_FADT);
285ACPI_GLOBAL (UINT32,                AcpiCurrentGpeCount);
286ACPI_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    static ACPI_INLINE Prototype {return;}
367
368#endif /* ACPI_DEBUG_OUTPUT */
369
370
371/*
372 * Application prototypes
373 *
374 * All interfaces used by application will be configured
375 * out of the ACPICA build unless the ACPI_APPLICATION
376 * flag is defined.
377 */
378#ifdef ACPI_APPLICATION
379#define ACPI_APP_DEPENDENT_RETURN_VOID(Prototype) \
380    Prototype;
381
382#else
383#define ACPI_APP_DEPENDENT_RETURN_VOID(Prototype) \
384    static ACPI_INLINE Prototype {return;}
385
386#endif /* ACPI_APPLICATION */
387
388
389/*
390 * Debugger prototypes
391 *
392 * All interfaces used by debugger will be configured
393 * out of the ACPICA build unless the ACPI_DEBUGGER
394 * flag is defined.
395 */
396#ifdef ACPI_DEBUGGER
397#define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \
398    ACPI_EXTERNAL_RETURN_OK(Prototype)
399
400#define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \
401    ACPI_EXTERNAL_RETURN_VOID(Prototype)
402
403#else
404#define ACPI_DBR_DEPENDENT_RETURN_OK(Prototype) \
405    static ACPI_INLINE Prototype {return(AE_OK);}
406
407#define ACPI_DBR_DEPENDENT_RETURN_VOID(Prototype) \
408    static ACPI_INLINE Prototype {return;}
409
410#endif /* ACPI_DEBUGGER */
411
412
413/*****************************************************************************
414 *
415 * ACPICA public interface prototypes
416 *
417 ****************************************************************************/
418
419/*
420 * Initialization
421 */
422ACPI_EXTERNAL_RETURN_STATUS (
423ACPI_STATUS
424AcpiInitializeTables (
425    ACPI_TABLE_DESC         *InitialStorage,
426    UINT32                  InitialTableCount,
427    BOOLEAN                 AllowResize))
428
429ACPI_EXTERNAL_RETURN_STATUS (
430ACPI_STATUS
431AcpiInitializeSubsystem (
432    void))
433
434ACPI_EXTERNAL_RETURN_STATUS (
435ACPI_STATUS
436AcpiEnableSubsystem (
437    UINT32                  Flags))
438
439ACPI_EXTERNAL_RETURN_STATUS (
440ACPI_STATUS
441AcpiInitializeObjects (
442    UINT32                  Flags))
443
444ACPI_EXTERNAL_RETURN_STATUS (
445ACPI_STATUS
446AcpiTerminate (
447    void))
448
449
450/*
451 * Miscellaneous global interfaces
452 */
453ACPI_HW_DEPENDENT_RETURN_STATUS (
454ACPI_STATUS
455AcpiEnable (
456    void))
457
458ACPI_HW_DEPENDENT_RETURN_STATUS (
459ACPI_STATUS
460AcpiDisable (
461    void))
462
463ACPI_EXTERNAL_RETURN_STATUS (
464ACPI_STATUS
465AcpiSubsystemStatus (
466    void))
467
468ACPI_EXTERNAL_RETURN_STATUS (
469ACPI_STATUS
470AcpiGetSystemInfo (
471    ACPI_BUFFER             *RetBuffer))
472
473ACPI_EXTERNAL_RETURN_STATUS (
474ACPI_STATUS
475AcpiGetStatistics (
476    ACPI_STATISTICS         *Stats))
477
478ACPI_EXTERNAL_RETURN_PTR (
479const char *
480AcpiFormatException (
481    ACPI_STATUS             Exception))
482
483ACPI_EXTERNAL_RETURN_STATUS (
484ACPI_STATUS
485AcpiPurgeCachedObjects (
486    void))
487
488ACPI_EXTERNAL_RETURN_STATUS (
489ACPI_STATUS
490AcpiInstallInterface (
491    ACPI_STRING             InterfaceName))
492
493ACPI_EXTERNAL_RETURN_STATUS (
494ACPI_STATUS
495AcpiRemoveInterface (
496    ACPI_STRING             InterfaceName))
497
498ACPI_EXTERNAL_RETURN_STATUS (
499ACPI_STATUS
500AcpiUpdateInterfaces (
501    UINT8                   Action))
502
503ACPI_EXTERNAL_RETURN_UINT32 (
504UINT32
505AcpiCheckAddressRange (
506    ACPI_ADR_SPACE_TYPE     SpaceId,
507    ACPI_PHYSICAL_ADDRESS   Address,
508    ACPI_SIZE               Length,
509    BOOLEAN                 Warn))
510
511ACPI_EXTERNAL_RETURN_STATUS (
512ACPI_STATUS
513AcpiDecodePldBuffer (
514    UINT8                   *InBuffer,
515    ACPI_SIZE               Length,
516    ACPI_PLD_INFO           **ReturnBuffer))
517
518
519/*
520 * ACPI table load/unload interfaces
521 */
522ACPI_EXTERNAL_RETURN_STATUS (
523ACPI_STATUS
524AcpiInstallTable (
525    ACPI_PHYSICAL_ADDRESS   Address,
526    BOOLEAN                 Physical))
527
528ACPI_EXTERNAL_RETURN_STATUS (
529ACPI_STATUS
530AcpiLoadTable (
531    ACPI_TABLE_HEADER       *Table))
532
533ACPI_EXTERNAL_RETURN_STATUS (
534ACPI_STATUS
535AcpiUnloadParentTable (
536    ACPI_HANDLE             Object))
537
538ACPI_EXTERNAL_RETURN_STATUS (
539ACPI_STATUS
540AcpiLoadTables (
541    void))
542
543
544/*
545 * ACPI table manipulation interfaces
546 */
547ACPI_EXTERNAL_RETURN_STATUS (
548ACPI_STATUS
549AcpiReallocateRootTable (
550    void))
551
552ACPI_EXTERNAL_RETURN_STATUS (
553ACPI_STATUS
554AcpiFindRootPointer (
555    ACPI_PHYSICAL_ADDRESS   *RsdpAddress))
556
557ACPI_EXTERNAL_RETURN_STATUS (
558ACPI_STATUS
559AcpiGetTableHeader (
560    ACPI_STRING             Signature,
561    UINT32                  Instance,
562    ACPI_TABLE_HEADER       *OutTableHeader))
563
564ACPI_EXTERNAL_RETURN_STATUS (
565ACPI_STATUS
566AcpiGetTable (
567    ACPI_STRING             Signature,
568    UINT32                  Instance,
569    ACPI_TABLE_HEADER       **OutTable))
570
571ACPI_EXTERNAL_RETURN_STATUS (
572ACPI_STATUS
573AcpiGetTableByIndex (
574    UINT32                  TableIndex,
575    ACPI_TABLE_HEADER       **OutTable))
576
577ACPI_EXTERNAL_RETURN_STATUS (
578ACPI_STATUS
579AcpiInstallTableHandler (
580    ACPI_TABLE_HANDLER      Handler,
581    void                    *Context))
582
583ACPI_EXTERNAL_RETURN_STATUS (
584ACPI_STATUS
585AcpiRemoveTableHandler (
586    ACPI_TABLE_HANDLER      Handler))
587
588
589/*
590 * Namespace and name interfaces
591 */
592ACPI_EXTERNAL_RETURN_STATUS (
593ACPI_STATUS
594AcpiWalkNamespace (
595    ACPI_OBJECT_TYPE        Type,
596    ACPI_HANDLE             StartObject,
597    UINT32                  MaxDepth,
598    ACPI_WALK_CALLBACK      DescendingCallback,
599    ACPI_WALK_CALLBACK      AscendingCallback,
600    void                    *Context,
601    void                    **ReturnValue))
602
603ACPI_EXTERNAL_RETURN_STATUS (
604ACPI_STATUS
605AcpiGetDevices (
606    char                    *HID,
607    ACPI_WALK_CALLBACK      UserFunction,
608    void                    *Context,
609    void                    **ReturnValue))
610
611ACPI_EXTERNAL_RETURN_STATUS (
612ACPI_STATUS
613AcpiGetName (
614    ACPI_HANDLE             Object,
615    UINT32                  NameType,
616    ACPI_BUFFER             *RetPathPtr))
617
618ACPI_EXTERNAL_RETURN_STATUS (
619ACPI_STATUS
620AcpiGetHandle (
621    ACPI_HANDLE             Parent,
622    ACPI_STRING             Pathname,
623    ACPI_HANDLE             *RetHandle))
624
625ACPI_EXTERNAL_RETURN_STATUS (
626ACPI_STATUS
627AcpiAttachData (
628    ACPI_HANDLE             Object,
629    ACPI_OBJECT_HANDLER     Handler,
630    void                    *Data))
631
632ACPI_EXTERNAL_RETURN_STATUS (
633ACPI_STATUS
634AcpiDetachData (
635    ACPI_HANDLE             Object,
636    ACPI_OBJECT_HANDLER     Handler))
637
638ACPI_EXTERNAL_RETURN_STATUS (
639ACPI_STATUS
640AcpiGetData (
641    ACPI_HANDLE             Object,
642    ACPI_OBJECT_HANDLER     Handler,
643    void                    **Data))
644
645ACPI_EXTERNAL_RETURN_STATUS (
646ACPI_STATUS
647AcpiDebugTrace (
648    const char              *Name,
649    UINT32                  DebugLevel,
650    UINT32                  DebugLayer,
651    UINT32                  Flags))
652
653
654/*
655 * Object manipulation and enumeration
656 */
657ACPI_EXTERNAL_RETURN_STATUS (
658ACPI_STATUS
659AcpiEvaluateObject (
660    ACPI_HANDLE             Object,
661    ACPI_STRING             Pathname,
662    ACPI_OBJECT_LIST        *ParameterObjects,
663    ACPI_BUFFER             *ReturnObjectBuffer))
664
665ACPI_EXTERNAL_RETURN_STATUS (
666ACPI_STATUS
667AcpiEvaluateObjectTyped (
668    ACPI_HANDLE             Object,
669    ACPI_STRING             Pathname,
670    ACPI_OBJECT_LIST        *ExternalParams,
671    ACPI_BUFFER             *ReturnBuffer,
672    ACPI_OBJECT_TYPE        ReturnType))
673
674ACPI_EXTERNAL_RETURN_STATUS (
675ACPI_STATUS
676AcpiGetObjectInfo (
677    ACPI_HANDLE             Object,
678    ACPI_DEVICE_INFO        **ReturnBuffer))
679
680ACPI_EXTERNAL_RETURN_STATUS (
681ACPI_STATUS
682AcpiInstallMethod (
683    UINT8                   *Buffer))
684
685ACPI_EXTERNAL_RETURN_STATUS (
686ACPI_STATUS
687AcpiGetNextObject (
688    ACPI_OBJECT_TYPE        Type,
689    ACPI_HANDLE             Parent,
690    ACPI_HANDLE             Child,
691    ACPI_HANDLE             *OutHandle))
692
693ACPI_EXTERNAL_RETURN_STATUS (
694ACPI_STATUS
695AcpiGetType (
696    ACPI_HANDLE             Object,
697    ACPI_OBJECT_TYPE        *OutType))
698
699ACPI_EXTERNAL_RETURN_STATUS (
700ACPI_STATUS
701AcpiGetParent (
702    ACPI_HANDLE             Object,
703    ACPI_HANDLE             *OutHandle))
704
705
706/*
707 * Handler interfaces
708 */
709ACPI_EXTERNAL_RETURN_STATUS (
710ACPI_STATUS
711AcpiInstallInitializationHandler (
712    ACPI_INIT_HANDLER       Handler,
713    UINT32                  Function))
714
715ACPI_HW_DEPENDENT_RETURN_STATUS (
716ACPI_STATUS
717AcpiInstallSciHandler (
718    ACPI_SCI_HANDLER        Address,
719    void                    *Context))
720
721ACPI_HW_DEPENDENT_RETURN_STATUS (
722ACPI_STATUS
723AcpiRemoveSciHandler (
724    ACPI_SCI_HANDLER        Address))
725
726ACPI_HW_DEPENDENT_RETURN_STATUS (
727ACPI_STATUS
728AcpiInstallGlobalEventHandler (
729    ACPI_GBL_EVENT_HANDLER  Handler,
730    void                    *Context))
731
732ACPI_HW_DEPENDENT_RETURN_STATUS (
733ACPI_STATUS
734AcpiInstallFixedEventHandler (
735    UINT32                  AcpiEvent,
736    ACPI_EVENT_HANDLER      Handler,
737    void                    *Context))
738
739ACPI_HW_DEPENDENT_RETURN_STATUS (
740ACPI_STATUS
741AcpiRemoveFixedEventHandler (
742    UINT32                  AcpiEvent,
743    ACPI_EVENT_HANDLER      Handler))
744
745ACPI_HW_DEPENDENT_RETURN_STATUS (
746ACPI_STATUS
747AcpiInstallGpeHandler (
748    ACPI_HANDLE             GpeDevice,
749    UINT32                  GpeNumber,
750    UINT32                  Type,
751    ACPI_GPE_HANDLER        Address,
752    void                    *Context))
753
754ACPI_HW_DEPENDENT_RETURN_STATUS (
755ACPI_STATUS
756AcpiInstallGpeRawHandler (
757    ACPI_HANDLE             GpeDevice,
758    UINT32                  GpeNumber,
759    UINT32                  Type,
760    ACPI_GPE_HANDLER        Address,
761    void                    *Context))
762
763ACPI_HW_DEPENDENT_RETURN_STATUS (
764ACPI_STATUS
765AcpiRemoveGpeHandler (
766    ACPI_HANDLE             GpeDevice,
767    UINT32                  GpeNumber,
768    ACPI_GPE_HANDLER        Address))
769
770ACPI_EXTERNAL_RETURN_STATUS (
771ACPI_STATUS
772AcpiInstallNotifyHandler (
773    ACPI_HANDLE             Device,
774    UINT32                  HandlerType,
775    ACPI_NOTIFY_HANDLER     Handler,
776    void                    *Context))
777
778ACPI_EXTERNAL_RETURN_STATUS (
779ACPI_STATUS
780AcpiRemoveNotifyHandler (
781    ACPI_HANDLE             Device,
782    UINT32                  HandlerType,
783    ACPI_NOTIFY_HANDLER     Handler))
784
785ACPI_EXTERNAL_RETURN_STATUS (
786ACPI_STATUS
787AcpiInstallAddressSpaceHandler (
788    ACPI_HANDLE             Device,
789    ACPI_ADR_SPACE_TYPE     SpaceId,
790    ACPI_ADR_SPACE_HANDLER  Handler,
791    ACPI_ADR_SPACE_SETUP    Setup,
792    void                    *Context))
793
794ACPI_EXTERNAL_RETURN_STATUS (
795ACPI_STATUS
796AcpiRemoveAddressSpaceHandler (
797    ACPI_HANDLE             Device,
798    ACPI_ADR_SPACE_TYPE     SpaceId,
799    ACPI_ADR_SPACE_HANDLER  Handler))
800
801ACPI_EXTERNAL_RETURN_STATUS (
802ACPI_STATUS
803AcpiInstallExceptionHandler (
804    ACPI_EXCEPTION_HANDLER  Handler))
805
806ACPI_EXTERNAL_RETURN_STATUS (
807ACPI_STATUS
808AcpiInstallInterfaceHandler (
809    ACPI_INTERFACE_HANDLER  Handler))
810
811
812/*
813 * Global Lock interfaces
814 */
815ACPI_HW_DEPENDENT_RETURN_STATUS (
816ACPI_STATUS
817AcpiAcquireGlobalLock (
818    UINT16                  Timeout,
819    UINT32                  *Handle))
820
821ACPI_HW_DEPENDENT_RETURN_STATUS (
822ACPI_STATUS
823AcpiReleaseGlobalLock (
824    UINT32                  Handle))
825
826
827/*
828 * Interfaces to AML mutex objects
829 */
830ACPI_EXTERNAL_RETURN_STATUS (
831ACPI_STATUS
832AcpiAcquireMutex (
833    ACPI_HANDLE             Handle,
834    ACPI_STRING             Pathname,
835    UINT16                  Timeout))
836
837ACPI_EXTERNAL_RETURN_STATUS (
838ACPI_STATUS
839AcpiReleaseMutex (
840    ACPI_HANDLE             Handle,
841    ACPI_STRING             Pathname))
842
843
844/*
845 * Fixed Event interfaces
846 */
847ACPI_HW_DEPENDENT_RETURN_STATUS (
848ACPI_STATUS
849AcpiEnableEvent (
850    UINT32                  Event,
851    UINT32                  Flags))
852
853ACPI_HW_DEPENDENT_RETURN_STATUS (
854ACPI_STATUS
855AcpiDisableEvent (
856    UINT32                  Event,
857    UINT32                  Flags))
858
859ACPI_HW_DEPENDENT_RETURN_STATUS (
860ACPI_STATUS
861AcpiClearEvent (
862    UINT32                  Event))
863
864ACPI_HW_DEPENDENT_RETURN_STATUS (
865ACPI_STATUS
866AcpiGetEventStatus (
867    UINT32                  Event,
868    ACPI_EVENT_STATUS       *EventStatus))
869
870
871/*
872 * General Purpose Event (GPE) Interfaces
873 */
874ACPI_HW_DEPENDENT_RETURN_STATUS (
875ACPI_STATUS
876AcpiUpdateAllGpes (
877    void))
878
879ACPI_HW_DEPENDENT_RETURN_STATUS (
880ACPI_STATUS
881AcpiEnableGpe (
882    ACPI_HANDLE             GpeDevice,
883    UINT32                  GpeNumber))
884
885ACPI_HW_DEPENDENT_RETURN_STATUS (
886ACPI_STATUS
887AcpiDisableGpe (
888    ACPI_HANDLE             GpeDevice,
889    UINT32                  GpeNumber))
890
891ACPI_HW_DEPENDENT_RETURN_STATUS (
892ACPI_STATUS
893AcpiClearGpe (
894    ACPI_HANDLE             GpeDevice,
895    UINT32                  GpeNumber))
896
897ACPI_HW_DEPENDENT_RETURN_STATUS (
898ACPI_STATUS
899AcpiSetGpe (
900    ACPI_HANDLE             GpeDevice,
901    UINT32                  GpeNumber,
902    UINT8                   Action))
903
904ACPI_HW_DEPENDENT_RETURN_STATUS (
905ACPI_STATUS
906AcpiFinishGpe (
907    ACPI_HANDLE             GpeDevice,
908    UINT32                  GpeNumber))
909
910ACPI_HW_DEPENDENT_RETURN_STATUS (
911ACPI_STATUS
912AcpiMarkGpeForWake (
913    ACPI_HANDLE             GpeDevice,
914    UINT32                  GpeNumber))
915
916ACPI_HW_DEPENDENT_RETURN_STATUS (
917ACPI_STATUS
918AcpiSetupGpeForWake (
919    ACPI_HANDLE             ParentDevice,
920    ACPI_HANDLE             GpeDevice,
921    UINT32                  GpeNumber))
922
923ACPI_HW_DEPENDENT_RETURN_STATUS (
924ACPI_STATUS
925AcpiSetGpeWakeMask (
926    ACPI_HANDLE             GpeDevice,
927    UINT32                  GpeNumber,
928    UINT8                   Action))
929
930ACPI_HW_DEPENDENT_RETURN_STATUS (
931ACPI_STATUS
932AcpiGetGpeStatus (
933    ACPI_HANDLE             GpeDevice,
934    UINT32                  GpeNumber,
935    ACPI_EVENT_STATUS       *EventStatus))
936
937ACPI_HW_DEPENDENT_RETURN_STATUS (
938ACPI_STATUS
939AcpiDisableAllGpes (
940    void))
941
942ACPI_HW_DEPENDENT_RETURN_STATUS (
943ACPI_STATUS
944AcpiEnableAllRuntimeGpes (
945    void))
946
947ACPI_HW_DEPENDENT_RETURN_STATUS (
948ACPI_STATUS
949AcpiEnableAllWakeupGpes (
950    void))
951
952ACPI_HW_DEPENDENT_RETURN_STATUS (
953ACPI_STATUS
954AcpiGetGpeDevice (
955    UINT32                  GpeIndex,
956    ACPI_HANDLE             *GpeDevice))
957
958ACPI_HW_DEPENDENT_RETURN_STATUS (
959ACPI_STATUS
960AcpiInstallGpeBlock (
961    ACPI_HANDLE             GpeDevice,
962    ACPI_GENERIC_ADDRESS    *GpeBlockAddress,
963    UINT32                  RegisterCount,
964    UINT32                  InterruptNumber))
965
966ACPI_HW_DEPENDENT_RETURN_STATUS (
967ACPI_STATUS
968AcpiRemoveGpeBlock (
969    ACPI_HANDLE             GpeDevice))
970
971
972/*
973 * Resource interfaces
974 */
975typedef
976ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
977    ACPI_RESOURCE           *Resource,
978    void                    *Context);
979
980ACPI_EXTERNAL_RETURN_STATUS (
981ACPI_STATUS
982AcpiGetVendorResource (
983    ACPI_HANDLE             Device,
984    char                    *Name,
985    ACPI_VENDOR_UUID        *Uuid,
986    ACPI_BUFFER             *RetBuffer))
987
988ACPI_EXTERNAL_RETURN_STATUS (
989ACPI_STATUS
990AcpiGetCurrentResources (
991    ACPI_HANDLE             Device,
992    ACPI_BUFFER             *RetBuffer))
993
994ACPI_EXTERNAL_RETURN_STATUS (
995ACPI_STATUS
996AcpiGetPossibleResources (
997    ACPI_HANDLE             Device,
998    ACPI_BUFFER             *RetBuffer))
999
1000ACPI_EXTERNAL_RETURN_STATUS (
1001ACPI_STATUS
1002AcpiGetEventResources (
1003    ACPI_HANDLE             DeviceHandle,
1004    ACPI_BUFFER             *RetBuffer))
1005
1006ACPI_EXTERNAL_RETURN_STATUS (
1007ACPI_STATUS
1008AcpiWalkResourceBuffer (
1009    ACPI_BUFFER                 *Buffer,
1010    ACPI_WALK_RESOURCE_CALLBACK UserFunction,
1011    void                        *Context))
1012
1013ACPI_EXTERNAL_RETURN_STATUS (
1014ACPI_STATUS
1015AcpiWalkResources (
1016    ACPI_HANDLE                 Device,
1017    char                        *Name,
1018    ACPI_WALK_RESOURCE_CALLBACK UserFunction,
1019    void                        *Context))
1020
1021ACPI_EXTERNAL_RETURN_STATUS (
1022ACPI_STATUS
1023AcpiSetCurrentResources (
1024    ACPI_HANDLE             Device,
1025    ACPI_BUFFER             *InBuffer))
1026
1027ACPI_EXTERNAL_RETURN_STATUS (
1028ACPI_STATUS
1029AcpiGetIrqRoutingTable (
1030    ACPI_HANDLE             Device,
1031    ACPI_BUFFER             *RetBuffer))
1032
1033ACPI_EXTERNAL_RETURN_STATUS (
1034ACPI_STATUS
1035AcpiResourceToAddress64 (
1036    ACPI_RESOURCE           *Resource,
1037    ACPI_RESOURCE_ADDRESS64 *Out))
1038
1039ACPI_EXTERNAL_RETURN_STATUS (
1040ACPI_STATUS
1041AcpiBufferToResource (
1042    UINT8                   *AmlBuffer,
1043    UINT16                  AmlBufferLength,
1044    ACPI_RESOURCE           **ResourcePtr))
1045
1046
1047/*
1048 * Hardware (ACPI device) interfaces
1049 */
1050ACPI_EXTERNAL_RETURN_STATUS (
1051ACPI_STATUS
1052AcpiReset (
1053    void))
1054
1055ACPI_EXTERNAL_RETURN_STATUS (
1056ACPI_STATUS
1057AcpiRead (
1058    UINT64                  *Value,
1059    ACPI_GENERIC_ADDRESS    *Reg))
1060
1061ACPI_EXTERNAL_RETURN_STATUS (
1062ACPI_STATUS
1063AcpiWrite (
1064    UINT64                  Value,
1065    ACPI_GENERIC_ADDRESS    *Reg))
1066
1067ACPI_HW_DEPENDENT_RETURN_STATUS (
1068ACPI_STATUS
1069AcpiReadBitRegister (
1070    UINT32                  RegisterId,
1071    UINT32                  *ReturnValue))
1072
1073ACPI_HW_DEPENDENT_RETURN_STATUS (
1074ACPI_STATUS
1075AcpiWriteBitRegister (
1076    UINT32                  RegisterId,
1077    UINT32                  Value))
1078
1079
1080/*
1081 * Sleep/Wake interfaces
1082 */
1083ACPI_EXTERNAL_RETURN_STATUS (
1084ACPI_STATUS
1085AcpiGetSleepTypeData (
1086    UINT8                   SleepState,
1087    UINT8                   *Slp_TypA,
1088    UINT8                   *Slp_TypB))
1089
1090ACPI_EXTERNAL_RETURN_STATUS (
1091ACPI_STATUS
1092AcpiEnterSleepStatePrep (
1093    UINT8                   SleepState))
1094
1095ACPI_EXTERNAL_RETURN_STATUS (
1096ACPI_STATUS
1097AcpiEnterSleepState (
1098    UINT8                   SleepState))
1099
1100ACPI_HW_DEPENDENT_RETURN_STATUS (
1101ACPI_STATUS
1102AcpiEnterSleepStateS4bios (
1103    void))
1104
1105ACPI_EXTERNAL_RETURN_STATUS (
1106ACPI_STATUS
1107AcpiLeaveSleepStatePrep (
1108    UINT8                   SleepState))
1109
1110ACPI_EXTERNAL_RETURN_STATUS (
1111ACPI_STATUS
1112AcpiLeaveSleepState (
1113    UINT8                   SleepState))
1114
1115ACPI_HW_DEPENDENT_RETURN_STATUS (
1116ACPI_STATUS
1117AcpiSetFirmwareWakingVector (
1118    ACPI_PHYSICAL_ADDRESS   PhysicalAddress,
1119    ACPI_PHYSICAL_ADDRESS   PhysicalAddress64))
1120
1121
1122/*
1123 * ACPI Timer interfaces
1124 */
1125ACPI_HW_DEPENDENT_RETURN_STATUS (
1126ACPI_STATUS
1127AcpiGetTimerResolution (
1128    UINT32                  *Resolution))
1129
1130ACPI_HW_DEPENDENT_RETURN_STATUS (
1131ACPI_STATUS
1132AcpiGetTimer (
1133    UINT32                  *Ticks))
1134
1135ACPI_HW_DEPENDENT_RETURN_STATUS (
1136ACPI_STATUS
1137AcpiGetTimerDuration (
1138    UINT32                  StartTicks,
1139    UINT32                  EndTicks,
1140    UINT32                  *TimeElapsed))
1141
1142
1143/*
1144 * Error/Warning output
1145 */
1146ACPI_MSG_DEPENDENT_RETURN_VOID (
1147ACPI_PRINTF_LIKE(3)
1148void ACPI_INTERNAL_VAR_XFACE
1149AcpiError (
1150    const char              *ModuleName,
1151    UINT32                  LineNumber,
1152    const char              *Format,
1153    ...))
1154
1155ACPI_MSG_DEPENDENT_RETURN_VOID (
1156ACPI_PRINTF_LIKE(4)
1157void  ACPI_INTERNAL_VAR_XFACE
1158AcpiException (
1159    const char              *ModuleName,
1160    UINT32                  LineNumber,
1161    ACPI_STATUS             Status,
1162    const char              *Format,
1163    ...))
1164
1165ACPI_MSG_DEPENDENT_RETURN_VOID (
1166ACPI_PRINTF_LIKE(3)
1167void ACPI_INTERNAL_VAR_XFACE
1168AcpiWarning (
1169    const char              *ModuleName,
1170    UINT32                  LineNumber,
1171    const char              *Format,
1172    ...))
1173
1174ACPI_MSG_DEPENDENT_RETURN_VOID (
1175ACPI_PRINTF_LIKE(1)
1176void ACPI_INTERNAL_VAR_XFACE
1177AcpiInfo (
1178    const char              *Format,
1179    ...))
1180
1181ACPI_MSG_DEPENDENT_RETURN_VOID (
1182ACPI_PRINTF_LIKE(3)
1183void ACPI_INTERNAL_VAR_XFACE
1184AcpiBiosError (
1185    const char              *ModuleName,
1186    UINT32                  LineNumber,
1187    const char              *Format,
1188    ...))
1189
1190ACPI_MSG_DEPENDENT_RETURN_VOID (
1191ACPI_PRINTF_LIKE(3)
1192void ACPI_INTERNAL_VAR_XFACE
1193AcpiBiosWarning (
1194    const char              *ModuleName,
1195    UINT32                  LineNumber,
1196    const char              *Format,
1197    ...))
1198
1199
1200/*
1201 * Debug output
1202 */
1203ACPI_DBG_DEPENDENT_RETURN_VOID (
1204ACPI_PRINTF_LIKE(6)
1205void ACPI_INTERNAL_VAR_XFACE
1206AcpiDebugPrint (
1207    UINT32                  RequestedDebugLevel,
1208    UINT32                  LineNumber,
1209    const char              *FunctionName,
1210    const char              *ModuleName,
1211    UINT32                  ComponentId,
1212    const char              *Format,
1213    ...))
1214
1215ACPI_DBG_DEPENDENT_RETURN_VOID (
1216ACPI_PRINTF_LIKE(6)
1217void ACPI_INTERNAL_VAR_XFACE
1218AcpiDebugPrintRaw (
1219    UINT32                  RequestedDebugLevel,
1220    UINT32                  LineNumber,
1221    const char              *FunctionName,
1222    const char              *ModuleName,
1223    UINT32                  ComponentId,
1224    const char              *Format,
1225    ...))
1226
1227ACPI_DBG_DEPENDENT_RETURN_VOID (
1228void
1229AcpiTracePoint (
1230    ACPI_TRACE_EVENT_TYPE   Type,
1231    BOOLEAN                 Begin,
1232    UINT8                   *Aml,
1233    char                    *Pathname))
1234
1235ACPI_APP_DEPENDENT_RETURN_VOID (
1236ACPI_PRINTF_LIKE(1)
1237void ACPI_INTERNAL_VAR_XFACE
1238AcpiLogError (
1239    const char              *Format,
1240    ...))
1241
1242ACPI_STATUS
1243AcpiInitializeDebugger (
1244    void);
1245
1246void
1247AcpiTerminateDebugger (
1248    void);
1249
1250void
1251AcpiSetDebuggerThreadId (
1252    ACPI_THREAD_ID          ThreadId);
1253
1254#endif /* __ACXFACE_H__ */
1255