1 /******************************************************************************
3 * Name: acpixf.h - External interfaces to the ACPI subsystem
5 *****************************************************************************/
8 * Copyright (C) 2000 - 2012, 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 0x20121220
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;
85 * Hardware-reduced prototypes. All interfaces that use these macros will
86 * be configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag
89 #if (!ACPI_REDUCED_HARDWARE)
90 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
93 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
96 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
100 #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \
101 static ACPI_INLINE Prototype {return(AE_NOT_CONFIGURED);}
103 #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \
104 static ACPI_INLINE Prototype {return(AE_OK);}
106 #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \
107 static ACPI_INLINE Prototype {}
109 #endif /* !ACPI_REDUCED_HARDWARE */
116 AcpiInitializeTables (
117 ACPI_TABLE_DESC *InitialStorage,
118 UINT32 InitialTableCount,
119 BOOLEAN AllowResize);
122 AcpiInitializeSubsystem (
126 AcpiEnableSubsystem (
130 AcpiInitializeObjects (
139 * Miscellaneous global interfaces
141 ACPI_HW_DEPENDENT_RETURN_STATUS (
146 ACPI_HW_DEPENDENT_RETURN_STATUS (
152 AcpiSubsystemStatus (
157 ACPI_BUFFER *RetBuffer);
161 ACPI_STATISTICS *Stats);
164 AcpiFormatException (
165 ACPI_STATUS Exception);
168 AcpiPurgeCachedObjects (
172 AcpiInstallInterface (
173 ACPI_STRING InterfaceName);
176 AcpiRemoveInterface (
177 ACPI_STRING InterfaceName);
180 AcpiCheckAddressRange (
181 ACPI_ADR_SPACE_TYPE SpaceId,
182 ACPI_PHYSICAL_ADDRESS Address,
187 AcpiDecodePldBuffer (
190 ACPI_PLD_INFO **ReturnBuffer);
193 * ACPI Memory management
209 * ACPI table load/unload interfaces
213 ACPI_TABLE_HEADER *Table);
216 AcpiUnloadParentTable (
225 * ACPI table manipulation interfaces
228 AcpiReallocateRootTable (
232 AcpiFindRootPointer (
233 ACPI_SIZE *RsdpAddress);
237 ACPI_STRING Signature,
239 ACPI_TABLE_HEADER *OutTableHeader);
243 ACPI_STRING Signature,
245 ACPI_TABLE_HEADER **OutTable);
248 AcpiGetTableByIndex (
250 ACPI_TABLE_HEADER **OutTable);
253 AcpiInstallTableHandler (
254 ACPI_TABLE_HANDLER Handler,
258 AcpiRemoveTableHandler (
259 ACPI_TABLE_HANDLER Handler);
263 * Namespace and name interfaces
267 ACPI_OBJECT_TYPE Type,
268 ACPI_HANDLE StartObject,
270 ACPI_WALK_CALLBACK PreOrderVisit,
271 ACPI_WALK_CALLBACK PostOrderVisit,
278 ACPI_WALK_CALLBACK UserFunction,
286 ACPI_BUFFER *RetPathPtr);
291 ACPI_STRING Pathname,
292 ACPI_HANDLE *RetHandle);
297 ACPI_OBJECT_HANDLER Handler,
303 ACPI_OBJECT_HANDLER Handler);
308 ACPI_OBJECT_HANDLER Handler,
320 * Object manipulation and enumeration
325 ACPI_STRING Pathname,
326 ACPI_OBJECT_LIST *ParameterObjects,
327 ACPI_BUFFER *ReturnObjectBuffer);
330 AcpiEvaluateObjectTyped (
332 ACPI_STRING Pathname,
333 ACPI_OBJECT_LIST *ExternalParams,
334 ACPI_BUFFER *ReturnBuffer,
335 ACPI_OBJECT_TYPE ReturnType);
340 ACPI_DEVICE_INFO **ReturnBuffer);
348 ACPI_OBJECT_TYPE Type,
351 ACPI_HANDLE *OutHandle);
356 ACPI_OBJECT_TYPE *OutType);
361 ACPI_HANDLE *OutHandle);
368 AcpiInstallInitializationHandler (
369 ACPI_INIT_HANDLER Handler,
372 ACPI_HW_DEPENDENT_RETURN_STATUS (
374 AcpiInstallGlobalEventHandler (
375 ACPI_GBL_EVENT_HANDLER Handler,
378 ACPI_HW_DEPENDENT_RETURN_STATUS (
380 AcpiInstallFixedEventHandler (
382 ACPI_EVENT_HANDLER Handler,
385 ACPI_HW_DEPENDENT_RETURN_STATUS (
387 AcpiRemoveFixedEventHandler (
389 ACPI_EVENT_HANDLER Handler))
391 ACPI_HW_DEPENDENT_RETURN_STATUS (
393 AcpiInstallGpeHandler (
394 ACPI_HANDLE GpeDevice,
397 ACPI_GPE_HANDLER Address,
400 ACPI_HW_DEPENDENT_RETURN_STATUS (
402 AcpiRemoveGpeHandler (
403 ACPI_HANDLE GpeDevice,
405 ACPI_GPE_HANDLER Address))
408 AcpiInstallNotifyHandler (
411 ACPI_NOTIFY_HANDLER Handler,
415 AcpiRemoveNotifyHandler (
418 ACPI_NOTIFY_HANDLER Handler);
421 AcpiInstallAddressSpaceHandler (
423 ACPI_ADR_SPACE_TYPE SpaceId,
424 ACPI_ADR_SPACE_HANDLER Handler,
425 ACPI_ADR_SPACE_SETUP Setup,
429 AcpiRemoveAddressSpaceHandler (
431 ACPI_ADR_SPACE_TYPE SpaceId,
432 ACPI_ADR_SPACE_HANDLER Handler);
435 AcpiInstallExceptionHandler (
436 ACPI_EXCEPTION_HANDLER Handler);
439 AcpiInstallInterfaceHandler (
440 ACPI_INTERFACE_HANDLER Handler);
444 * Global Lock interfaces
446 ACPI_HW_DEPENDENT_RETURN_STATUS (
448 AcpiAcquireGlobalLock (
452 ACPI_HW_DEPENDENT_RETURN_STATUS (
454 AcpiReleaseGlobalLock (
459 * Interfaces to AML mutex objects
464 ACPI_STRING Pathname,
470 ACPI_STRING Pathname);
474 * Fixed Event interfaces
476 ACPI_HW_DEPENDENT_RETURN_STATUS (
482 ACPI_HW_DEPENDENT_RETURN_STATUS (
488 ACPI_HW_DEPENDENT_RETURN_STATUS (
493 ACPI_HW_DEPENDENT_RETURN_STATUS (
497 ACPI_EVENT_STATUS *EventStatus))
501 * General Purpose Event (GPE) Interfaces
503 ACPI_HW_DEPENDENT_RETURN_STATUS (
508 ACPI_HW_DEPENDENT_RETURN_STATUS (
511 ACPI_HANDLE GpeDevice,
514 ACPI_HW_DEPENDENT_RETURN_STATUS (
517 ACPI_HANDLE GpeDevice,
520 ACPI_HW_DEPENDENT_RETURN_STATUS (
523 ACPI_HANDLE GpeDevice,
526 ACPI_HW_DEPENDENT_RETURN_STATUS (
529 ACPI_HANDLE GpeDevice,
533 ACPI_HW_DEPENDENT_RETURN_STATUS (
536 ACPI_HANDLE GpeDevice,
539 ACPI_HW_DEPENDENT_RETURN_STATUS (
541 AcpiSetupGpeForWake (
542 ACPI_HANDLE ParentDevice,
543 ACPI_HANDLE GpeDevice,
546 ACPI_HW_DEPENDENT_RETURN_STATUS (
549 ACPI_HANDLE GpeDevice,
553 ACPI_HW_DEPENDENT_RETURN_STATUS (
556 ACPI_HANDLE GpeDevice,
558 ACPI_EVENT_STATUS *EventStatus))
560 ACPI_HW_DEPENDENT_RETURN_STATUS (
565 ACPI_HW_DEPENDENT_RETURN_STATUS (
567 AcpiEnableAllRuntimeGpes (
570 ACPI_HW_DEPENDENT_RETURN_STATUS (
574 ACPI_HANDLE *GpeDevice))
576 ACPI_HW_DEPENDENT_RETURN_STATUS (
578 AcpiInstallGpeBlock (
579 ACPI_HANDLE GpeDevice,
580 ACPI_GENERIC_ADDRESS *GpeBlockAddress,
581 UINT32 RegisterCount,
582 UINT32 InterruptNumber))
584 ACPI_HW_DEPENDENT_RETURN_STATUS (
587 ACPI_HANDLE GpeDevice))
591 * Resource interfaces
594 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
595 ACPI_RESOURCE *Resource,
599 AcpiGetVendorResource (
602 ACPI_VENDOR_UUID *Uuid,
603 ACPI_BUFFER *RetBuffer);
606 AcpiGetCurrentResources (
608 ACPI_BUFFER *RetBuffer);
611 AcpiGetPossibleResources (
613 ACPI_BUFFER *RetBuffer);
616 AcpiGetEventResources (
617 ACPI_HANDLE DeviceHandle,
618 ACPI_BUFFER *RetBuffer);
621 AcpiWalkResourceBuffer (
623 ACPI_WALK_RESOURCE_CALLBACK UserFunction,
630 ACPI_WALK_RESOURCE_CALLBACK UserFunction,
634 AcpiSetCurrentResources (
636 ACPI_BUFFER *InBuffer);
639 AcpiGetIrqRoutingTable (
641 ACPI_BUFFER *RetBuffer);
644 AcpiResourceToAddress64 (
645 ACPI_RESOURCE *Resource,
646 ACPI_RESOURCE_ADDRESS64 *Out);
649 AcpiBufferToResource (
651 UINT16 AmlBufferLength,
652 ACPI_RESOURCE **ResourcePtr);
656 * Hardware (ACPI device) interfaces
665 ACPI_GENERIC_ADDRESS *Reg);
670 ACPI_GENERIC_ADDRESS *Reg);
672 ACPI_HW_DEPENDENT_RETURN_STATUS (
674 AcpiReadBitRegister (
676 UINT32 *ReturnValue))
678 ACPI_HW_DEPENDENT_RETURN_STATUS (
680 AcpiWriteBitRegister (
686 * Sleep/Wake interfaces
689 AcpiGetSleepTypeData (
695 AcpiEnterSleepStatePrep (
699 AcpiEnterSleepState (
702 ACPI_HW_DEPENDENT_RETURN_STATUS (
704 AcpiEnterSleepStateS4bios (
708 AcpiLeaveSleepStatePrep (
712 AcpiLeaveSleepState (
715 ACPI_HW_DEPENDENT_RETURN_STATUS (
717 AcpiSetFirmwareWakingVector (
718 UINT32 PhysicalAddress))
720 #if ACPI_MACHINE_WIDTH == 64
721 ACPI_HW_DEPENDENT_RETURN_STATUS (
723 AcpiSetFirmwareWakingVector64 (
724 UINT64 PhysicalAddress))
729 * ACPI Timer interfaces
731 ACPI_HW_DEPENDENT_RETURN_STATUS (
733 AcpiGetTimerResolution (
736 ACPI_HW_DEPENDENT_RETURN_STATUS (
741 ACPI_HW_DEPENDENT_RETURN_STATUS (
743 AcpiGetTimerDuration (
746 UINT32 *TimeElapsed))
750 * Error/Warning output
752 void ACPI_INTERNAL_VAR_XFACE
754 const char *ModuleName,
757 ...) ACPI_PRINTF_LIKE(3);
759 void ACPI_INTERNAL_VAR_XFACE
761 const char *ModuleName,
765 ...) ACPI_PRINTF_LIKE(4);
767 void ACPI_INTERNAL_VAR_XFACE
769 const char *ModuleName,
772 ...) ACPI_PRINTF_LIKE(3);
774 void ACPI_INTERNAL_VAR_XFACE
776 const char *ModuleName,
779 ...) ACPI_PRINTF_LIKE(3);
781 void ACPI_INTERNAL_VAR_XFACE
783 const char *ModuleName,
786 ...) ACPI_PRINTF_LIKE(3);
788 void ACPI_INTERNAL_VAR_XFACE
790 const char *ModuleName,
793 ...) ACPI_PRINTF_LIKE(3);
799 #ifdef ACPI_DEBUG_OUTPUT
801 void ACPI_INTERNAL_VAR_XFACE
803 UINT32 RequestedDebugLevel,
805 const char *FunctionName,
806 const char *ModuleName,
809 ...) ACPI_PRINTF_LIKE(6);
811 void ACPI_INTERNAL_VAR_XFACE
813 UINT32 RequestedDebugLevel,
815 const char *FunctionName,
816 const char *ModuleName,
819 ...) ACPI_PRINTF_LIKE(6);
822 #endif /* __ACXFACE_H__ */