1 /******************************************************************************
3 * Name: acpixf.h - External interfaces to the ACPI subsystem
5 *****************************************************************************/
8 * Copyright (C) 2000 - 2013, Intel Corp.
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
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.
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.
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.
48 /* Current ACPICA subsystem version in YYYYMMDD format */
50 #define ACPI_CA_VERSION 0x20130517
52 #include <contrib/dev/acpica/include/acconfig.h>
53 #include <contrib/dev/acpica/include/actypes.h>
54 #include <contrib/dev/acpica/include/actbl.h>
55 #include <contrib/dev/acpica/include/acbuffer.h>
58 * Globals that are publically available
60 extern UINT32 AcpiCurrentGpeCount;
61 extern ACPI_TABLE_FADT AcpiGbl_FADT;
62 extern BOOLEAN AcpiGbl_SystemAwakeAndRunning;
63 extern BOOLEAN AcpiGbl_ReducedHardware; /* ACPI 5.0 */
65 /* Runtime configuration of debug print levels */
67 extern UINT32 AcpiDbgLevel;
68 extern UINT32 AcpiDbgLayer;
70 /* ACPICA runtime options */
72 extern UINT8 AcpiGbl_EnableInterpreterSlack;
73 extern UINT8 AcpiGbl_AllMethodsSerialized;
74 extern UINT8 AcpiGbl_CreateOsiMethod;
75 extern UINT8 AcpiGbl_UseDefaultRegisterWidths;
76 extern ACPI_NAME AcpiGbl_TraceMethodName;
77 extern UINT32 AcpiGbl_TraceFlags;
78 extern UINT8 AcpiGbl_EnableAmlDebugObject;
79 extern UINT8 AcpiGbl_CopyDsdtLocally;
80 extern UINT8 AcpiGbl_TruncateIoAddresses;
81 extern UINT8 AcpiGbl_DisableAutoRepair;
82 extern UINT8 AcpiGbl_DisableSsdtTableLoad;
86 * Hardware-reduced prototypes. All interfaces that use these macros will
87 * be configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag
90 #if (!ACPI_REDUCED_HARDWARE)
91 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
94 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
97 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
101 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
102 static ACPI_INLINE Prototype {return(AE_NOT_CONFIGURED);}
104 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
105 static ACPI_INLINE Prototype {return(AE_OK);}
107 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
108 static ACPI_INLINE Prototype {}
110 #endif /* !ACPI_REDUCED_HARDWARE */
117 AcpiInitializeTables (
118 ACPI_TABLE_DESC *InitialStorage,
119 UINT32 InitialTableCount,
120 BOOLEAN AllowResize);
123 AcpiInitializeSubsystem (
127 AcpiEnableSubsystem (
131 AcpiInitializeObjects (
140 * Miscellaneous global interfaces
142 ACPI_HW_DEPENDENT_RETURN_STATUS (
147 ACPI_HW_DEPENDENT_RETURN_STATUS (
153 AcpiSubsystemStatus (
158 ACPI_BUFFER *RetBuffer);
162 ACPI_STATISTICS *Stats);
165 AcpiFormatException (
166 ACPI_STATUS Exception);
169 AcpiPurgeCachedObjects (
173 AcpiInstallInterface (
174 ACPI_STRING InterfaceName);
177 AcpiRemoveInterface (
178 ACPI_STRING InterfaceName);
181 AcpiCheckAddressRange (
182 ACPI_ADR_SPACE_TYPE SpaceId,
183 ACPI_PHYSICAL_ADDRESS Address,
188 AcpiDecodePldBuffer (
191 ACPI_PLD_INFO **ReturnBuffer);
194 * ACPI Memory management
210 * ACPI table load/unload interfaces
214 ACPI_TABLE_HEADER *Table);
217 AcpiUnloadParentTable (
226 * ACPI table manipulation interfaces
229 AcpiReallocateRootTable (
233 AcpiFindRootPointer (
234 ACPI_SIZE *RsdpAddress);
238 ACPI_STRING Signature,
240 ACPI_TABLE_HEADER *OutTableHeader);
244 ACPI_STRING Signature,
246 ACPI_TABLE_HEADER **OutTable);
249 AcpiGetTableByIndex (
251 ACPI_TABLE_HEADER **OutTable);
254 AcpiInstallTableHandler (
255 ACPI_TABLE_HANDLER Handler,
259 AcpiRemoveTableHandler (
260 ACPI_TABLE_HANDLER Handler);
264 * Namespace and name interfaces
268 ACPI_OBJECT_TYPE Type,
269 ACPI_HANDLE StartObject,
271 ACPI_WALK_CALLBACK PreOrderVisit,
272 ACPI_WALK_CALLBACK PostOrderVisit,
279 ACPI_WALK_CALLBACK UserFunction,
287 ACPI_BUFFER *RetPathPtr);
292 ACPI_STRING Pathname,
293 ACPI_HANDLE *RetHandle);
298 ACPI_OBJECT_HANDLER Handler,
304 ACPI_OBJECT_HANDLER Handler);
309 ACPI_OBJECT_HANDLER Handler,
321 * Object manipulation and enumeration
326 ACPI_STRING Pathname,
327 ACPI_OBJECT_LIST *ParameterObjects,
328 ACPI_BUFFER *ReturnObjectBuffer);
331 AcpiEvaluateObjectTyped (
333 ACPI_STRING Pathname,
334 ACPI_OBJECT_LIST *ExternalParams,
335 ACPI_BUFFER *ReturnBuffer,
336 ACPI_OBJECT_TYPE ReturnType);
341 ACPI_DEVICE_INFO **ReturnBuffer);
349 ACPI_OBJECT_TYPE Type,
352 ACPI_HANDLE *OutHandle);
357 ACPI_OBJECT_TYPE *OutType);
362 ACPI_HANDLE *OutHandle);
369 AcpiInstallInitializationHandler (
370 ACPI_INIT_HANDLER Handler,
373 ACPI_HW_DEPENDENT_RETURN_STATUS (
375 AcpiInstallGlobalEventHandler (
376 ACPI_GBL_EVENT_HANDLER Handler,
379 ACPI_HW_DEPENDENT_RETURN_STATUS (
381 AcpiInstallFixedEventHandler (
383 ACPI_EVENT_HANDLER Handler,
386 ACPI_HW_DEPENDENT_RETURN_STATUS (
388 AcpiRemoveFixedEventHandler (
390 ACPI_EVENT_HANDLER Handler))
392 ACPI_HW_DEPENDENT_RETURN_STATUS (
394 AcpiInstallGpeHandler (
395 ACPI_HANDLE GpeDevice,
398 ACPI_GPE_HANDLER Address,
401 ACPI_HW_DEPENDENT_RETURN_STATUS (
403 AcpiRemoveGpeHandler (
404 ACPI_HANDLE GpeDevice,
406 ACPI_GPE_HANDLER Address))
409 AcpiInstallNotifyHandler (
412 ACPI_NOTIFY_HANDLER Handler,
416 AcpiRemoveNotifyHandler (
419 ACPI_NOTIFY_HANDLER Handler);
422 AcpiInstallAddressSpaceHandler (
424 ACPI_ADR_SPACE_TYPE SpaceId,
425 ACPI_ADR_SPACE_HANDLER Handler,
426 ACPI_ADR_SPACE_SETUP Setup,
430 AcpiRemoveAddressSpaceHandler (
432 ACPI_ADR_SPACE_TYPE SpaceId,
433 ACPI_ADR_SPACE_HANDLER Handler);
436 AcpiInstallExceptionHandler (
437 ACPI_EXCEPTION_HANDLER Handler);
440 AcpiInstallInterfaceHandler (
441 ACPI_INTERFACE_HANDLER Handler);
445 * Global Lock interfaces
447 ACPI_HW_DEPENDENT_RETURN_STATUS (
449 AcpiAcquireGlobalLock (
453 ACPI_HW_DEPENDENT_RETURN_STATUS (
455 AcpiReleaseGlobalLock (
460 * Interfaces to AML mutex objects
465 ACPI_STRING Pathname,
471 ACPI_STRING Pathname);
475 * Fixed Event interfaces
477 ACPI_HW_DEPENDENT_RETURN_STATUS (
483 ACPI_HW_DEPENDENT_RETURN_STATUS (
489 ACPI_HW_DEPENDENT_RETURN_STATUS (
494 ACPI_HW_DEPENDENT_RETURN_STATUS (
498 ACPI_EVENT_STATUS *EventStatus))
502 * General Purpose Event (GPE) Interfaces
504 ACPI_HW_DEPENDENT_RETURN_STATUS (
509 ACPI_HW_DEPENDENT_RETURN_STATUS (
512 ACPI_HANDLE GpeDevice,
515 ACPI_HW_DEPENDENT_RETURN_STATUS (
518 ACPI_HANDLE GpeDevice,
521 ACPI_HW_DEPENDENT_RETURN_STATUS (
524 ACPI_HANDLE GpeDevice,
527 ACPI_HW_DEPENDENT_RETURN_STATUS (
530 ACPI_HANDLE GpeDevice,
534 ACPI_HW_DEPENDENT_RETURN_STATUS (
537 ACPI_HANDLE GpeDevice,
540 ACPI_HW_DEPENDENT_RETURN_STATUS (
542 AcpiSetupGpeForWake (
543 ACPI_HANDLE ParentDevice,
544 ACPI_HANDLE GpeDevice,
547 ACPI_HW_DEPENDENT_RETURN_STATUS (
550 ACPI_HANDLE GpeDevice,
554 ACPI_HW_DEPENDENT_RETURN_STATUS (
557 ACPI_HANDLE GpeDevice,
559 ACPI_EVENT_STATUS *EventStatus))
561 ACPI_HW_DEPENDENT_RETURN_STATUS (
566 ACPI_HW_DEPENDENT_RETURN_STATUS (
568 AcpiEnableAllRuntimeGpes (
571 ACPI_HW_DEPENDENT_RETURN_STATUS (
575 ACPI_HANDLE *GpeDevice))
577 ACPI_HW_DEPENDENT_RETURN_STATUS (
579 AcpiInstallGpeBlock (
580 ACPI_HANDLE GpeDevice,
581 ACPI_GENERIC_ADDRESS *GpeBlockAddress,
582 UINT32 RegisterCount,
583 UINT32 InterruptNumber))
585 ACPI_HW_DEPENDENT_RETURN_STATUS (
588 ACPI_HANDLE GpeDevice))
592 * Resource interfaces
595 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
596 ACPI_RESOURCE *Resource,
600 AcpiGetVendorResource (
603 ACPI_VENDOR_UUID *Uuid,
604 ACPI_BUFFER *RetBuffer);
607 AcpiGetCurrentResources (
609 ACPI_BUFFER *RetBuffer);
612 AcpiGetPossibleResources (
614 ACPI_BUFFER *RetBuffer);
617 AcpiGetEventResources (
618 ACPI_HANDLE DeviceHandle,
619 ACPI_BUFFER *RetBuffer);
622 AcpiWalkResourceBuffer (
624 ACPI_WALK_RESOURCE_CALLBACK UserFunction,
631 ACPI_WALK_RESOURCE_CALLBACK UserFunction,
635 AcpiSetCurrentResources (
637 ACPI_BUFFER *InBuffer);
640 AcpiGetIrqRoutingTable (
642 ACPI_BUFFER *RetBuffer);
645 AcpiResourceToAddress64 (
646 ACPI_RESOURCE *Resource,
647 ACPI_RESOURCE_ADDRESS64 *Out);
650 AcpiBufferToResource (
652 UINT16 AmlBufferLength,
653 ACPI_RESOURCE **ResourcePtr);
657 * Hardware (ACPI device) interfaces
666 ACPI_GENERIC_ADDRESS *Reg);
671 ACPI_GENERIC_ADDRESS *Reg);
673 ACPI_HW_DEPENDENT_RETURN_STATUS (
675 AcpiReadBitRegister (
677 UINT32 *ReturnValue))
679 ACPI_HW_DEPENDENT_RETURN_STATUS (
681 AcpiWriteBitRegister (
687 * Sleep/Wake interfaces
690 AcpiGetSleepTypeData (
696 AcpiEnterSleepStatePrep (
700 AcpiEnterSleepState (
703 ACPI_HW_DEPENDENT_RETURN_STATUS (
705 AcpiEnterSleepStateS4bios (
709 AcpiLeaveSleepStatePrep (
713 AcpiLeaveSleepState (
716 ACPI_HW_DEPENDENT_RETURN_STATUS (
718 AcpiSetFirmwareWakingVector (
719 UINT32 PhysicalAddress))
721 #if ACPI_MACHINE_WIDTH == 64
722 ACPI_HW_DEPENDENT_RETURN_STATUS (
724 AcpiSetFirmwareWakingVector64 (
725 UINT64 PhysicalAddress))
730 * ACPI Timer interfaces
732 ACPI_HW_DEPENDENT_RETURN_STATUS (
734 AcpiGetTimerResolution (
737 ACPI_HW_DEPENDENT_RETURN_STATUS (
742 ACPI_HW_DEPENDENT_RETURN_STATUS (
744 AcpiGetTimerDuration (
747 UINT32 *TimeElapsed))
751 * Error/Warning output
753 void ACPI_INTERNAL_VAR_XFACE
755 const char *ModuleName,
758 ...) ACPI_PRINTF_LIKE(3);
760 void ACPI_INTERNAL_VAR_XFACE
762 const char *ModuleName,
766 ...) ACPI_PRINTF_LIKE(4);
768 void ACPI_INTERNAL_VAR_XFACE
770 const char *ModuleName,
773 ...) ACPI_PRINTF_LIKE(3);
775 void ACPI_INTERNAL_VAR_XFACE
777 const char *ModuleName,
780 ...) ACPI_PRINTF_LIKE(3);
782 void ACPI_INTERNAL_VAR_XFACE
784 const char *ModuleName,
787 ...) ACPI_PRINTF_LIKE(3);
789 void ACPI_INTERNAL_VAR_XFACE
791 const char *ModuleName,
794 ...) ACPI_PRINTF_LIKE(3);
800 #ifdef ACPI_DEBUG_OUTPUT
802 void ACPI_INTERNAL_VAR_XFACE
804 UINT32 RequestedDebugLevel,
806 const char *FunctionName,
807 const char *ModuleName,
810 ...) ACPI_PRINTF_LIKE(6);
812 void ACPI_INTERNAL_VAR_XFACE
814 UINT32 RequestedDebugLevel,
816 const char *FunctionName,
817 const char *ModuleName,
820 ...) ACPI_PRINTF_LIKE(6);
823 #endif /* __ACXFACE_H__ */