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