2 /******************************************************************************
4 * Name: acpixf.h - External interfaces to the ACPI subsystem
6 *****************************************************************************/
9 * Copyright (C) 2000 - 2012, Intel Corp.
10 * All rights reserved.
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
15 * 1. Redistributions of source code must retain the above copyright
16 * notice, this list of conditions, and the following disclaimer,
17 * without modification.
18 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19 * substantially similar to the "NO WARRANTY" disclaimer below
20 * ("Disclaimer") and any redistribution must be conditioned upon
21 * including a substantially similar Disclaimer requirement for further
22 * binary redistribution.
23 * 3. Neither the names of the above-listed copyright holders nor the names
24 * of any contributors may be used to endorse or promote products derived
25 * from this software without specific prior written permission.
27 * Alternatively, this software may be distributed under the terms of the
28 * GNU General Public License ("GPL") version 2 as published by the Free
29 * Software Foundation.
32 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42 * POSSIBILITY OF SUCH DAMAGES.
49 /* Current ACPICA subsystem version in YYYYMMDD format */
51 #define ACPI_CA_VERSION 0x20120111
53 #include <contrib/dev/acpica/include/actypes.h>
54 #include <contrib/dev/acpica/include/actbl.h>
57 * Globals that are publically available
59 extern UINT32 AcpiCurrentGpeCount;
60 extern ACPI_TABLE_FADT AcpiGbl_FADT;
61 extern BOOLEAN AcpiGbl_SystemAwakeAndRunning;
62 extern BOOLEAN AcpiGbl_ReducedHardware; /* ACPI 5.0 */
64 /* Runtime configuration of debug print levels */
66 extern UINT32 AcpiDbgLevel;
67 extern UINT32 AcpiDbgLayer;
69 /* ACPICA runtime options */
71 extern UINT8 AcpiGbl_EnableInterpreterSlack;
72 extern UINT8 AcpiGbl_AllMethodsSerialized;
73 extern UINT8 AcpiGbl_CreateOsiMethod;
74 extern UINT8 AcpiGbl_UseDefaultRegisterWidths;
75 extern ACPI_NAME AcpiGbl_TraceMethodName;
76 extern UINT32 AcpiGbl_TraceFlags;
77 extern UINT8 AcpiGbl_EnableAmlDebugObject;
78 extern UINT8 AcpiGbl_CopyDsdtLocally;
79 extern UINT8 AcpiGbl_TruncateIoAddresses;
80 extern UINT8 AcpiGbl_DisableAutoRepair;
87 AcpiInitializeTables (
88 ACPI_TABLE_DESC *InitialStorage,
89 UINT32 InitialTableCount,
93 AcpiInitializeSubsystem (
101 AcpiInitializeObjects (
110 * Miscellaneous global interfaces
121 AcpiSubsystemStatus (
126 ACPI_BUFFER *RetBuffer);
130 ACPI_STATISTICS *Stats);
133 AcpiFormatException (
134 ACPI_STATUS Exception);
137 AcpiPurgeCachedObjects (
141 AcpiInstallInterface (
142 ACPI_STRING InterfaceName);
145 AcpiRemoveInterface (
146 ACPI_STRING InterfaceName);
149 AcpiCheckAddressRange (
150 ACPI_ADR_SPACE_TYPE SpaceId,
151 ACPI_PHYSICAL_ADDRESS Address,
157 * ACPI Memory management
173 * ACPI table manipulation interfaces
176 AcpiReallocateRootTable (
180 AcpiFindRootPointer (
181 ACPI_SIZE *RsdpAddress);
189 ACPI_STRING Signature,
191 ACPI_TABLE_HEADER *OutTableHeader);
195 ACPI_STRING Signature,
197 ACPI_TABLE_HEADER **OutTable);
200 AcpiGetTableByIndex (
202 ACPI_TABLE_HEADER **OutTable);
205 AcpiInstallTableHandler (
206 ACPI_TABLE_HANDLER Handler,
210 AcpiRemoveTableHandler (
211 ACPI_TABLE_HANDLER Handler);
215 * Namespace and name interfaces
219 ACPI_OBJECT_TYPE Type,
220 ACPI_HANDLE StartObject,
222 ACPI_WALK_CALLBACK PreOrderVisit,
223 ACPI_WALK_CALLBACK PostOrderVisit,
230 ACPI_WALK_CALLBACK UserFunction,
238 ACPI_BUFFER *RetPathPtr);
243 ACPI_STRING Pathname,
244 ACPI_HANDLE *RetHandle);
249 ACPI_OBJECT_HANDLER Handler,
255 ACPI_OBJECT_HANDLER Handler);
260 ACPI_OBJECT_HANDLER Handler,
272 * Object manipulation and enumeration
277 ACPI_STRING Pathname,
278 ACPI_OBJECT_LIST *ParameterObjects,
279 ACPI_BUFFER *ReturnObjectBuffer);
282 AcpiEvaluateObjectTyped (
284 ACPI_STRING Pathname,
285 ACPI_OBJECT_LIST *ExternalParams,
286 ACPI_BUFFER *ReturnBuffer,
287 ACPI_OBJECT_TYPE ReturnType);
292 ACPI_DEVICE_INFO **ReturnBuffer);
300 ACPI_OBJECT_TYPE Type,
303 ACPI_HANDLE *OutHandle);
308 ACPI_OBJECT_TYPE *OutType);
313 ACPI_HANDLE *OutHandle);
320 AcpiInstallInitializationHandler (
321 ACPI_INIT_HANDLER Handler,
325 AcpiInstallGlobalEventHandler (
326 ACPI_GBL_EVENT_HANDLER Handler,
330 AcpiInstallFixedEventHandler (
332 ACPI_EVENT_HANDLER Handler,
336 AcpiRemoveFixedEventHandler (
338 ACPI_EVENT_HANDLER Handler);
341 AcpiInstallGpeHandler (
342 ACPI_HANDLE GpeDevice,
345 ACPI_GPE_HANDLER Address,
349 AcpiRemoveGpeHandler (
350 ACPI_HANDLE GpeDevice,
352 ACPI_GPE_HANDLER Address);
355 AcpiInstallNotifyHandler (
358 ACPI_NOTIFY_HANDLER Handler,
362 AcpiRemoveNotifyHandler (
365 ACPI_NOTIFY_HANDLER Handler);
368 AcpiInstallAddressSpaceHandler (
370 ACPI_ADR_SPACE_TYPE SpaceId,
371 ACPI_ADR_SPACE_HANDLER Handler,
372 ACPI_ADR_SPACE_SETUP Setup,
376 AcpiRemoveAddressSpaceHandler (
378 ACPI_ADR_SPACE_TYPE SpaceId,
379 ACPI_ADR_SPACE_HANDLER Handler);
382 AcpiInstallExceptionHandler (
383 ACPI_EXCEPTION_HANDLER Handler);
386 AcpiInstallInterfaceHandler (
387 ACPI_INTERFACE_HANDLER Handler);
391 * Global Lock interfaces
394 AcpiAcquireGlobalLock (
399 AcpiReleaseGlobalLock (
404 * Interfaces to AML mutex objects
409 ACPI_STRING Pathname,
415 ACPI_STRING Pathname);
419 * Fixed Event interfaces
438 ACPI_EVENT_STATUS *EventStatus);
442 * General Purpose Event (GPE) Interfaces
450 ACPI_HANDLE GpeDevice,
455 ACPI_HANDLE GpeDevice,
460 ACPI_HANDLE GpeDevice,
465 ACPI_HANDLE GpeDevice,
471 ACPI_HANDLE GpeDevice,
475 AcpiSetupGpeForWake (
476 ACPI_HANDLE ParentDevice,
477 ACPI_HANDLE GpeDevice,
482 ACPI_HANDLE GpeDevice,
488 ACPI_HANDLE GpeDevice,
490 ACPI_EVENT_STATUS *EventStatus);
497 AcpiEnableAllRuntimeGpes (
503 ACPI_HANDLE *GpeDevice);
506 AcpiInstallGpeBlock (
507 ACPI_HANDLE GpeDevice,
508 ACPI_GENERIC_ADDRESS *GpeBlockAddress,
509 UINT32 RegisterCount,
510 UINT32 InterruptNumber);
514 ACPI_HANDLE GpeDevice);
518 * Resource interfaces
521 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
522 ACPI_RESOURCE *Resource,
526 AcpiGetVendorResource (
529 ACPI_VENDOR_UUID *Uuid,
530 ACPI_BUFFER *RetBuffer);
533 AcpiGetCurrentResources (
535 ACPI_BUFFER *RetBuffer);
538 AcpiGetPossibleResources (
540 ACPI_BUFFER *RetBuffer);
543 AcpiGetEventResources (
544 ACPI_HANDLE DeviceHandle,
545 ACPI_BUFFER *RetBuffer);
551 ACPI_WALK_RESOURCE_CALLBACK UserFunction,
555 AcpiSetCurrentResources (
557 ACPI_BUFFER *InBuffer);
560 AcpiGetIrqRoutingTable (
562 ACPI_BUFFER *RetBuffer);
565 AcpiResourceToAddress64 (
566 ACPI_RESOURCE *Resource,
567 ACPI_RESOURCE_ADDRESS64 *Out);
570 AcpiBufferToResource (
572 UINT16 AmlBufferLength,
573 ACPI_RESOURCE **ResourcePtr);
577 * Hardware (ACPI device) interfaces
586 ACPI_GENERIC_ADDRESS *Reg);
591 ACPI_GENERIC_ADDRESS *Reg);
594 AcpiReadBitRegister (
596 UINT32 *ReturnValue);
599 AcpiWriteBitRegister (
604 AcpiGetSleepTypeData (
610 AcpiEnterSleepStatePrep (
614 AcpiEnterSleepState (
618 AcpiEnterSleepStateS4bios (
622 AcpiLeaveSleepState (
626 AcpiSetFirmwareWakingVector (
627 UINT32 PhysicalAddress);
629 #if ACPI_MACHINE_WIDTH == 64
631 AcpiSetFirmwareWakingVector64 (
632 UINT64 PhysicalAddress);
637 * Error/Warning output
639 void ACPI_INTERNAL_VAR_XFACE
641 const char *ModuleName,
644 ...) ACPI_PRINTF_LIKE(3);
646 void ACPI_INTERNAL_VAR_XFACE
648 const char *ModuleName,
652 ...) ACPI_PRINTF_LIKE(4);
654 void ACPI_INTERNAL_VAR_XFACE
656 const char *ModuleName,
659 ...) ACPI_PRINTF_LIKE(3);
661 void ACPI_INTERNAL_VAR_XFACE
663 const char *ModuleName,
666 ...) ACPI_PRINTF_LIKE(3);
672 #ifdef ACPI_DEBUG_OUTPUT
674 void ACPI_INTERNAL_VAR_XFACE
676 UINT32 RequestedDebugLevel,
678 const char *FunctionName,
679 const char *ModuleName,
682 ...) ACPI_PRINTF_LIKE(6);
684 void ACPI_INTERNAL_VAR_XFACE
686 UINT32 RequestedDebugLevel,
688 const char *FunctionName,
689 const char *ModuleName,
692 ...) ACPI_PRINTF_LIKE(6);
695 #endif /* __ACXFACE_H__ */