2 /******************************************************************************
4 * Name: acpixf.h - External interfaces to the ACPI subsystem
6 *****************************************************************************/
9 * Copyright (C) 2000 - 2011, 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 0x20111123
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);
150 * ACPI Memory management
166 * ACPI table manipulation interfaces
169 AcpiReallocateRootTable (
173 AcpiFindRootPointer (
174 ACPI_SIZE *RsdpAddress);
182 ACPI_STRING Signature,
184 ACPI_TABLE_HEADER *OutTableHeader);
188 ACPI_STRING Signature,
190 ACPI_TABLE_HEADER **OutTable);
193 AcpiGetTableByIndex (
195 ACPI_TABLE_HEADER **OutTable);
198 AcpiInstallTableHandler (
199 ACPI_TABLE_HANDLER Handler,
203 AcpiRemoveTableHandler (
204 ACPI_TABLE_HANDLER Handler);
208 * Namespace and name interfaces
212 ACPI_OBJECT_TYPE Type,
213 ACPI_HANDLE StartObject,
215 ACPI_WALK_CALLBACK PreOrderVisit,
216 ACPI_WALK_CALLBACK PostOrderVisit,
223 ACPI_WALK_CALLBACK UserFunction,
231 ACPI_BUFFER *RetPathPtr);
236 ACPI_STRING Pathname,
237 ACPI_HANDLE *RetHandle);
242 ACPI_OBJECT_HANDLER Handler,
248 ACPI_OBJECT_HANDLER Handler);
253 ACPI_OBJECT_HANDLER Handler,
265 * Object manipulation and enumeration
270 ACPI_STRING Pathname,
271 ACPI_OBJECT_LIST *ParameterObjects,
272 ACPI_BUFFER *ReturnObjectBuffer);
275 AcpiEvaluateObjectTyped (
277 ACPI_STRING Pathname,
278 ACPI_OBJECT_LIST *ExternalParams,
279 ACPI_BUFFER *ReturnBuffer,
280 ACPI_OBJECT_TYPE ReturnType);
285 ACPI_DEVICE_INFO **ReturnBuffer);
293 ACPI_OBJECT_TYPE Type,
296 ACPI_HANDLE *OutHandle);
301 ACPI_OBJECT_TYPE *OutType);
306 ACPI_HANDLE *OutHandle);
313 AcpiInstallInitializationHandler (
314 ACPI_INIT_HANDLER Handler,
318 AcpiInstallGlobalEventHandler (
319 ACPI_GBL_EVENT_HANDLER Handler,
323 AcpiInstallFixedEventHandler (
325 ACPI_EVENT_HANDLER Handler,
329 AcpiRemoveFixedEventHandler (
331 ACPI_EVENT_HANDLER Handler);
334 AcpiInstallGpeHandler (
335 ACPI_HANDLE GpeDevice,
338 ACPI_GPE_HANDLER Address,
342 AcpiRemoveGpeHandler (
343 ACPI_HANDLE GpeDevice,
345 ACPI_GPE_HANDLER Address);
348 AcpiInstallNotifyHandler (
351 ACPI_NOTIFY_HANDLER Handler,
355 AcpiRemoveNotifyHandler (
358 ACPI_NOTIFY_HANDLER Handler);
361 AcpiInstallAddressSpaceHandler (
363 ACPI_ADR_SPACE_TYPE SpaceId,
364 ACPI_ADR_SPACE_HANDLER Handler,
365 ACPI_ADR_SPACE_SETUP Setup,
369 AcpiRemoveAddressSpaceHandler (
371 ACPI_ADR_SPACE_TYPE SpaceId,
372 ACPI_ADR_SPACE_HANDLER Handler);
375 AcpiInstallExceptionHandler (
376 ACPI_EXCEPTION_HANDLER Handler);
379 AcpiInstallInterfaceHandler (
380 ACPI_INTERFACE_HANDLER Handler);
384 * Global Lock interfaces
387 AcpiAcquireGlobalLock (
392 AcpiReleaseGlobalLock (
397 * Interfaces to AML mutex objects
402 ACPI_STRING Pathname,
408 ACPI_STRING Pathname);
412 * Fixed Event interfaces
431 ACPI_EVENT_STATUS *EventStatus);
435 * General Purpose Event (GPE) Interfaces
443 ACPI_HANDLE GpeDevice,
448 ACPI_HANDLE GpeDevice,
453 ACPI_HANDLE GpeDevice,
458 ACPI_HANDLE GpeDevice,
464 ACPI_HANDLE GpeDevice,
468 AcpiSetupGpeForWake (
469 ACPI_HANDLE ParentDevice,
470 ACPI_HANDLE GpeDevice,
475 ACPI_HANDLE GpeDevice,
481 ACPI_HANDLE GpeDevice,
483 ACPI_EVENT_STATUS *EventStatus);
490 AcpiEnableAllRuntimeGpes (
496 ACPI_HANDLE *GpeDevice);
499 AcpiInstallGpeBlock (
500 ACPI_HANDLE GpeDevice,
501 ACPI_GENERIC_ADDRESS *GpeBlockAddress,
502 UINT32 RegisterCount,
503 UINT32 InterruptNumber);
507 ACPI_HANDLE GpeDevice);
511 * Resource interfaces
514 ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) (
515 ACPI_RESOURCE *Resource,
519 AcpiGetVendorResource (
522 ACPI_VENDOR_UUID *Uuid,
523 ACPI_BUFFER *RetBuffer);
526 AcpiGetCurrentResources (
528 ACPI_BUFFER *RetBuffer);
531 AcpiGetPossibleResources (
533 ACPI_BUFFER *RetBuffer);
536 AcpiGetEventResources (
537 ACPI_HANDLE DeviceHandle,
538 ACPI_BUFFER *RetBuffer);
544 ACPI_WALK_RESOURCE_CALLBACK UserFunction,
548 AcpiSetCurrentResources (
550 ACPI_BUFFER *InBuffer);
553 AcpiGetIrqRoutingTable (
555 ACPI_BUFFER *RetBuffer);
558 AcpiResourceToAddress64 (
559 ACPI_RESOURCE *Resource,
560 ACPI_RESOURCE_ADDRESS64 *Out);
563 AcpiBufferToResource (
565 UINT16 AmlBufferLength,
566 ACPI_RESOURCE **ResourcePtr);
570 * Hardware (ACPI device) interfaces
579 ACPI_GENERIC_ADDRESS *Reg);
584 ACPI_GENERIC_ADDRESS *Reg);
587 AcpiReadBitRegister (
589 UINT32 *ReturnValue);
592 AcpiWriteBitRegister (
597 AcpiGetSleepTypeData (
603 AcpiEnterSleepStatePrep (
607 AcpiEnterSleepState (
611 AcpiEnterSleepStateS4bios (
615 AcpiLeaveSleepState (
619 AcpiSetFirmwareWakingVector (
620 UINT32 PhysicalAddress);
622 #if ACPI_MACHINE_WIDTH == 64
624 AcpiSetFirmwareWakingVector64 (
625 UINT64 PhysicalAddress);
630 * Error/Warning output
632 void ACPI_INTERNAL_VAR_XFACE
634 const char *ModuleName,
637 ...) ACPI_PRINTF_LIKE(3);
639 void ACPI_INTERNAL_VAR_XFACE
641 const char *ModuleName,
645 ...) ACPI_PRINTF_LIKE(4);
647 void ACPI_INTERNAL_VAR_XFACE
649 const char *ModuleName,
652 ...) ACPI_PRINTF_LIKE(3);
654 void ACPI_INTERNAL_VAR_XFACE
656 const char *ModuleName,
659 ...) ACPI_PRINTF_LIKE(3);
665 #ifdef ACPI_DEBUG_OUTPUT
667 void ACPI_INTERNAL_VAR_XFACE
669 UINT32 RequestedDebugLevel,
671 const char *FunctionName,
672 const char *ModuleName,
675 ...) ACPI_PRINTF_LIKE(6);
677 void ACPI_INTERNAL_VAR_XFACE
679 UINT32 RequestedDebugLevel,
681 const char *FunctionName,
682 const char *ModuleName,
685 ...) ACPI_PRINTF_LIKE(6);
688 #endif /* __ACXFACE_H__ */