Merge branch 'vendor/GCC50'
[dragonfly.git] / sys / contrib / dev / acpica / source / include / acpixf.h
1 /******************************************************************************
2  *
3  * Name: acpixf.h - External interfaces to the ACPI subsystem
4  *
5  *****************************************************************************/
6
7 /*
8  * Copyright (C) 2000 - 2015, Intel Corp.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions, and the following disclaimer,
16  *    without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  *    substantially similar to the "NO WARRANTY" disclaimer below
19  *    ("Disclaimer") and any redistribution must be conditioned upon
20  *    including a substantially similar Disclaimer requirement for further
21  *    binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  *    of any contributors may be used to endorse or promote products derived
24  *    from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41  * POSSIBILITY OF SUCH DAMAGES.
42  */
43
44 #ifndef __ACXFACE_H__
45 #define __ACXFACE_H__
46
47 /* Current ACPICA subsystem version in YYYYMMDD format */
48
49 #define ACPI_CA_VERSION                 0x20150410
50
51 #include "acconfig.h"
52 #include "actypes.h"
53 #include "actbl.h"
54 #include "acbuffer.h"
55
56
57 /*****************************************************************************
58  *
59  * Macros used for ACPICA globals and configuration
60  *
61  ****************************************************************************/
62
63 /*
64  * Ensure that global variables are defined and initialized only once.
65  *
66  * The use of these macros allows for a single list of globals (here)
67  * in order to simplify maintenance of the code.
68  */
69 #ifdef DEFINE_ACPI_GLOBALS
70 #define ACPI_GLOBAL(type,name) \
71     extern type name; \
72     type name
73
74 #define ACPI_INIT_GLOBAL(type,name,value) \
75     type name=value
76
77 #else
78 #ifndef ACPI_GLOBAL
79 #define ACPI_GLOBAL(type,name) \
80     extern type name
81 #endif
82
83 #ifndef ACPI_INIT_GLOBAL
84 #define ACPI_INIT_GLOBAL(type,name,value) \
85     extern type name
86 #endif
87 #endif
88
89 /*
90  * These macros configure the various ACPICA interfaces. They are
91  * useful for generating stub inline functions for features that are
92  * configured out of the current kernel or ACPICA application.
93  */
94 #ifndef ACPI_EXTERNAL_RETURN_STATUS
95 #define ACPI_EXTERNAL_RETURN_STATUS(Prototype) \
96     Prototype;
97 #endif
98
99 #ifndef ACPI_EXTERNAL_RETURN_OK
100 #define ACPI_EXTERNAL_RETURN_OK(Prototype) \
101     Prototype;
102 #endif
103
104 #ifndef ACPI_EXTERNAL_RETURN_VOID
105 #define ACPI_EXTERNAL_RETURN_VOID(Prototype) \
106     Prototype;
107 #endif
108
109 #ifndef ACPI_EXTERNAL_RETURN_UINT32
110 #define ACPI_EXTERNAL_RETURN_UINT32(Prototype) \
111     Prototype;
112 #endif
113
114 #ifndef ACPI_EXTERNAL_RETURN_PTR
115 #define ACPI_EXTERNAL_RETURN_PTR(Prototype) \
116     Prototype;
117 #endif
118
119
120 /*****************************************************************************
121  *
122  * Public globals and runtime configuration options
123  *
124  ****************************************************************************/
125
126 /*
127  * Enable "slack mode" of the AML interpreter?  Default is FALSE, and the
128  * interpreter strictly follows the ACPI specification. Setting to TRUE
129  * allows the interpreter to ignore certain errors and/or bad AML constructs.
130  *
131  * Currently, these features are enabled by this flag:
132  *
133  * 1) Allow "implicit return" of last value in a control method
134  * 2) Allow access beyond the end of an operation region
135  * 3) Allow access to uninitialized locals/args (auto-init to integer 0)
136  * 4) Allow ANY object type to be a source operand for the Store() operator
137  * 5) Allow unresolved references (invalid target name) in package objects
138  * 6) Enable warning messages for behavior that is not ACPI spec compliant
139  */
140 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_EnableInterpreterSlack, FALSE);
141
142 /*
143  * Automatically serialize all methods that create named objects? Default
144  * is TRUE, meaning that all NonSerialized methods are scanned once at
145  * table load time to determine those that create named objects. Methods
146  * that create named objects are marked Serialized in order to prevent
147  * possible run-time problems if they are entered by more than one thread.
148  */
149 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_AutoSerializeMethods, TRUE);
150
151 /*
152  * Create the predefined _OSI method in the namespace? Default is TRUE
153  * because ACPICA is fully compatible with other ACPI implementations.
154  * Changing this will revert ACPICA (and machine ASL) to pre-OSI behavior.
155  */
156 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_CreateOsiMethod, TRUE);
157
158 /*
159  * Optionally use default values for the ACPI register widths. Set this to
160  * TRUE to use the defaults, if an FADT contains incorrect widths/lengths.
161  */
162 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_UseDefaultRegisterWidths, TRUE);
163
164 /*
165  * Whether or not to verify the table checksum before installation. Set
166  * this to TRUE to verify the table checksum before install it to the table
167  * manager. Note that enabling this option causes errors to happen in some
168  * OSPMs during early initialization stages. Default behavior is to do such
169  * verification.
170  */
171 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_VerifyTableChecksum, TRUE);
172
173 /*
174  * Optionally enable output from the AML Debug Object.
175  */
176 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_EnableAmlDebugObject, FALSE);
177
178 /*
179  * Optionally copy the entire DSDT to local memory (instead of simply
180  * mapping it.) There are some BIOSs that corrupt or replace the original
181  * DSDT, creating the need for this option. Default is FALSE, do not copy
182  * the DSDT.
183  */
184 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_CopyDsdtLocally, FALSE);
185
186 /*
187  * Optionally ignore an XSDT if present and use the RSDT instead.
188  * Although the ACPI specification requires that an XSDT be used instead
189  * of the RSDT, the XSDT has been found to be corrupt or ill-formed on
190  * some machines. Default behavior is to use the XSDT if present.
191  */
192 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DoNotUseXsdt, FALSE);
193
194 /*
195  * Optionally use 32-bit FADT addresses if and when there is a conflict
196  * (address mismatch) between the 32-bit and 64-bit versions of the
197  * address. Although ACPICA adheres to the ACPI specification which
198  * requires the use of the corresponding 64-bit address if it is non-zero,
199  * some machines have been found to have a corrupted non-zero 64-bit
200  * address. Default is FALSE, do not favor the 32-bit addresses.
201  */
202 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_Use32BitFadtAddresses, FALSE);
203
204 /*
205  * Optionally 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  */
210 ACPI_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  */
216 ACPI_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  */
222 ACPI_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  */
228 ACPI_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  */
235 ACPI_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  */
241 ACPI_INIT_GLOBAL (UINT32,           AcpiGbl_TraceFlags, 0);
242 ACPI_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
250 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLevel, ACPI_DEBUG_DEFAULT);
251 #else
252 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLevel, ACPI_NORMAL_DEFAULT);
253 #endif
254 ACPI_INIT_GLOBAL (UINT32,           AcpiDbgLayer, ACPI_COMPONENT_DEFAULT);
255
256 /*
257  * Other miscellaneous globals
258  */
259 ACPI_GLOBAL (ACPI_TABLE_FADT,       AcpiGbl_FADT);
260 ACPI_GLOBAL (UINT32,                AcpiCurrentGpeCount);
261 ACPI_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  */
373 ACPI_EXTERNAL_RETURN_STATUS (
374 ACPI_STATUS
375 AcpiInitializeTables (
376     ACPI_TABLE_DESC         *InitialStorage,
377     UINT32                  InitialTableCount,
378     BOOLEAN                 AllowResize))
379
380 ACPI_EXTERNAL_RETURN_STATUS (
381 ACPI_STATUS
382 AcpiInitializeSubsystem (
383     void))
384
385 ACPI_EXTERNAL_RETURN_STATUS (
386 ACPI_STATUS
387 AcpiEnableSubsystem (
388     UINT32                  Flags))
389
390 ACPI_EXTERNAL_RETURN_STATUS (
391 ACPI_STATUS
392 AcpiInitializeObjects (
393     UINT32                  Flags))
394
395 ACPI_EXTERNAL_RETURN_STATUS (
396 ACPI_STATUS
397 AcpiTerminate (
398     void))
399
400
401 /*
402  * Miscellaneous global interfaces
403  */
404 ACPI_HW_DEPENDENT_RETURN_STATUS (
405 ACPI_STATUS
406 AcpiEnable (
407     void))
408
409 ACPI_HW_DEPENDENT_RETURN_STATUS (
410 ACPI_STATUS
411 AcpiDisable (
412     void))
413
414 ACPI_EXTERNAL_RETURN_STATUS (
415 ACPI_STATUS
416 AcpiSubsystemStatus (
417     void))
418
419 ACPI_EXTERNAL_RETURN_STATUS (
420 ACPI_STATUS
421 AcpiGetSystemInfo (
422     ACPI_BUFFER             *RetBuffer))
423
424 ACPI_EXTERNAL_RETURN_STATUS (
425 ACPI_STATUS
426 AcpiGetStatistics (
427     ACPI_STATISTICS         *Stats))
428
429 ACPI_EXTERNAL_RETURN_PTR (
430 const char *
431 AcpiFormatException (
432     ACPI_STATUS             Exception))
433
434 ACPI_EXTERNAL_RETURN_STATUS (
435 ACPI_STATUS
436 AcpiPurgeCachedObjects (
437     void))
438
439 ACPI_EXTERNAL_RETURN_STATUS (
440 ACPI_STATUS
441 AcpiInstallInterface (
442     ACPI_STRING             InterfaceName))
443
444 ACPI_EXTERNAL_RETURN_STATUS (
445 ACPI_STATUS
446 AcpiRemoveInterface (
447     ACPI_STRING             InterfaceName))
448
449 ACPI_EXTERNAL_RETURN_STATUS (
450 ACPI_STATUS
451 AcpiUpdateInterfaces (
452     UINT8                   Action))
453
454 ACPI_EXTERNAL_RETURN_UINT32 (
455 UINT32
456 AcpiCheckAddressRange (
457     ACPI_ADR_SPACE_TYPE     SpaceId,
458     ACPI_PHYSICAL_ADDRESS   Address,
459     ACPI_SIZE               Length,
460     BOOLEAN                 Warn))
461
462 ACPI_EXTERNAL_RETURN_STATUS (
463 ACPI_STATUS
464 AcpiDecodePldBuffer (
465     UINT8                   *InBuffer,
466     ACPI_SIZE               Length,
467     ACPI_PLD_INFO           **ReturnBuffer))
468
469
470 /*
471  * ACPI table load/unload interfaces
472  */
473 ACPI_EXTERNAL_RETURN_STATUS (
474 ACPI_STATUS
475 AcpiInstallTable (
476     ACPI_PHYSICAL_ADDRESS   Address,
477     BOOLEAN                 Physical))
478
479 ACPI_EXTERNAL_RETURN_STATUS (
480 ACPI_STATUS
481 AcpiLoadTable (
482     ACPI_TABLE_HEADER       *Table))
483
484 ACPI_EXTERNAL_RETURN_STATUS (
485 ACPI_STATUS
486 AcpiUnloadParentTable (
487     ACPI_HANDLE             Object))
488
489 ACPI_EXTERNAL_RETURN_STATUS (
490 ACPI_STATUS
491 AcpiLoadTables (
492     void))
493
494
495 /*
496  * ACPI table manipulation interfaces
497  */
498 ACPI_EXTERNAL_RETURN_STATUS (
499 ACPI_STATUS
500 AcpiReallocateRootTable (
501     void))
502
503 ACPI_EXTERNAL_RETURN_STATUS (
504 ACPI_STATUS
505 AcpiFindRootPointer (
506     ACPI_PHYSICAL_ADDRESS   *RsdpAddress))
507
508 ACPI_EXTERNAL_RETURN_STATUS (
509 ACPI_STATUS
510 AcpiGetTableHeader (
511     ACPI_STRING             Signature,
512     UINT32                  Instance,
513     ACPI_TABLE_HEADER       *OutTableHeader))
514
515 ACPI_EXTERNAL_RETURN_STATUS (
516 ACPI_STATUS
517 AcpiGetTable (
518     ACPI_STRING             Signature,
519     UINT32                  Instance,
520     ACPI_TABLE_HEADER       **OutTable))
521
522 ACPI_EXTERNAL_RETURN_STATUS (
523 ACPI_STATUS
524 AcpiGetTableByIndex (
525     UINT32                  TableIndex,
526     ACPI_TABLE_HEADER       **OutTable))
527
528 ACPI_EXTERNAL_RETURN_STATUS (
529 ACPI_STATUS
530 AcpiInstallTableHandler (
531     ACPI_TABLE_HANDLER      Handler,
532     void                    *Context))
533
534 ACPI_EXTERNAL_RETURN_STATUS (
535 ACPI_STATUS
536 AcpiRemoveTableHandler (
537     ACPI_TABLE_HANDLER      Handler))
538
539
540 /*
541  * Namespace and name interfaces
542  */
543 ACPI_EXTERNAL_RETURN_STATUS (
544 ACPI_STATUS
545 AcpiWalkNamespace (
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
554 ACPI_EXTERNAL_RETURN_STATUS (
555 ACPI_STATUS
556 AcpiGetDevices (
557     char                    *HID,
558     ACPI_WALK_CALLBACK      UserFunction,
559     void                    *Context,
560     void                    **ReturnValue))
561
562 ACPI_EXTERNAL_RETURN_STATUS (
563 ACPI_STATUS
564 AcpiGetName (
565     ACPI_HANDLE             Object,
566     UINT32                  NameType,
567     ACPI_BUFFER             *RetPathPtr))
568
569 ACPI_EXTERNAL_RETURN_STATUS (
570 ACPI_STATUS
571 AcpiGetHandle (
572     ACPI_HANDLE             Parent,
573     ACPI_STRING             Pathname,
574     ACPI_HANDLE             *RetHandle))
575
576 ACPI_EXTERNAL_RETURN_STATUS (
577 ACPI_STATUS
578 AcpiAttachData (
579     ACPI_HANDLE             Object,
580     ACPI_OBJECT_HANDLER     Handler,
581     void                    *Data))
582
583 ACPI_EXTERNAL_RETURN_STATUS (
584 ACPI_STATUS
585 AcpiDetachData (
586     ACPI_HANDLE             Object,
587     ACPI_OBJECT_HANDLER     Handler))
588
589 ACPI_EXTERNAL_RETURN_STATUS (
590 ACPI_STATUS
591 AcpiGetData (
592     ACPI_HANDLE             Object,
593     ACPI_OBJECT_HANDLER     Handler,
594     void                    **Data))
595
596 ACPI_EXTERNAL_RETURN_STATUS (
597 ACPI_STATUS
598 AcpiDebugTrace (
599     char                    *Name,
600     UINT32                  DebugLevel,
601     UINT32                  DebugLayer,
602     UINT32                  Flags))
603
604
605 /*
606  * Object manipulation and enumeration
607  */
608 ACPI_EXTERNAL_RETURN_STATUS (
609 ACPI_STATUS
610 AcpiEvaluateObject (
611     ACPI_HANDLE             Object,
612     ACPI_STRING             Pathname,
613     ACPI_OBJECT_LIST        *ParameterObjects,
614     ACPI_BUFFER             *ReturnObjectBuffer))
615
616 ACPI_EXTERNAL_RETURN_STATUS (
617 ACPI_STATUS
618 AcpiEvaluateObjectTyped (
619     ACPI_HANDLE             Object,
620     ACPI_STRING             Pathname,
621     ACPI_OBJECT_LIST        *ExternalParams,
622     ACPI_BUFFER             *ReturnBuffer,
623     ACPI_OBJECT_TYPE        ReturnType))
624
625 ACPI_EXTERNAL_RETURN_STATUS (
626 ACPI_STATUS
627 AcpiGetObjectInfo (
628     ACPI_HANDLE             Object,
629     ACPI_DEVICE_INFO        **ReturnBuffer))
630
631 ACPI_EXTERNAL_RETURN_STATUS (
632 ACPI_STATUS
633 AcpiInstallMethod (
634     UINT8                   *Buffer))
635
636 ACPI_EXTERNAL_RETURN_STATUS (
637 ACPI_STATUS
638 AcpiGetNextObject (
639     ACPI_OBJECT_TYPE        Type,
640     ACPI_HANDLE             Parent,
641     ACPI_HANDLE             Child,
642     ACPI_HANDLE             *OutHandle))
643
644 ACPI_EXTERNAL_RETURN_STATUS (
645 ACPI_STATUS
646 AcpiGetType (
647     ACPI_HANDLE             Object,
648     ACPI_OBJECT_TYPE        *OutType))
649
650 ACPI_EXTERNAL_RETURN_STATUS (
651 ACPI_STATUS
652 AcpiGetParent (
653     ACPI_HANDLE             Object,
654     ACPI_HANDLE             *OutHandle))
655
656
657 /*
658  * Handler interfaces
659  */
660 ACPI_EXTERNAL_RETURN_STATUS (
661 ACPI_STATUS
662 AcpiInstallInitializationHandler (
663     ACPI_INIT_HANDLER       Handler,
664     UINT32                  Function))
665
666 ACPI_HW_DEPENDENT_RETURN_STATUS (
667 ACPI_STATUS
668 AcpiInstallSciHandler (
669     ACPI_SCI_HANDLER        Address,
670     void                    *Context))
671
672 ACPI_HW_DEPENDENT_RETURN_STATUS (
673 ACPI_STATUS
674 AcpiRemoveSciHandler (
675     ACPI_SCI_HANDLER        Address))
676
677 ACPI_HW_DEPENDENT_RETURN_STATUS (
678 ACPI_STATUS
679 AcpiInstallGlobalEventHandler (
680     ACPI_GBL_EVENT_HANDLER  Handler,
681     void                    *Context))
682
683 ACPI_HW_DEPENDENT_RETURN_STATUS (
684 ACPI_STATUS
685 AcpiInstallFixedEventHandler (
686     UINT32                  AcpiEvent,
687     ACPI_EVENT_HANDLER      Handler,
688     void                    *Context))
689
690 ACPI_HW_DEPENDENT_RETURN_STATUS (
691 ACPI_STATUS
692 AcpiRemoveFixedEventHandler (
693     UINT32                  AcpiEvent,
694     ACPI_EVENT_HANDLER      Handler))
695
696 ACPI_HW_DEPENDENT_RETURN_STATUS (
697 ACPI_STATUS
698 AcpiInstallGpeHandler (
699     ACPI_HANDLE             GpeDevice,
700     UINT32                  GpeNumber,
701     UINT32                  Type,
702     ACPI_GPE_HANDLER        Address,
703     void                    *Context))
704
705 ACPI_HW_DEPENDENT_RETURN_STATUS (
706 ACPI_STATUS
707 AcpiInstallGpeRawHandler (
708     ACPI_HANDLE             GpeDevice,
709     UINT32                  GpeNumber,
710     UINT32                  Type,
711     ACPI_GPE_HANDLER        Address,
712     void                    *Context))
713
714 ACPI_HW_DEPENDENT_RETURN_STATUS (
715 ACPI_STATUS
716 AcpiRemoveGpeHandler (
717     ACPI_HANDLE             GpeDevice,
718     UINT32                  GpeNumber,
719     ACPI_GPE_HANDLER        Address))
720
721 ACPI_EXTERNAL_RETURN_STATUS (
722 ACPI_STATUS
723 AcpiInstallNotifyHandler (
724     ACPI_HANDLE             Device,
725     UINT32                  HandlerType,
726     ACPI_NOTIFY_HANDLER     Handler,
727     void                    *Context))
728
729 ACPI_EXTERNAL_RETURN_STATUS (
730 ACPI_STATUS
731 AcpiRemoveNotifyHandler (
732     ACPI_HANDLE             Device,
733     UINT32                  HandlerType,
734     ACPI_NOTIFY_HANDLER     Handler))
735
736 ACPI_EXTERNAL_RETURN_STATUS (
737 ACPI_STATUS
738 AcpiInstallAddressSpaceHandler (
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
745 ACPI_EXTERNAL_RETURN_STATUS (
746 ACPI_STATUS
747 AcpiRemoveAddressSpaceHandler (
748     ACPI_HANDLE             Device,
749     ACPI_ADR_SPACE_TYPE     SpaceId,
750     ACPI_ADR_SPACE_HANDLER  Handler))
751
752 ACPI_EXTERNAL_RETURN_STATUS (
753 ACPI_STATUS
754 AcpiInstallExceptionHandler (
755     ACPI_EXCEPTION_HANDLER  Handler))
756
757 ACPI_EXTERNAL_RETURN_STATUS (
758 ACPI_STATUS
759 AcpiInstallInterfaceHandler (
760     ACPI_INTERFACE_HANDLER  Handler))
761
762
763 /*
764  * Global Lock interfaces
765  */
766 ACPI_HW_DEPENDENT_RETURN_STATUS (
767 ACPI_STATUS
768 AcpiAcquireGlobalLock (
769     UINT16                  Timeout,
770     UINT32                  *Handle))
771
772 ACPI_HW_DEPENDENT_RETURN_STATUS (
773 ACPI_STATUS
774 AcpiReleaseGlobalLock (
775     UINT32                  Handle))
776
777
778 /*
779  * Interfaces to AML mutex objects
780  */
781 ACPI_EXTERNAL_RETURN_STATUS (
782 ACPI_STATUS
783 AcpiAcquireMutex (
784     ACPI_HANDLE             Handle,
785     ACPI_STRING             Pathname,
786     UINT16                  Timeout))
787
788 ACPI_EXTERNAL_RETURN_STATUS (
789 ACPI_STATUS
790 AcpiReleaseMutex (
791     ACPI_HANDLE             Handle,
792     ACPI_STRING             Pathname))
793
794
795 /*
796  * Fixed Event interfaces
797  */
798 ACPI_HW_DEPENDENT_RETURN_STATUS (
799 ACPI_STATUS
800 AcpiEnableEvent (
801     UINT32                  Event,
802     UINT32                  Flags))
803
804 ACPI_HW_DEPENDENT_RETURN_STATUS (
805 ACPI_STATUS
806 AcpiDisableEvent (
807     UINT32                  Event,
808     UINT32                  Flags))
809
810 ACPI_HW_DEPENDENT_RETURN_STATUS (
811 ACPI_STATUS
812 AcpiClearEvent (
813     UINT32                  Event))
814
815 ACPI_HW_DEPENDENT_RETURN_STATUS (
816 ACPI_STATUS
817 AcpiGetEventStatus (
818     UINT32                  Event,
819     ACPI_EVENT_STATUS       *EventStatus))
820
821
822 /*
823  * General Purpose Event (GPE) Interfaces
824  */
825 ACPI_HW_DEPENDENT_RETURN_STATUS (
826 ACPI_STATUS
827 AcpiUpdateAllGpes (
828     void))
829
830 ACPI_HW_DEPENDENT_RETURN_STATUS (
831 ACPI_STATUS
832 AcpiEnableGpe (
833     ACPI_HANDLE             GpeDevice,
834     UINT32                  GpeNumber))
835
836 ACPI_HW_DEPENDENT_RETURN_STATUS (
837 ACPI_STATUS
838 AcpiDisableGpe (
839     ACPI_HANDLE             GpeDevice,
840     UINT32                  GpeNumber))
841
842 ACPI_HW_DEPENDENT_RETURN_STATUS (
843 ACPI_STATUS
844 AcpiClearGpe (
845     ACPI_HANDLE             GpeDevice,
846     UINT32                  GpeNumber))
847
848 ACPI_HW_DEPENDENT_RETURN_STATUS (
849 ACPI_STATUS
850 AcpiSetGpe (
851     ACPI_HANDLE             GpeDevice,
852     UINT32                  GpeNumber,
853     UINT8                   Action))
854
855 ACPI_HW_DEPENDENT_RETURN_STATUS (
856 ACPI_STATUS
857 AcpiFinishGpe (
858     ACPI_HANDLE             GpeDevice,
859     UINT32                  GpeNumber))
860
861 ACPI_HW_DEPENDENT_RETURN_STATUS (
862 ACPI_STATUS
863 AcpiMarkGpeForWake (
864     ACPI_HANDLE             GpeDevice,
865     UINT32                  GpeNumber))
866
867 ACPI_HW_DEPENDENT_RETURN_STATUS (
868 ACPI_STATUS
869 AcpiSetupGpeForWake (
870     ACPI_HANDLE             ParentDevice,
871     ACPI_HANDLE             GpeDevice,
872     UINT32                  GpeNumber))
873
874 ACPI_HW_DEPENDENT_RETURN_STATUS (
875 ACPI_STATUS
876 AcpiSetGpeWakeMask (
877     ACPI_HANDLE             GpeDevice,
878     UINT32                  GpeNumber,
879     UINT8                   Action))
880
881 ACPI_HW_DEPENDENT_RETURN_STATUS (
882 ACPI_STATUS
883 AcpiGetGpeStatus (
884     ACPI_HANDLE             GpeDevice,
885     UINT32                  GpeNumber,
886     ACPI_EVENT_STATUS       *EventStatus))
887
888 ACPI_HW_DEPENDENT_RETURN_STATUS (
889 ACPI_STATUS
890 AcpiDisableAllGpes (
891     void))
892
893 ACPI_HW_DEPENDENT_RETURN_STATUS (
894 ACPI_STATUS
895 AcpiEnableAllRuntimeGpes (
896     void))
897
898 ACPI_HW_DEPENDENT_RETURN_STATUS (
899 ACPI_STATUS
900 AcpiEnableAllWakeupGpes (
901     void))
902
903 ACPI_HW_DEPENDENT_RETURN_STATUS (
904 ACPI_STATUS
905 AcpiGetGpeDevice (
906     UINT32                  GpeIndex,
907     ACPI_HANDLE             *GpeDevice))
908
909 ACPI_HW_DEPENDENT_RETURN_STATUS (
910 ACPI_STATUS
911 AcpiInstallGpeBlock (
912     ACPI_HANDLE             GpeDevice,
913     ACPI_GENERIC_ADDRESS    *GpeBlockAddress,
914     UINT32                  RegisterCount,
915     UINT32                  InterruptNumber))
916
917 ACPI_HW_DEPENDENT_RETURN_STATUS (
918 ACPI_STATUS
919 AcpiRemoveGpeBlock (
920     ACPI_HANDLE             GpeDevice))
921
922
923 /*
924  * Resource interfaces
925  */
926 typedef
927 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
928     ACPI_RESOURCE           *Resource,
929     void                    *Context);
930
931 ACPI_EXTERNAL_RETURN_STATUS (
932 ACPI_STATUS
933 AcpiGetVendorResource (
934     ACPI_HANDLE             Device,
935     char                    *Name,
936     ACPI_VENDOR_UUID        *Uuid,
937     ACPI_BUFFER             *RetBuffer))
938
939 ACPI_EXTERNAL_RETURN_STATUS (
940 ACPI_STATUS
941 AcpiGetCurrentResources (
942     ACPI_HANDLE             Device,
943     ACPI_BUFFER             *RetBuffer))
944
945 ACPI_EXTERNAL_RETURN_STATUS (
946 ACPI_STATUS
947 AcpiGetPossibleResources (
948     ACPI_HANDLE             Device,
949     ACPI_BUFFER             *RetBuffer))
950
951 ACPI_EXTERNAL_RETURN_STATUS (
952 ACPI_STATUS
953 AcpiGetEventResources (
954     ACPI_HANDLE             DeviceHandle,
955     ACPI_BUFFER             *RetBuffer))
956
957 ACPI_EXTERNAL_RETURN_STATUS (
958 ACPI_STATUS
959 AcpiWalkResourceBuffer (
960     ACPI_BUFFER                 *Buffer,
961     ACPI_WALK_RESOURCE_CALLBACK UserFunction,
962     void                        *Context))
963
964 ACPI_EXTERNAL_RETURN_STATUS (
965 ACPI_STATUS
966 AcpiWalkResources (
967     ACPI_HANDLE                 Device,
968     char                        *Name,
969     ACPI_WALK_RESOURCE_CALLBACK UserFunction,
970     void                        *Context))
971
972 ACPI_EXTERNAL_RETURN_STATUS (
973 ACPI_STATUS
974 AcpiSetCurrentResources (
975     ACPI_HANDLE             Device,
976     ACPI_BUFFER             *InBuffer))
977
978 ACPI_EXTERNAL_RETURN_STATUS (
979 ACPI_STATUS
980 AcpiGetIrqRoutingTable (
981     ACPI_HANDLE             Device,
982     ACPI_BUFFER             *RetBuffer))
983
984 ACPI_EXTERNAL_RETURN_STATUS (
985 ACPI_STATUS
986 AcpiResourceToAddress64 (
987     ACPI_RESOURCE           *Resource,
988     ACPI_RESOURCE_ADDRESS64 *Out))
989
990 ACPI_EXTERNAL_RETURN_STATUS (
991 ACPI_STATUS
992 AcpiBufferToResource (
993     UINT8                   *AmlBuffer,
994     UINT16                  AmlBufferLength,
995     ACPI_RESOURCE           **ResourcePtr))
996
997
998 /*
999  * Hardware (ACPI device) interfaces
1000  */
1001 ACPI_EXTERNAL_RETURN_STATUS (
1002 ACPI_STATUS
1003 AcpiReset (
1004     void))
1005
1006 ACPI_EXTERNAL_RETURN_STATUS (
1007 ACPI_STATUS
1008 AcpiRead (
1009     UINT64                  *Value,
1010     ACPI_GENERIC_ADDRESS    *Reg))
1011
1012 ACPI_EXTERNAL_RETURN_STATUS (
1013 ACPI_STATUS
1014 AcpiWrite (
1015     UINT64                  Value,
1016     ACPI_GENERIC_ADDRESS    *Reg))
1017
1018 ACPI_HW_DEPENDENT_RETURN_STATUS (
1019 ACPI_STATUS
1020 AcpiReadBitRegister (
1021     UINT32                  RegisterId,
1022     UINT32                  *ReturnValue))
1023
1024 ACPI_HW_DEPENDENT_RETURN_STATUS (
1025 ACPI_STATUS
1026 AcpiWriteBitRegister (
1027     UINT32                  RegisterId,
1028     UINT32                  Value))
1029
1030
1031 /*
1032  * Sleep/Wake interfaces
1033  */
1034 ACPI_EXTERNAL_RETURN_STATUS (
1035 ACPI_STATUS
1036 AcpiGetSleepTypeData (
1037     UINT8                   SleepState,
1038     UINT8                   *Slp_TypA,
1039     UINT8                   *Slp_TypB))
1040
1041 ACPI_EXTERNAL_RETURN_STATUS (
1042 ACPI_STATUS
1043 AcpiEnterSleepStatePrep (
1044     UINT8                   SleepState))
1045
1046 ACPI_EXTERNAL_RETURN_STATUS (
1047 ACPI_STATUS
1048 AcpiEnterSleepState (
1049     UINT8                   SleepState))
1050
1051 ACPI_HW_DEPENDENT_RETURN_STATUS (
1052 ACPI_STATUS
1053 AcpiEnterSleepStateS4bios (
1054     void))
1055
1056 ACPI_EXTERNAL_RETURN_STATUS (
1057 ACPI_STATUS
1058 AcpiLeaveSleepStatePrep (
1059     UINT8                   SleepState))
1060
1061 ACPI_EXTERNAL_RETURN_STATUS (
1062 ACPI_STATUS
1063 AcpiLeaveSleepState (
1064     UINT8                   SleepState))
1065
1066 ACPI_HW_DEPENDENT_RETURN_STATUS (
1067 ACPI_STATUS
1068 AcpiSetFirmwareWakingVector (
1069     UINT32                  PhysicalAddress))
1070
1071 #if ACPI_MACHINE_WIDTH == 64
1072 ACPI_HW_DEPENDENT_RETURN_STATUS (
1073 ACPI_STATUS
1074 AcpiSetFirmwareWakingVector64 (
1075     UINT64                  PhysicalAddress))
1076 #endif
1077
1078
1079 /*
1080  * ACPI Timer interfaces
1081  */
1082 ACPI_HW_DEPENDENT_RETURN_STATUS (
1083 ACPI_STATUS
1084 AcpiGetTimerResolution (
1085     UINT32                  *Resolution))
1086
1087 ACPI_HW_DEPENDENT_RETURN_STATUS (
1088 ACPI_STATUS
1089 AcpiGetTimer (
1090     UINT32                  *Ticks))
1091
1092 ACPI_HW_DEPENDENT_RETURN_STATUS (
1093 ACPI_STATUS
1094 AcpiGetTimerDuration (
1095     UINT32                  StartTicks,
1096     UINT32                  EndTicks,
1097     UINT32                  *TimeElapsed))
1098
1099
1100 /*
1101  * Error/Warning output
1102  */
1103 ACPI_MSG_DEPENDENT_RETURN_VOID (
1104 ACPI_PRINTF_LIKE(3)
1105 void ACPI_INTERNAL_VAR_XFACE
1106 AcpiError (
1107     const char              *ModuleName,
1108     UINT32                  LineNumber,
1109     const char              *Format,
1110     ...))
1111
1112 ACPI_MSG_DEPENDENT_RETURN_VOID (
1113 ACPI_PRINTF_LIKE(4)
1114 void  ACPI_INTERNAL_VAR_XFACE
1115 AcpiException (
1116     const char              *ModuleName,
1117     UINT32                  LineNumber,
1118     ACPI_STATUS             Status,
1119     const char              *Format,
1120     ...))
1121
1122 ACPI_MSG_DEPENDENT_RETURN_VOID (
1123 ACPI_PRINTF_LIKE(3)
1124 void ACPI_INTERNAL_VAR_XFACE
1125 AcpiWarning (
1126     const char              *ModuleName,
1127     UINT32                  LineNumber,
1128     const char              *Format,
1129     ...))
1130
1131 ACPI_MSG_DEPENDENT_RETURN_VOID (
1132 ACPI_PRINTF_LIKE(3)
1133 void ACPI_INTERNAL_VAR_XFACE
1134 AcpiInfo (
1135     const char              *ModuleName,
1136     UINT32                  LineNumber,
1137     const char              *Format,
1138     ...))
1139
1140 ACPI_MSG_DEPENDENT_RETURN_VOID (
1141 ACPI_PRINTF_LIKE(3)
1142 void ACPI_INTERNAL_VAR_XFACE
1143 AcpiBiosError (
1144     const char              *ModuleName,
1145     UINT32                  LineNumber,
1146     const char              *Format,
1147     ...))
1148
1149 ACPI_MSG_DEPENDENT_RETURN_VOID (
1150 ACPI_PRINTF_LIKE(3)
1151 void ACPI_INTERNAL_VAR_XFACE
1152 AcpiBiosWarning (
1153     const char              *ModuleName,
1154     UINT32                  LineNumber,
1155     const char              *Format,
1156     ...))
1157
1158
1159 /*
1160  * Debug output
1161  */
1162 ACPI_DBG_DEPENDENT_RETURN_VOID (
1163 ACPI_PRINTF_LIKE(6)
1164 void ACPI_INTERNAL_VAR_XFACE
1165 AcpiDebugPrint (
1166     UINT32                  RequestedDebugLevel,
1167     UINT32                  LineNumber,
1168     const char              *FunctionName,
1169     const char              *ModuleName,
1170     UINT32                  ComponentId,
1171     const char              *Format,
1172     ...))
1173
1174 ACPI_DBG_DEPENDENT_RETURN_VOID (
1175 ACPI_PRINTF_LIKE(6)
1176 void ACPI_INTERNAL_VAR_XFACE
1177 AcpiDebugPrintRaw (
1178     UINT32                  RequestedDebugLevel,
1179     UINT32                  LineNumber,
1180     const char              *FunctionName,
1181     const char              *ModuleName,
1182     UINT32                  ComponentId,
1183     const char              *Format,
1184     ...))
1185
1186 ACPI_APP_DEPENDENT_RETURN_VOID (
1187 ACPI_PRINTF_LIKE(1)
1188 void ACPI_INTERNAL_VAR_XFACE
1189 AcpiLogError (
1190     const char              *Format,
1191     ...))
1192
1193 #endif /* __ACXFACE_H__ */