10d02842fSSascha Wildner /****************************************************************************** 20d02842fSSascha Wildner * 30d02842fSSascha Wildner * Name: actypes.h - Common data types for the entire ACPI subsystem 40d02842fSSascha Wildner * 50d02842fSSascha Wildner *****************************************************************************/ 60d02842fSSascha Wildner 7b4315fc7SSascha Wildner /****************************************************************************** 8b4315fc7SSascha Wildner * 9b4315fc7SSascha Wildner * 1. Copyright Notice 10b4315fc7SSascha Wildner * 11383048acSSascha Wildner * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp. 120d02842fSSascha Wildner * All rights reserved. 130d02842fSSascha Wildner * 14b4315fc7SSascha Wildner * 2. License 15b4315fc7SSascha Wildner * 16b4315fc7SSascha Wildner * 2.1. This is your license from Intel Corp. under its intellectual property 17b4315fc7SSascha Wildner * rights. You may have additional license terms from the party that provided 18b4315fc7SSascha Wildner * you this software, covering your right to use that party's intellectual 19b4315fc7SSascha Wildner * property rights. 20b4315fc7SSascha Wildner * 21b4315fc7SSascha Wildner * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22b4315fc7SSascha Wildner * copy of the source code appearing in this file ("Covered Code") an 23b4315fc7SSascha Wildner * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24b4315fc7SSascha Wildner * base code distributed originally by Intel ("Original Intel Code") to copy, 25b4315fc7SSascha Wildner * make derivatives, distribute, use and display any portion of the Covered 26b4315fc7SSascha Wildner * Code in any form, with the right to sublicense such rights; and 27b4315fc7SSascha Wildner * 28b4315fc7SSascha Wildner * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29b4315fc7SSascha Wildner * license (with the right to sublicense), under only those claims of Intel 30b4315fc7SSascha Wildner * patents that are infringed by the Original Intel Code, to make, use, sell, 31b4315fc7SSascha Wildner * offer to sell, and import the Covered Code and derivative works thereof 32b4315fc7SSascha Wildner * solely to the minimum extent necessary to exercise the above copyright 33b4315fc7SSascha Wildner * license, and in no event shall the patent license extend to any additions 34b4315fc7SSascha Wildner * to or modifications of the Original Intel Code. No other license or right 35b4315fc7SSascha Wildner * is granted directly or by implication, estoppel or otherwise; 36b4315fc7SSascha Wildner * 37b4315fc7SSascha Wildner * The above copyright and patent license is granted only if the following 38b4315fc7SSascha Wildner * conditions are met: 39b4315fc7SSascha Wildner * 40b4315fc7SSascha Wildner * 3. Conditions 41b4315fc7SSascha Wildner * 42b4315fc7SSascha Wildner * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43b4315fc7SSascha Wildner * Redistribution of source code of any substantial portion of the Covered 44b4315fc7SSascha Wildner * Code or modification with rights to further distribute source must include 45b4315fc7SSascha Wildner * the above Copyright Notice, the above License, this list of Conditions, 46b4315fc7SSascha Wildner * and the following Disclaimer and Export Compliance provision. In addition, 47b4315fc7SSascha Wildner * Licensee must cause all Covered Code to which Licensee contributes to 48b4315fc7SSascha Wildner * contain a file documenting the changes Licensee made to create that Covered 49b4315fc7SSascha Wildner * Code and the date of any change. Licensee must include in that file the 50b4315fc7SSascha Wildner * documentation of any changes made by any predecessor Licensee. Licensee 51b4315fc7SSascha Wildner * must include a prominent statement that the modification is derived, 52b4315fc7SSascha Wildner * directly or indirectly, from Original Intel Code. 53b4315fc7SSascha Wildner * 54b4315fc7SSascha Wildner * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55b4315fc7SSascha Wildner * Redistribution of source code of any substantial portion of the Covered 56b4315fc7SSascha Wildner * Code or modification without rights to further distribute source must 57b4315fc7SSascha Wildner * include the following Disclaimer and Export Compliance provision in the 58b4315fc7SSascha Wildner * documentation and/or other materials provided with distribution. In 59b4315fc7SSascha Wildner * addition, Licensee may not authorize further sublicense of source of any 60b4315fc7SSascha Wildner * portion of the Covered Code, and must include terms to the effect that the 61b4315fc7SSascha Wildner * license from Licensee to its licensee is limited to the intellectual 62b4315fc7SSascha Wildner * property embodied in the software Licensee provides to its licensee, and 63b4315fc7SSascha Wildner * not to intellectual property embodied in modifications its licensee may 64b4315fc7SSascha Wildner * make. 65b4315fc7SSascha Wildner * 66b4315fc7SSascha Wildner * 3.3. Redistribution of Executable. Redistribution in executable form of any 67b4315fc7SSascha Wildner * substantial portion of the Covered Code or modification must reproduce the 68b4315fc7SSascha Wildner * above Copyright Notice, and the following Disclaimer and Export Compliance 69b4315fc7SSascha Wildner * provision in the documentation and/or other materials provided with the 70b4315fc7SSascha Wildner * distribution. 71b4315fc7SSascha Wildner * 72b4315fc7SSascha Wildner * 3.4. Intel retains all right, title, and interest in and to the Original 73b4315fc7SSascha Wildner * Intel Code. 74b4315fc7SSascha Wildner * 75b4315fc7SSascha Wildner * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76b4315fc7SSascha Wildner * Intel shall be used in advertising or otherwise to promote the sale, use or 77b4315fc7SSascha Wildner * other dealings in products derived from or relating to the Covered Code 78b4315fc7SSascha Wildner * without prior written authorization from Intel. 79b4315fc7SSascha Wildner * 80b4315fc7SSascha Wildner * 4. Disclaimer and Export Compliance 81b4315fc7SSascha Wildner * 82b4315fc7SSascha Wildner * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83b4315fc7SSascha Wildner * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84b4315fc7SSascha Wildner * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85b4315fc7SSascha Wildner * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86b4315fc7SSascha Wildner * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87b4315fc7SSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88b4315fc7SSascha Wildner * PARTICULAR PURPOSE. 89b4315fc7SSascha Wildner * 90b4315fc7SSascha Wildner * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91b4315fc7SSascha Wildner * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92b4315fc7SSascha Wildner * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93b4315fc7SSascha Wildner * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94b4315fc7SSascha Wildner * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95b4315fc7SSascha Wildner * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96b4315fc7SSascha Wildner * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97b4315fc7SSascha Wildner * LIMITED REMEDY. 98b4315fc7SSascha Wildner * 99b4315fc7SSascha Wildner * 4.3. Licensee shall not export, either directly or indirectly, any of this 100b4315fc7SSascha Wildner * software or system incorporating such software without first obtaining any 101b4315fc7SSascha Wildner * required license or other approval from the U. S. Department of Commerce or 102b4315fc7SSascha Wildner * any other agency or department of the United States Government. In the 103b4315fc7SSascha Wildner * event Licensee exports any such software from the United States or 104b4315fc7SSascha Wildner * re-exports any such software from a foreign destination, Licensee shall 105b4315fc7SSascha Wildner * ensure that the distribution and export/re-export of the software is in 106b4315fc7SSascha Wildner * compliance with all laws, regulations, orders, or other restrictions of the 107b4315fc7SSascha Wildner * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108b4315fc7SSascha Wildner * any of its subsidiaries will export/re-export any technical data, process, 109b4315fc7SSascha Wildner * software, or service, directly or indirectly, to any country for which the 110b4315fc7SSascha Wildner * United States government or any agency thereof requires an export license, 111b4315fc7SSascha Wildner * other governmental approval, or letter of assurance, without first obtaining 112b4315fc7SSascha Wildner * such license, approval or letter. 113b4315fc7SSascha Wildner * 114b4315fc7SSascha Wildner ***************************************************************************** 115b4315fc7SSascha Wildner * 116b4315fc7SSascha Wildner * Alternatively, you may choose to be licensed under the terms of the 117b4315fc7SSascha Wildner * following license: 118b4315fc7SSascha Wildner * 1190d02842fSSascha Wildner * Redistribution and use in source and binary forms, with or without 1200d02842fSSascha Wildner * modification, are permitted provided that the following conditions 1210d02842fSSascha Wildner * are met: 1220d02842fSSascha Wildner * 1. Redistributions of source code must retain the above copyright 1230d02842fSSascha Wildner * notice, this list of conditions, and the following disclaimer, 1240d02842fSSascha Wildner * without modification. 1250d02842fSSascha Wildner * 2. Redistributions in binary form must reproduce at minimum a disclaimer 1260d02842fSSascha Wildner * substantially similar to the "NO WARRANTY" disclaimer below 1270d02842fSSascha Wildner * ("Disclaimer") and any redistribution must be conditioned upon 1280d02842fSSascha Wildner * including a substantially similar Disclaimer requirement for further 1290d02842fSSascha Wildner * binary redistribution. 1300d02842fSSascha Wildner * 3. Neither the names of the above-listed copyright holders nor the names 1310d02842fSSascha Wildner * of any contributors may be used to endorse or promote products derived 1320d02842fSSascha Wildner * from this software without specific prior written permission. 1330d02842fSSascha Wildner * 134b4315fc7SSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 135b4315fc7SSascha Wildner * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136b4315fc7SSascha Wildner * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 137b4315fc7SSascha Wildner * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 138b4315fc7SSascha Wildner * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 139b4315fc7SSascha Wildner * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 140b4315fc7SSascha Wildner * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 141b4315fc7SSascha Wildner * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 142b4315fc7SSascha Wildner * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 143b4315fc7SSascha Wildner * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 144b4315fc7SSascha Wildner * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 145b4315fc7SSascha Wildner * 146b4315fc7SSascha Wildner * Alternatively, you may choose to be licensed under the terms of the 1470d02842fSSascha Wildner * GNU General Public License ("GPL") version 2 as published by the Free 1480d02842fSSascha Wildner * Software Foundation. 1490d02842fSSascha Wildner * 150b4315fc7SSascha Wildner *****************************************************************************/ 1510d02842fSSascha Wildner 1520d02842fSSascha Wildner #ifndef __ACTYPES_H__ 1530d02842fSSascha Wildner #define __ACTYPES_H__ 1540d02842fSSascha Wildner 1550d02842fSSascha Wildner /* acpisrc:StructDefs -- for acpisrc conversion */ 1560d02842fSSascha Wildner 1570d02842fSSascha Wildner /* 1581093ca81SSascha Wildner * ACPI_MACHINE_WIDTH must be specified in an OS- or compiler-dependent 1591093ca81SSascha Wildner * header and must be either 32 or 64. 16-bit ACPICA is no longer 1601093ca81SSascha Wildner * supported, as of 12/2006. 1610d02842fSSascha Wildner */ 1620d02842fSSascha Wildner #ifndef ACPI_MACHINE_WIDTH 1630d02842fSSascha Wildner #error ACPI_MACHINE_WIDTH not defined 1640d02842fSSascha Wildner #endif 1650d02842fSSascha Wildner 1660d02842fSSascha Wildner /* 1670d02842fSSascha Wildner * Data type ranges 1680d02842fSSascha Wildner * Note: These macros are designed to be compiler independent as well as 1690d02842fSSascha Wildner * working around problems that some 32-bit compilers have with 64-bit 1700d02842fSSascha Wildner * constants. 1710d02842fSSascha Wildner */ 1720d02842fSSascha Wildner #define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ 1730d02842fSSascha Wildner #define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ 1740d02842fSSascha Wildner #define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ 1750d02842fSSascha Wildner #define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ 1760d02842fSSascha Wildner #define ACPI_ASCII_MAX 0x7F 1770d02842fSSascha Wildner 1780d02842fSSascha Wildner 1790d02842fSSascha Wildner /* 1800d02842fSSascha Wildner * Architecture-specific ACPICA Subsystem Data Types 1810d02842fSSascha Wildner * 1820d02842fSSascha Wildner * The goal of these types is to provide source code portability across 1830d02842fSSascha Wildner * 16-bit, 32-bit, and 64-bit targets. 1840d02842fSSascha Wildner * 1850d02842fSSascha Wildner * 1) The following types are of fixed size for all targets (16/32/64): 1860d02842fSSascha Wildner * 1870d02842fSSascha Wildner * BOOLEAN Logical boolean 1880d02842fSSascha Wildner * 1890d02842fSSascha Wildner * UINT8 8-bit (1 byte) unsigned value 1900d02842fSSascha Wildner * UINT16 16-bit (2 byte) unsigned value 1910d02842fSSascha Wildner * UINT32 32-bit (4 byte) unsigned value 1920d02842fSSascha Wildner * UINT64 64-bit (8 byte) unsigned value 1930d02842fSSascha Wildner * 1940d02842fSSascha Wildner * INT16 16-bit (2 byte) signed value 1950d02842fSSascha Wildner * INT32 32-bit (4 byte) signed value 1960d02842fSSascha Wildner * INT64 64-bit (8 byte) signed value 1970d02842fSSascha Wildner * 1980d02842fSSascha Wildner * COMPILER_DEPENDENT_UINT64/INT64 - These types are defined in the 1991093ca81SSascha Wildner * compiler-dependent header(s) and were introduced because there is no 2001093ca81SSascha Wildner * common 64-bit integer type across the various compilation models, as 2011093ca81SSascha Wildner * shown in the table below. 2020d02842fSSascha Wildner * 2030d02842fSSascha Wildner * Datatype LP64 ILP64 LLP64 ILP32 LP32 16bit 2040d02842fSSascha Wildner * char 8 8 8 8 8 8 2050d02842fSSascha Wildner * short 16 16 16 16 16 16 2060d02842fSSascha Wildner * _int32 32 2070d02842fSSascha Wildner * int 32 64 32 32 16 16 2080d02842fSSascha Wildner * long 64 64 32 32 32 32 2090d02842fSSascha Wildner * long long 64 64 2100d02842fSSascha Wildner * pointer 64 64 64 32 32 32 2110d02842fSSascha Wildner * 2120d02842fSSascha Wildner * Note: ILP64 and LP32 are currently not supported. 2130d02842fSSascha Wildner * 2140d02842fSSascha Wildner * 2150d02842fSSascha Wildner * 2) These types represent the native word size of the target mode of the 2160d02842fSSascha Wildner * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are 2170d02842fSSascha Wildner * usually used for memory allocation, efficient loop counters, and array 2181093ca81SSascha Wildner * indexes. The types are similar to the size_t type in the C library and 2191093ca81SSascha Wildner * are required because there is no C type that consistently represents the 2201093ca81SSascha Wildner * native data width. ACPI_SIZE is needed because there is no guarantee 2211093ca81SSascha Wildner * that a kernel-level C library is present. 2220d02842fSSascha Wildner * 2230d02842fSSascha Wildner * ACPI_SIZE 16/32/64-bit unsigned value 2240d02842fSSascha Wildner * ACPI_NATIVE_INT 16/32/64-bit signed value 2250d02842fSSascha Wildner */ 2260d02842fSSascha Wildner 2270d02842fSSascha Wildner /******************************************************************************* 2280d02842fSSascha Wildner * 2290d02842fSSascha Wildner * Common types for all compilers, all targets 2300d02842fSSascha Wildner * 2310d02842fSSascha Wildner ******************************************************************************/ 2320d02842fSSascha Wildner 2339e1c0880SSascha Wildner #ifndef ACPI_USE_SYSTEM_INTTYPES 2349e1c0880SSascha Wildner 2350d02842fSSascha Wildner typedef unsigned char BOOLEAN; 2360d02842fSSascha Wildner typedef unsigned char UINT8; 2370d02842fSSascha Wildner typedef unsigned short UINT16; 2385f39c7e7SSascha Wildner typedef short INT16; 2390d02842fSSascha Wildner typedef COMPILER_DEPENDENT_UINT64 UINT64; 2400d02842fSSascha Wildner typedef COMPILER_DEPENDENT_INT64 INT64; 2410d02842fSSascha Wildner 2429e1c0880SSascha Wildner #endif /* ACPI_USE_SYSTEM_INTTYPES */ 2430d02842fSSascha Wildner 2440d02842fSSascha Wildner /* 2450d02842fSSascha Wildner * Value returned by AcpiOsGetThreadId. There is no standard "thread_id" 2460d02842fSSascha Wildner * across operating systems or even the various UNIX systems. Since ACPICA 2470d02842fSSascha Wildner * only needs the thread ID as a unique thread identifier, we use a UINT64 2480d02842fSSascha Wildner * as the only common data type - it will accommodate any type of pointer or 2490d02842fSSascha Wildner * any type of integer. It is up to the host-dependent OSL to cast the 2500d02842fSSascha Wildner * native thread ID type to a UINT64 (in AcpiOsGetThreadId). 2510d02842fSSascha Wildner */ 2520d02842fSSascha Wildner #define ACPI_THREAD_ID UINT64 2530d02842fSSascha Wildner 2540d02842fSSascha Wildner 2550d02842fSSascha Wildner /******************************************************************************* 2560d02842fSSascha Wildner * 2570d02842fSSascha Wildner * Types specific to 64-bit targets 2580d02842fSSascha Wildner * 2590d02842fSSascha Wildner ******************************************************************************/ 2600d02842fSSascha Wildner 2610d02842fSSascha Wildner #if ACPI_MACHINE_WIDTH == 64 2620d02842fSSascha Wildner 2639e1c0880SSascha Wildner #ifndef ACPI_USE_SYSTEM_INTTYPES 2640d02842fSSascha Wildner 2650d02842fSSascha Wildner typedef unsigned int UINT32; 2660d02842fSSascha Wildner typedef int INT32; 2670d02842fSSascha Wildner 2689e1c0880SSascha Wildner #endif /* ACPI_USE_SYSTEM_INTTYPES */ 2690d02842fSSascha Wildner 2700d02842fSSascha Wildner 2710d02842fSSascha Wildner typedef INT64 ACPI_NATIVE_INT; 2720d02842fSSascha Wildner typedef UINT64 ACPI_SIZE; 2730d02842fSSascha Wildner typedef UINT64 ACPI_IO_ADDRESS; 2740d02842fSSascha Wildner typedef UINT64 ACPI_PHYSICAL_ADDRESS; 2750d02842fSSascha Wildner 2760d02842fSSascha Wildner #define ACPI_MAX_PTR ACPI_UINT64_MAX 2770d02842fSSascha Wildner #define ACPI_SIZE_MAX ACPI_UINT64_MAX 2780d02842fSSascha Wildner #define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ 2793c639e0cSSascha Wildner #define ACPI_USE_NATIVE_MATH64 /* Has native 64-bit integer support */ 2800d02842fSSascha Wildner 2810d02842fSSascha Wildner /* 2820d02842fSSascha Wildner * In the case of the Itanium Processor Family (IPF), the hardware does not 2831093ca81SSascha Wildner * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED 2841093ca81SSascha Wildner * flag to indicate that special precautions must be taken to avoid alignment 2851093ca81SSascha Wildner * faults. (IA64 or ia64 is currently used by existing compilers to indicate 2861093ca81SSascha Wildner * IPF.) 2870d02842fSSascha Wildner * 2880d02842fSSascha Wildner * Note: EM64T and other X86-64 processors support misaligned transfers, 2890d02842fSSascha Wildner * so there is no need to define this flag. 2900d02842fSSascha Wildner */ 2910d02842fSSascha Wildner #if defined (__IA64__) || defined (__ia64__) 2920d02842fSSascha Wildner #define ACPI_MISALIGNMENT_NOT_SUPPORTED 2930d02842fSSascha Wildner #endif 2940d02842fSSascha Wildner 2950d02842fSSascha Wildner 2960d02842fSSascha Wildner /******************************************************************************* 2970d02842fSSascha Wildner * 2980d02842fSSascha Wildner * Types specific to 32-bit targets 2990d02842fSSascha Wildner * 3000d02842fSSascha Wildner ******************************************************************************/ 3010d02842fSSascha Wildner 3020d02842fSSascha Wildner #elif ACPI_MACHINE_WIDTH == 32 3030d02842fSSascha Wildner 3049e1c0880SSascha Wildner #ifndef ACPI_USE_SYSTEM_INTTYPES 3050d02842fSSascha Wildner 3060d02842fSSascha Wildner typedef unsigned int UINT32; 3070d02842fSSascha Wildner typedef int INT32; 3080d02842fSSascha Wildner 3099e1c0880SSascha Wildner #endif /* ACPI_USE_SYSTEM_INTTYPES */ 3100d02842fSSascha Wildner 3110d02842fSSascha Wildner 3120d02842fSSascha Wildner typedef INT32 ACPI_NATIVE_INT; 3130d02842fSSascha Wildner typedef UINT32 ACPI_SIZE; 3145943f66cSSascha Wildner 3155943f66cSSascha Wildner #ifdef ACPI_32BIT_PHYSICAL_ADDRESS 3165943f66cSSascha Wildner 3175943f66cSSascha Wildner /* 3185943f66cSSascha Wildner * OSPMs can define this to shrink the size of the structures for 32-bit 3195943f66cSSascha Wildner * none PAE environment. ASL compiler may always define this to generate 3205943f66cSSascha Wildner * 32-bit OSPM compliant tables. 3215943f66cSSascha Wildner */ 3220d02842fSSascha Wildner typedef UINT32 ACPI_IO_ADDRESS; 3230d02842fSSascha Wildner typedef UINT32 ACPI_PHYSICAL_ADDRESS; 3240d02842fSSascha Wildner 3255943f66cSSascha Wildner #else /* ACPI_32BIT_PHYSICAL_ADDRESS */ 3265943f66cSSascha Wildner 3275943f66cSSascha Wildner /* 3285943f66cSSascha Wildner * It is reported that, after some calculations, the physical addresses can 3295943f66cSSascha Wildner * wrap over the 32-bit boundary on 32-bit PAE environment. 3305943f66cSSascha Wildner * https://bugzilla.kernel.org/show_bug.cgi?id=87971 3315943f66cSSascha Wildner */ 3325943f66cSSascha Wildner typedef UINT64 ACPI_IO_ADDRESS; 3335943f66cSSascha Wildner typedef UINT64 ACPI_PHYSICAL_ADDRESS; 3345943f66cSSascha Wildner 3355943f66cSSascha Wildner #endif /* ACPI_32BIT_PHYSICAL_ADDRESS */ 3365943f66cSSascha Wildner 3370d02842fSSascha Wildner #define ACPI_MAX_PTR ACPI_UINT32_MAX 3380d02842fSSascha Wildner #define ACPI_SIZE_MAX ACPI_UINT32_MAX 3390d02842fSSascha Wildner 3400d02842fSSascha Wildner #else 3410d02842fSSascha Wildner 3420d02842fSSascha Wildner /* ACPI_MACHINE_WIDTH must be either 64 or 32 */ 3430d02842fSSascha Wildner 3440d02842fSSascha Wildner #error unknown ACPI_MACHINE_WIDTH 3450d02842fSSascha Wildner #endif 3460d02842fSSascha Wildner 3470d02842fSSascha Wildner 3480d02842fSSascha Wildner /******************************************************************************* 3490d02842fSSascha Wildner * 3500d02842fSSascha Wildner * OS-dependent types 3510d02842fSSascha Wildner * 3520d02842fSSascha Wildner * If the defaults below are not appropriate for the host system, they can 3530d02842fSSascha Wildner * be defined in the OS-specific header, and this will take precedence. 3540d02842fSSascha Wildner * 3550d02842fSSascha Wildner ******************************************************************************/ 3560d02842fSSascha Wildner 3570d02842fSSascha Wildner /* Flags for AcpiOsAcquireLock/AcpiOsReleaseLock */ 3580d02842fSSascha Wildner 3590d02842fSSascha Wildner #ifndef ACPI_CPU_FLAGS 3600d02842fSSascha Wildner #define ACPI_CPU_FLAGS ACPI_SIZE 3610d02842fSSascha Wildner #endif 3620d02842fSSascha Wildner 3630d02842fSSascha Wildner /* Object returned from AcpiOsCreateCache */ 3640d02842fSSascha Wildner 3650d02842fSSascha Wildner #ifndef ACPI_CACHE_T 3660d02842fSSascha Wildner #ifdef ACPI_USE_LOCAL_CACHE 3670d02842fSSascha Wildner #define ACPI_CACHE_T ACPI_MEMORY_LIST 3680d02842fSSascha Wildner #else 3690d02842fSSascha Wildner #define ACPI_CACHE_T void * 3700d02842fSSascha Wildner #endif 3710d02842fSSascha Wildner #endif 3720d02842fSSascha Wildner 3730d02842fSSascha Wildner /* 3740d02842fSSascha Wildner * Synchronization objects - Mutexes, Semaphores, and SpinLocks 3750d02842fSSascha Wildner */ 3760d02842fSSascha Wildner #if (ACPI_MUTEX_TYPE == ACPI_BINARY_SEMAPHORE) 3770d02842fSSascha Wildner /* 3780d02842fSSascha Wildner * These macros are used if the host OS does not support a mutex object. 3790d02842fSSascha Wildner * Map the OSL Mutex interfaces to binary semaphores. 3800d02842fSSascha Wildner */ 3810d02842fSSascha Wildner #define ACPI_MUTEX ACPI_SEMAPHORE 3820d02842fSSascha Wildner #define AcpiOsCreateMutex(OutHandle) AcpiOsCreateSemaphore (1, 1, OutHandle) 3830d02842fSSascha Wildner #define AcpiOsDeleteMutex(Handle) (void) AcpiOsDeleteSemaphore (Handle) 3840d02842fSSascha Wildner #define AcpiOsAcquireMutex(Handle,Time) AcpiOsWaitSemaphore (Handle, 1, Time) 3850d02842fSSascha Wildner #define AcpiOsReleaseMutex(Handle) (void) AcpiOsSignalSemaphore (Handle, 1) 3860d02842fSSascha Wildner #endif 3870d02842fSSascha Wildner 3880d02842fSSascha Wildner /* Configurable types for synchronization objects */ 3890d02842fSSascha Wildner 3900d02842fSSascha Wildner #ifndef ACPI_SPINLOCK 3910d02842fSSascha Wildner #define ACPI_SPINLOCK void * 3920d02842fSSascha Wildner #endif 3930d02842fSSascha Wildner 3940d02842fSSascha Wildner #ifndef ACPI_SEMAPHORE 3950d02842fSSascha Wildner #define ACPI_SEMAPHORE void * 3960d02842fSSascha Wildner #endif 3970d02842fSSascha Wildner 3980d02842fSSascha Wildner #ifndef ACPI_MUTEX 3990d02842fSSascha Wildner #define ACPI_MUTEX void * 4000d02842fSSascha Wildner #endif 4010d02842fSSascha Wildner 4020d02842fSSascha Wildner 4030d02842fSSascha Wildner /******************************************************************************* 4040d02842fSSascha Wildner * 4050d02842fSSascha Wildner * Compiler-dependent types 4060d02842fSSascha Wildner * 4070d02842fSSascha Wildner * If the defaults below are not appropriate for the host compiler, they can 4080d02842fSSascha Wildner * be defined in the compiler-specific header, and this will take precedence. 4090d02842fSSascha Wildner * 4100d02842fSSascha Wildner ******************************************************************************/ 4110d02842fSSascha Wildner 4120d02842fSSascha Wildner /* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ 4130d02842fSSascha Wildner 4140d02842fSSascha Wildner #ifndef ACPI_UINTPTR_T 4150d02842fSSascha Wildner #define ACPI_UINTPTR_T void * 4160d02842fSSascha Wildner #endif 4170d02842fSSascha Wildner 4180d02842fSSascha Wildner /* 4190d02842fSSascha Wildner * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because 4200d02842fSSascha Wildner * some compilers can catch printf format string problems 4210d02842fSSascha Wildner */ 4220d02842fSSascha Wildner #ifndef ACPI_PRINTF_LIKE 4230d02842fSSascha Wildner #define ACPI_PRINTF_LIKE(c) 4240d02842fSSascha Wildner #endif 4250d02842fSSascha Wildner 4260d02842fSSascha Wildner /* 4271093ca81SSascha Wildner * Some compilers complain about unused variables. Sometimes we don't want 4281093ca81SSascha Wildner * to use all the variables (for example, _AcpiModuleName). This allows us 4290d02842fSSascha Wildner * to tell the compiler in a per-variable manner that a variable 4300d02842fSSascha Wildner * is unused 4310d02842fSSascha Wildner */ 4320d02842fSSascha Wildner #ifndef ACPI_UNUSED_VAR 4330d02842fSSascha Wildner #define ACPI_UNUSED_VAR 4340d02842fSSascha Wildner #endif 4350d02842fSSascha Wildner 4360d02842fSSascha Wildner /* 4371093ca81SSascha Wildner * All ACPICA external functions that are available to the rest of the 4381093ca81SSascha Wildner * kernel are tagged with these macros which can be defined as appropriate 4391093ca81SSascha Wildner * for the host. 4400d02842fSSascha Wildner * 4410d02842fSSascha Wildner * Notes: 4420d02842fSSascha Wildner * ACPI_EXPORT_SYMBOL_INIT is used for initialization and termination 4430d02842fSSascha Wildner * interfaces that may need special processing. 4440d02842fSSascha Wildner * ACPI_EXPORT_SYMBOL is used for all other public external functions. 4450d02842fSSascha Wildner */ 4460d02842fSSascha Wildner #ifndef ACPI_EXPORT_SYMBOL_INIT 4470d02842fSSascha Wildner #define ACPI_EXPORT_SYMBOL_INIT(Symbol) 4480d02842fSSascha Wildner #endif 4490d02842fSSascha Wildner 4500d02842fSSascha Wildner #ifndef ACPI_EXPORT_SYMBOL 4510d02842fSSascha Wildner #define ACPI_EXPORT_SYMBOL(Symbol) 4520d02842fSSascha Wildner #endif 4530d02842fSSascha Wildner 4540d02842fSSascha Wildner /* 4550d02842fSSascha Wildner * Compiler/Clibrary-dependent debug initialization. Used for ACPICA 4560d02842fSSascha Wildner * utilities only. 4570d02842fSSascha Wildner */ 4580d02842fSSascha Wildner #ifndef ACPI_DEBUG_INITIALIZE 4590d02842fSSascha Wildner #define ACPI_DEBUG_INITIALIZE() 4600d02842fSSascha Wildner #endif 4610d02842fSSascha Wildner 4620d02842fSSascha Wildner 4630d02842fSSascha Wildner /******************************************************************************* 4640d02842fSSascha Wildner * 4650d02842fSSascha Wildner * Configuration 4660d02842fSSascha Wildner * 4670d02842fSSascha Wildner ******************************************************************************/ 4680d02842fSSascha Wildner 4699e1c0880SSascha Wildner #ifdef ACPI_NO_MEM_ALLOCATIONS 4709e1c0880SSascha Wildner 4719e1c0880SSascha Wildner #define ACPI_ALLOCATE(a) NULL 4729e1c0880SSascha Wildner #define ACPI_ALLOCATE_ZEROED(a) NULL 4739e1c0880SSascha Wildner #define ACPI_FREE(a) 4749e1c0880SSascha Wildner #define ACPI_MEM_TRACKING(a) 4759e1c0880SSascha Wildner 4769e1c0880SSascha Wildner #else /* ACPI_NO_MEM_ALLOCATIONS */ 4779e1c0880SSascha Wildner 4780d02842fSSascha Wildner #ifdef ACPI_DBG_TRACK_ALLOCATIONS 4790d02842fSSascha Wildner /* 4800d02842fSSascha Wildner * Memory allocation tracking (used by AcpiExec to detect memory leaks) 4810d02842fSSascha Wildner */ 4820d02842fSSascha Wildner #define ACPI_MEM_PARAMETERS _COMPONENT, _AcpiModuleName, __LINE__ 4830d02842fSSascha Wildner #define ACPI_ALLOCATE(a) AcpiUtAllocateAndTrack ((ACPI_SIZE) (a), ACPI_MEM_PARAMETERS) 4840d02842fSSascha Wildner #define ACPI_ALLOCATE_ZEROED(a) AcpiUtAllocateZeroedAndTrack ((ACPI_SIZE) (a), ACPI_MEM_PARAMETERS) 4850d02842fSSascha Wildner #define ACPI_FREE(a) AcpiUtFreeAndTrack (a, ACPI_MEM_PARAMETERS) 4860d02842fSSascha Wildner #define ACPI_MEM_TRACKING(a) a 4870d02842fSSascha Wildner 4880d02842fSSascha Wildner #else 4890d02842fSSascha Wildner /* 4900d02842fSSascha Wildner * Normal memory allocation directly via the OS services layer 4910d02842fSSascha Wildner */ 4920d02842fSSascha Wildner #define ACPI_ALLOCATE(a) AcpiOsAllocate ((ACPI_SIZE) (a)) 4930d02842fSSascha Wildner #define ACPI_ALLOCATE_ZEROED(a) AcpiOsAllocateZeroed ((ACPI_SIZE) (a)) 4940d02842fSSascha Wildner #define ACPI_FREE(a) AcpiOsFree (a) 4950d02842fSSascha Wildner #define ACPI_MEM_TRACKING(a) 4960d02842fSSascha Wildner 4970d02842fSSascha Wildner #endif /* ACPI_DBG_TRACK_ALLOCATIONS */ 4980d02842fSSascha Wildner 4999e1c0880SSascha Wildner #endif /* ACPI_NO_MEM_ALLOCATIONS */ 5009e1c0880SSascha Wildner 5010d02842fSSascha Wildner 5020d02842fSSascha Wildner /****************************************************************************** 5030d02842fSSascha Wildner * 5041093ca81SSascha Wildner * ACPI Specification constants (Do not change unless the specification 5051093ca81SSascha Wildner * changes) 5060d02842fSSascha Wildner * 5070d02842fSSascha Wildner *****************************************************************************/ 5080d02842fSSascha Wildner 5090d02842fSSascha Wildner /* Number of distinct FADT-based GPE register blocks (GPE0 and GPE1) */ 5100d02842fSSascha Wildner 5110d02842fSSascha Wildner #define ACPI_MAX_GPE_BLOCKS 2 5120d02842fSSascha Wildner 5130d02842fSSascha Wildner /* Default ACPI register widths */ 5140d02842fSSascha Wildner 5150d02842fSSascha Wildner #define ACPI_GPE_REGISTER_WIDTH 8 5160d02842fSSascha Wildner #define ACPI_PM1_REGISTER_WIDTH 16 5170d02842fSSascha Wildner #define ACPI_PM2_REGISTER_WIDTH 8 5180d02842fSSascha Wildner #define ACPI_PM_TIMER_WIDTH 32 5190d02842fSSascha Wildner #define ACPI_RESET_REGISTER_WIDTH 8 5200d02842fSSascha Wildner 5210d02842fSSascha Wildner /* Names within the namespace are 4 bytes long */ 5220d02842fSSascha Wildner 523c1776041SSascha Wildner #define ACPI_NAMESEG_SIZE 4 /* Fixed by ACPI spec */ 5240d02842fSSascha Wildner #define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */ 5250d02842fSSascha Wildner #define ACPI_PATH_SEPARATOR '.' 5260d02842fSSascha Wildner 5270d02842fSSascha Wildner /* Sizes for ACPI table headers */ 5280d02842fSSascha Wildner 5290d02842fSSascha Wildner #define ACPI_OEM_ID_SIZE 6 5300d02842fSSascha Wildner #define ACPI_OEM_TABLE_ID_SIZE 8 5310d02842fSSascha Wildner 5320d02842fSSascha Wildner /* ACPI/PNP hardware IDs */ 5330d02842fSSascha Wildner 5340d02842fSSascha Wildner #define PCI_ROOT_HID_STRING "PNP0A03" 5350d02842fSSascha Wildner #define PCI_EXPRESS_ROOT_HID_STRING "PNP0A08" 5360d02842fSSascha Wildner 5370d02842fSSascha Wildner /* PM Timer ticks per second (HZ) */ 5380d02842fSSascha Wildner 5390d02842fSSascha Wildner #define ACPI_PM_TIMER_FREQUENCY 3579545 5400d02842fSSascha Wildner 5410d02842fSSascha Wildner 5420d02842fSSascha Wildner /******************************************************************************* 5430d02842fSSascha Wildner * 5440d02842fSSascha Wildner * Independent types 5450d02842fSSascha Wildner * 5460d02842fSSascha Wildner ******************************************************************************/ 5470d02842fSSascha Wildner 5480d02842fSSascha Wildner /* Logical defines and NULL */ 5490d02842fSSascha Wildner 5500d02842fSSascha Wildner #ifdef FALSE 5510d02842fSSascha Wildner #undef FALSE 5520d02842fSSascha Wildner #endif 5530d02842fSSascha Wildner #define FALSE (1 == 0) 5540d02842fSSascha Wildner 5550d02842fSSascha Wildner #ifdef TRUE 5560d02842fSSascha Wildner #undef TRUE 5570d02842fSSascha Wildner #endif 5580d02842fSSascha Wildner #define TRUE (1 == 1) 5590d02842fSSascha Wildner 5600d02842fSSascha Wildner #ifndef NULL 5610d02842fSSascha Wildner #define NULL (void *) 0 5620d02842fSSascha Wildner #endif 5630d02842fSSascha Wildner 5640d02842fSSascha Wildner 5650d02842fSSascha Wildner /* 5660d02842fSSascha Wildner * Miscellaneous types 5670d02842fSSascha Wildner */ 5680d02842fSSascha Wildner typedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */ 5690d02842fSSascha Wildner typedef UINT32 ACPI_NAME; /* 4-byte ACPI name */ 5700d02842fSSascha Wildner typedef char * ACPI_STRING; /* Null terminated ASCII string */ 5710d02842fSSascha Wildner typedef void * ACPI_HANDLE; /* Actually a ptr to a NS Node */ 5720d02842fSSascha Wildner 5730d02842fSSascha Wildner 5740d02842fSSascha Wildner /* Time constants for timer calculations */ 5750d02842fSSascha Wildner 5760d02842fSSascha Wildner #define ACPI_MSEC_PER_SEC 1000L 5770d02842fSSascha Wildner 5780d02842fSSascha Wildner #define ACPI_USEC_PER_MSEC 1000L 5790d02842fSSascha Wildner #define ACPI_USEC_PER_SEC 1000000L 5800d02842fSSascha Wildner 5810d02842fSSascha Wildner #define ACPI_100NSEC_PER_USEC 10L 5820d02842fSSascha Wildner #define ACPI_100NSEC_PER_MSEC 10000L 5830d02842fSSascha Wildner #define ACPI_100NSEC_PER_SEC 10000000L 5840d02842fSSascha Wildner 5850d02842fSSascha Wildner #define ACPI_NSEC_PER_USEC 1000L 5860d02842fSSascha Wildner #define ACPI_NSEC_PER_MSEC 1000000L 5870d02842fSSascha Wildner #define ACPI_NSEC_PER_SEC 1000000000L 5880d02842fSSascha Wildner 5897bcb6cafSSascha Wildner #define ACPI_TIME_AFTER(a, b) ((INT64)((b) - (a)) < 0) 5907bcb6cafSSascha Wildner 5910d02842fSSascha Wildner 5920d02842fSSascha Wildner /* Owner IDs are used to track namespace nodes for selective deletion */ 5930d02842fSSascha Wildner 594e5412f1eSSascha Wildner typedef UINT16 ACPI_OWNER_ID; 595e5412f1eSSascha Wildner #define ACPI_OWNER_ID_MAX 0xFFF /* 4095 possible owner IDs */ 5960d02842fSSascha Wildner 5970d02842fSSascha Wildner 5980d02842fSSascha Wildner #define ACPI_INTEGER_BIT_SIZE 64 5990d02842fSSascha Wildner #define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ 6000d02842fSSascha Wildner #define ACPI_MAX64_DECIMAL_DIGITS 20 6010d02842fSSascha Wildner #define ACPI_MAX32_DECIMAL_DIGITS 10 6020d02842fSSascha Wildner #define ACPI_MAX16_DECIMAL_DIGITS 5 6030d02842fSSascha Wildner #define ACPI_MAX8_DECIMAL_DIGITS 3 6040d02842fSSascha Wildner 6050d02842fSSascha Wildner /* 6060d02842fSSascha Wildner * Constants with special meanings 6070d02842fSSascha Wildner */ 6087bcb6cafSSascha Wildner #define ACPI_ROOT_OBJECT ((ACPI_HANDLE) ACPI_TO_POINTER (ACPI_MAX_PTR)) 6090d02842fSSascha Wildner #define ACPI_WAIT_FOREVER 0xFFFF /* UINT16, as per ACPI spec */ 6100d02842fSSascha Wildner #define ACPI_DO_NOT_WAIT 0 6110d02842fSSascha Wildner 6120d02842fSSascha Wildner /* 6131093ca81SSascha Wildner * Obsolete: Acpi integer width. In ACPI version 1 (1996), integers are 6141093ca81SSascha Wildner * 32 bits. In ACPI version 2 (2000) and later, integers are max 64 bits. 6151093ca81SSascha Wildner * Note that this pertains to the ACPI integer type only, not to other 6161093ca81SSascha Wildner * integers used in the implementation of the ACPICA subsystem. 6170d02842fSSascha Wildner * 6180d02842fSSascha Wildner * 01/2010: This type is obsolete and has been removed from the entire ACPICA 6190d02842fSSascha Wildner * code base. It remains here for compatibility with device drivers that use 6200d02842fSSascha Wildner * the type. However, it will be removed in the future. 6210d02842fSSascha Wildner */ 6220d02842fSSascha Wildner typedef UINT64 ACPI_INTEGER; 6230d02842fSSascha Wildner #define ACPI_INTEGER_MAX ACPI_UINT64_MAX 6240d02842fSSascha Wildner 6250d02842fSSascha Wildner 6260d02842fSSascha Wildner /******************************************************************************* 6270d02842fSSascha Wildner * 6280d02842fSSascha Wildner * Commonly used macros 6290d02842fSSascha Wildner * 6300d02842fSSascha Wildner ******************************************************************************/ 6310d02842fSSascha Wildner 6320d02842fSSascha Wildner /* Data manipulation */ 6330d02842fSSascha Wildner 6340d02842fSSascha Wildner #define ACPI_LOBYTE(Integer) ((UINT8) (UINT16)(Integer)) 6350d02842fSSascha Wildner #define ACPI_HIBYTE(Integer) ((UINT8) (((UINT16)(Integer)) >> 8)) 6360d02842fSSascha Wildner #define ACPI_LOWORD(Integer) ((UINT16) (UINT32)(Integer)) 6370d02842fSSascha Wildner #define ACPI_HIWORD(Integer) ((UINT16)(((UINT32)(Integer)) >> 16)) 6380d02842fSSascha Wildner #define ACPI_LODWORD(Integer64) ((UINT32) (UINT64)(Integer64)) 6390d02842fSSascha Wildner #define ACPI_HIDWORD(Integer64) ((UINT32)(((UINT64)(Integer64)) >> 32)) 6400d02842fSSascha Wildner 6410d02842fSSascha Wildner #define ACPI_SET_BIT(target,bit) ((target) |= (bit)) 6420d02842fSSascha Wildner #define ACPI_CLEAR_BIT(target,bit) ((target) &= ~(bit)) 6430d02842fSSascha Wildner #define ACPI_MIN(a,b) (((a)<(b))?(a):(b)) 6440d02842fSSascha Wildner #define ACPI_MAX(a,b) (((a)>(b))?(a):(b)) 6450d02842fSSascha Wildner 6460d02842fSSascha Wildner /* Size calculation */ 6470d02842fSSascha Wildner 6480d02842fSSascha Wildner #define ACPI_ARRAY_LENGTH(x) (sizeof(x) / sizeof((x)[0])) 6490d02842fSSascha Wildner 6500d02842fSSascha Wildner /* Pointer manipulation */ 6510d02842fSSascha Wildner 6520d02842fSSascha Wildner #define ACPI_CAST_PTR(t, p) ((t *) (ACPI_UINTPTR_T) (p)) 6530d02842fSSascha Wildner #define ACPI_CAST_INDIRECT_PTR(t, p) ((t **) (ACPI_UINTPTR_T) (p)) 6540d02842fSSascha Wildner #define ACPI_ADD_PTR(t, a, b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (UINT8, (a)) + (ACPI_SIZE)(b))) 655896f2e3aSSascha Wildner #define ACPI_SUB_PTR(t, a, b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (UINT8, (a)) - (ACPI_SIZE)(b))) 6567bcb6cafSSascha Wildner #define ACPI_PTR_DIFF(a, b) ((ACPI_SIZE) (ACPI_CAST_PTR (UINT8, (a)) - ACPI_CAST_PTR (UINT8, (b)))) 6570d02842fSSascha Wildner 6580d02842fSSascha Wildner /* Pointer/Integer type conversions */ 6590d02842fSSascha Wildner 660e5412f1eSSascha Wildner #define ACPI_TO_POINTER(i) ACPI_CAST_PTR (void, (ACPI_SIZE) (i)) 6617bcb6cafSSascha Wildner #define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p, (void *) 0) 6627bcb6cafSSascha Wildner #define ACPI_OFFSET(d, f) ACPI_PTR_DIFF (&(((d *) 0)->f), (void *) 0) 6630d02842fSSascha Wildner #define ACPI_PTR_TO_PHYSADDR(i) ACPI_TO_INTEGER(i) 6640d02842fSSascha Wildner 6650d02842fSSascha Wildner /* Optimizations for 4-character (32-bit) ACPI_NAME manipulation */ 6660d02842fSSascha Wildner 6670d02842fSSascha Wildner #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED 668c1776041SSascha Wildner #define ACPI_COMPARE_NAMESEG(a,b) (*ACPI_CAST_PTR (UINT32, (a)) == *ACPI_CAST_PTR (UINT32, (b))) 669c1776041SSascha Wildner #define ACPI_COPY_NAMESEG(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src))) 6700d02842fSSascha Wildner #else 671c1776041SSascha Wildner #define ACPI_COMPARE_NAMESEG(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAMESEG_SIZE)) 672c1776041SSascha Wildner #define ACPI_COPY_NAMESEG(dest,src) (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAMESEG_SIZE)) 6730d02842fSSascha Wildner #endif 6740d02842fSSascha Wildner 6750d02842fSSascha Wildner /* Support for the special RSDP signature (8 characters) */ 6760d02842fSSascha Wildner 67725ca8c79SSascha Wildner #define ACPI_VALIDATE_RSDP_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8)) 67825ca8c79SSascha Wildner #define ACPI_MAKE_RSDP_SIG(dest) (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8)) 6790d02842fSSascha Wildner 680ef944814SSascha Wildner /* Support for OEMx signature (x can be any character) */ 681ef944814SSascha Wildner #define ACPI_IS_OEM_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_OEM_NAME, 3) &&\ 682c1776041SSascha Wildner strnlen (a, ACPI_NAMESEG_SIZE) == ACPI_NAMESEG_SIZE) 683ef944814SSascha Wildner 6843c639e0cSSascha Wildner /* 685ff3cb46dSSascha Wildner * Algorithm to obtain access bit or byte width. 686ff3cb46dSSascha Wildner * Can be used with AccessSize field of ACPI_GENERIC_ADDRESS and 6873c639e0cSSascha Wildner * ACPI_RESOURCE_GENERIC_REGISTER. 6883c639e0cSSascha Wildner */ 689*aab122a6SSascha Wildner #define ACPI_ACCESS_BIT_SHIFT 2 690*aab122a6SSascha Wildner #define ACPI_ACCESS_BYTE_SHIFT -1 691*aab122a6SSascha Wildner #define ACPI_ACCESS_BIT_MAX (31 - ACPI_ACCESS_BIT_SHIFT) 692*aab122a6SSascha Wildner #define ACPI_ACCESS_BYTE_MAX (31 - ACPI_ACCESS_BYTE_SHIFT) 693*aab122a6SSascha Wildner #define ACPI_ACCESS_BIT_DEFAULT (8 - ACPI_ACCESS_BIT_SHIFT) 694*aab122a6SSascha Wildner #define ACPI_ACCESS_BYTE_DEFAULT (8 - ACPI_ACCESS_BYTE_SHIFT) 695*aab122a6SSascha Wildner #define ACPI_ACCESS_BIT_WIDTH(size) (1 << ((size) + ACPI_ACCESS_BIT_SHIFT)) 696*aab122a6SSascha Wildner #define ACPI_ACCESS_BYTE_WIDTH(size) (1 << ((size) + ACPI_ACCESS_BYTE_SHIFT)) 6970d02842fSSascha Wildner 6980d02842fSSascha Wildner /******************************************************************************* 6990d02842fSSascha Wildner * 7000d02842fSSascha Wildner * Miscellaneous constants 7010d02842fSSascha Wildner * 7020d02842fSSascha Wildner ******************************************************************************/ 7030d02842fSSascha Wildner 7040d02842fSSascha Wildner /* 7057bcb6cafSSascha Wildner * Initialization sequence options 7060d02842fSSascha Wildner */ 7077bcb6cafSSascha Wildner #define ACPI_FULL_INITIALIZATION 0x0000 7087bcb6cafSSascha Wildner #define ACPI_NO_FACS_INIT 0x0001 7097bcb6cafSSascha Wildner #define ACPI_NO_ACPI_ENABLE 0x0002 7107bcb6cafSSascha Wildner #define ACPI_NO_HARDWARE_INIT 0x0004 7117bcb6cafSSascha Wildner #define ACPI_NO_EVENT_INIT 0x0008 7127bcb6cafSSascha Wildner #define ACPI_NO_HANDLER_INIT 0x0010 7137bcb6cafSSascha Wildner #define ACPI_NO_OBJECT_INIT 0x0020 7147bcb6cafSSascha Wildner #define ACPI_NO_DEVICE_INIT 0x0040 7157bcb6cafSSascha Wildner #define ACPI_NO_ADDRESS_SPACE_INIT 0x0080 7160d02842fSSascha Wildner 7170d02842fSSascha Wildner /* 7180d02842fSSascha Wildner * Initialization state 7190d02842fSSascha Wildner */ 7200d02842fSSascha Wildner #define ACPI_SUBSYSTEM_INITIALIZE 0x01 7210d02842fSSascha Wildner #define ACPI_INITIALIZED_OK 0x02 7220d02842fSSascha Wildner 7230d02842fSSascha Wildner /* 7240d02842fSSascha Wildner * Power state values 7250d02842fSSascha Wildner */ 7260d02842fSSascha Wildner #define ACPI_STATE_UNKNOWN (UINT8) 0xFF 7270d02842fSSascha Wildner 7280d02842fSSascha Wildner #define ACPI_STATE_S0 (UINT8) 0 7290d02842fSSascha Wildner #define ACPI_STATE_S1 (UINT8) 1 7300d02842fSSascha Wildner #define ACPI_STATE_S2 (UINT8) 2 7310d02842fSSascha Wildner #define ACPI_STATE_S3 (UINT8) 3 7320d02842fSSascha Wildner #define ACPI_STATE_S4 (UINT8) 4 7330d02842fSSascha Wildner #define ACPI_STATE_S5 (UINT8) 5 7340d02842fSSascha Wildner #define ACPI_S_STATES_MAX ACPI_STATE_S5 7350d02842fSSascha Wildner #define ACPI_S_STATE_COUNT 6 7360d02842fSSascha Wildner 7370d02842fSSascha Wildner #define ACPI_STATE_D0 (UINT8) 0 7380d02842fSSascha Wildner #define ACPI_STATE_D1 (UINT8) 1 7390d02842fSSascha Wildner #define ACPI_STATE_D2 (UINT8) 2 7400d02842fSSascha Wildner #define ACPI_STATE_D3 (UINT8) 3 7410d02842fSSascha Wildner #define ACPI_D_STATES_MAX ACPI_STATE_D3 7420d02842fSSascha Wildner #define ACPI_D_STATE_COUNT 4 7430d02842fSSascha Wildner 7440d02842fSSascha Wildner #define ACPI_STATE_C0 (UINT8) 0 7450d02842fSSascha Wildner #define ACPI_STATE_C1 (UINT8) 1 7460d02842fSSascha Wildner #define ACPI_STATE_C2 (UINT8) 2 7470d02842fSSascha Wildner #define ACPI_STATE_C3 (UINT8) 3 7480d02842fSSascha Wildner #define ACPI_C_STATES_MAX ACPI_STATE_C3 7490d02842fSSascha Wildner #define ACPI_C_STATE_COUNT 4 7500d02842fSSascha Wildner 7510d02842fSSascha Wildner /* 7520d02842fSSascha Wildner * Sleep type invalid value 7530d02842fSSascha Wildner */ 7540d02842fSSascha Wildner #define ACPI_SLEEP_TYPE_MAX 0x7 7550d02842fSSascha Wildner #define ACPI_SLEEP_TYPE_INVALID 0xFF 7560d02842fSSascha Wildner 7570d02842fSSascha Wildner /* 7580d02842fSSascha Wildner * Standard notify values 7590d02842fSSascha Wildner */ 7600d02842fSSascha Wildner #define ACPI_NOTIFY_BUS_CHECK (UINT8) 0x00 7610d02842fSSascha Wildner #define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 0x01 7620d02842fSSascha Wildner #define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 0x02 7630d02842fSSascha Wildner #define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 0x03 7640d02842fSSascha Wildner #define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 0x04 7650d02842fSSascha Wildner #define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 0x05 7660d02842fSSascha Wildner #define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 0x06 7670d02842fSSascha Wildner #define ACPI_NOTIFY_POWER_FAULT (UINT8) 0x07 7680d02842fSSascha Wildner #define ACPI_NOTIFY_CAPABILITIES_CHECK (UINT8) 0x08 7690d02842fSSascha Wildner #define ACPI_NOTIFY_DEVICE_PLD_CHECK (UINT8) 0x09 7700d02842fSSascha Wildner #define ACPI_NOTIFY_RESERVED (UINT8) 0x0A 7710d02842fSSascha Wildner #define ACPI_NOTIFY_LOCALITY_UPDATE (UINT8) 0x0B 7720d02842fSSascha Wildner #define ACPI_NOTIFY_SHUTDOWN_REQUEST (UINT8) 0x0C 773066b6da2SSascha Wildner #define ACPI_NOTIFY_AFFINITY_UPDATE (UINT8) 0x0D 7741093ca81SSascha Wildner #define ACPI_NOTIFY_MEMORY_UPDATE (UINT8) 0x0E 77500ffa116SSascha Wildner #define ACPI_NOTIFY_DISCONNECT_RECOVER (UINT8) 0x0F 7760d02842fSSascha Wildner 77700ffa116SSascha Wildner #define ACPI_GENERIC_NOTIFY_MAX 0x0F 7787c9678bcSSascha Wildner #define ACPI_SPECIFIC_NOTIFY_MAX 0x84 7790d02842fSSascha Wildner 7800d02842fSSascha Wildner /* 7810d02842fSSascha Wildner * Types associated with ACPI names and objects. The first group of 7820d02842fSSascha Wildner * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition 7830d02842fSSascha Wildner * of the ACPI ObjectType() operator (See the ACPI Spec). Therefore, 7840d02842fSSascha Wildner * only add to the first group if the spec changes. 7850d02842fSSascha Wildner * 7860d02842fSSascha Wildner * NOTE: Types must be kept in sync with the global AcpiNsProperties 7870d02842fSSascha Wildner * and AcpiNsTypeNames arrays. 7880d02842fSSascha Wildner */ 7890d02842fSSascha Wildner typedef UINT32 ACPI_OBJECT_TYPE; 7900d02842fSSascha Wildner 7910d02842fSSascha Wildner #define ACPI_TYPE_ANY 0x00 7920d02842fSSascha Wildner #define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ 7930d02842fSSascha Wildner #define ACPI_TYPE_STRING 0x02 7940d02842fSSascha Wildner #define ACPI_TYPE_BUFFER 0x03 7950d02842fSSascha Wildner #define ACPI_TYPE_PACKAGE 0x04 /* ByteConst, multiple DataTerm/Constant/SuperName */ 7960d02842fSSascha Wildner #define ACPI_TYPE_FIELD_UNIT 0x05 7970d02842fSSascha Wildner #define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ 7980d02842fSSascha Wildner #define ACPI_TYPE_EVENT 0x07 7990d02842fSSascha Wildner #define ACPI_TYPE_METHOD 0x08 /* Name, ByteConst, multiple Code */ 8000d02842fSSascha Wildner #define ACPI_TYPE_MUTEX 0x09 8010d02842fSSascha Wildner #define ACPI_TYPE_REGION 0x0A 8020d02842fSSascha Wildner #define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */ 8030d02842fSSascha Wildner #define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */ 8040d02842fSSascha Wildner #define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ 8050d02842fSSascha Wildner #define ACPI_TYPE_BUFFER_FIELD 0x0E 8060d02842fSSascha Wildner #define ACPI_TYPE_DDB_HANDLE 0x0F 8070d02842fSSascha Wildner #define ACPI_TYPE_DEBUG_OBJECT 0x10 8080d02842fSSascha Wildner 8090d02842fSSascha Wildner #define ACPI_TYPE_EXTERNAL_MAX 0x10 8103cc0afc6SSascha Wildner #define ACPI_NUM_TYPES (ACPI_TYPE_EXTERNAL_MAX + 1) 8110d02842fSSascha Wildner 8120d02842fSSascha Wildner /* 8130d02842fSSascha Wildner * These are object types that do not map directly to the ACPI 8141093ca81SSascha Wildner * ObjectType() operator. They are used for various internal purposes 8151093ca81SSascha Wildner * only. If new predefined ACPI_TYPEs are added (via the ACPI 8161093ca81SSascha Wildner * specification), these internal types must move upwards. (There 8171093ca81SSascha Wildner * is code that depends on these values being contiguous with the 8181093ca81SSascha Wildner * external types above.) 8190d02842fSSascha Wildner */ 8200d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 8210d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 8220d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 8230d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */ 8240d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_ALIAS 0x15 8250d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 8260d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_NOTIFY 0x17 8270d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 8280d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_RESOURCE 0x19 8290d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A 8300d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple ObjectList Nodes */ 8310d02842fSSascha Wildner 8320d02842fSSascha Wildner #define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ 8333cc0afc6SSascha Wildner #define ACPI_TOTAL_TYPES (ACPI_TYPE_NS_NODE_MAX + 1) 8340d02842fSSascha Wildner 8350d02842fSSascha Wildner /* 8360d02842fSSascha Wildner * These are special object types that never appear in 8370d02842fSSascha Wildner * a Namespace node, only in an object of ACPI_OPERAND_OBJECT 8380d02842fSSascha Wildner */ 8390d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_EXTRA 0x1C 8400d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_DATA 0x1D 8410d02842fSSascha Wildner 8420d02842fSSascha Wildner #define ACPI_TYPE_LOCAL_MAX 0x1D 8430d02842fSSascha Wildner 8440d02842fSSascha Wildner /* All types above here are invalid */ 8450d02842fSSascha Wildner 8460d02842fSSascha Wildner #define ACPI_TYPE_INVALID 0x1E 8470d02842fSSascha Wildner #define ACPI_TYPE_NOT_FOUND 0xFF 8480d02842fSSascha Wildner 8490d02842fSSascha Wildner #define ACPI_NUM_NS_TYPES (ACPI_TYPE_INVALID + 1) 8500d02842fSSascha Wildner 8510d02842fSSascha Wildner 8520d02842fSSascha Wildner /* 8530d02842fSSascha Wildner * All I/O 8540d02842fSSascha Wildner */ 8550d02842fSSascha Wildner #define ACPI_READ 0 8560d02842fSSascha Wildner #define ACPI_WRITE 1 8570d02842fSSascha Wildner #define ACPI_IO_MASK 1 8580d02842fSSascha Wildner 8590d02842fSSascha Wildner /* 8600d02842fSSascha Wildner * Event Types: Fixed & General Purpose 8610d02842fSSascha Wildner */ 8620d02842fSSascha Wildner typedef UINT32 ACPI_EVENT_TYPE; 8630d02842fSSascha Wildner 8640d02842fSSascha Wildner /* 8650d02842fSSascha Wildner * Fixed events 8660d02842fSSascha Wildner */ 8670d02842fSSascha Wildner #define ACPI_EVENT_PMTIMER 0 8680d02842fSSascha Wildner #define ACPI_EVENT_GLOBAL 1 8690d02842fSSascha Wildner #define ACPI_EVENT_POWER_BUTTON 2 8700d02842fSSascha Wildner #define ACPI_EVENT_SLEEP_BUTTON 3 8710d02842fSSascha Wildner #define ACPI_EVENT_RTC 4 8720d02842fSSascha Wildner #define ACPI_EVENT_MAX 4 8730d02842fSSascha Wildner #define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 8740d02842fSSascha Wildner 8750d02842fSSascha Wildner /* 8760d02842fSSascha Wildner * Event Status - Per event 8770d02842fSSascha Wildner * ------------- 8780d02842fSSascha Wildner * The encoding of ACPI_EVENT_STATUS is illustrated below. 8790d02842fSSascha Wildner * Note that a set bit (1) indicates the property is TRUE 8800d02842fSSascha Wildner * (e.g. if bit 0 is set then the event is enabled). 881e5e174adSSascha Wildner * +-------------+-+-+-+-+-+-+ 882e5e174adSSascha Wildner * | Bits 31:6 |5|4|3|2|1|0| 883e5e174adSSascha Wildner * +-------------+-+-+-+-+-+-+ 884e5e174adSSascha Wildner * | | | | | | | 885e5e174adSSascha Wildner * | | | | | | +- Enabled? 886e5e174adSSascha Wildner * | | | | | +--- Enabled for wake? 887e5e174adSSascha Wildner * | | | | +----- Status bit set? 888e5e174adSSascha Wildner * | | | +------- Enable bit set? 889e5e174adSSascha Wildner * | | +--------- Has a handler? 890e5e174adSSascha Wildner * | +----------- Masked? 891e5e174adSSascha Wildner * +----------------- <Reserved> 8920d02842fSSascha Wildner */ 8930d02842fSSascha Wildner typedef UINT32 ACPI_EVENT_STATUS; 8940d02842fSSascha Wildner 8950d02842fSSascha Wildner #define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 8960d02842fSSascha Wildner #define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 8970d02842fSSascha Wildner #define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02 8985943f66cSSascha Wildner #define ACPI_EVENT_FLAG_STATUS_SET (ACPI_EVENT_STATUS) 0x04 8995943f66cSSascha Wildner #define ACPI_EVENT_FLAG_ENABLE_SET (ACPI_EVENT_STATUS) 0x08 9005943f66cSSascha Wildner #define ACPI_EVENT_FLAG_HAS_HANDLER (ACPI_EVENT_STATUS) 0x10 901e5e174adSSascha Wildner #define ACPI_EVENT_FLAG_MASKED (ACPI_EVENT_STATUS) 0x20 9025943f66cSSascha Wildner #define ACPI_EVENT_FLAG_SET ACPI_EVENT_FLAG_STATUS_SET 9030d02842fSSascha Wildner 9040d02842fSSascha Wildner /* Actions for AcpiSetGpe, AcpiGpeWakeup, AcpiHwLowSetGpe */ 9050d02842fSSascha Wildner 9060d02842fSSascha Wildner #define ACPI_GPE_ENABLE 0 9070d02842fSSascha Wildner #define ACPI_GPE_DISABLE 1 9080d02842fSSascha Wildner #define ACPI_GPE_CONDITIONAL_ENABLE 2 9090d02842fSSascha Wildner 9100d02842fSSascha Wildner /* 9110d02842fSSascha Wildner * GPE info flags - Per GPE 912e5e174adSSascha Wildner * +---+-+-+-+---+ 913e5e174adSSascha Wildner * |7:6|5|4|3|2:0| 914e5e174adSSascha Wildner * +---+-+-+-+---+ 915e5e174adSSascha Wildner * | | | | | 916e5e174adSSascha Wildner * | | | | +-- Type of dispatch:to method, handler, notify, or none 917e5e174adSSascha Wildner * | | | +----- Interrupt type: edge or level triggered 918e5e174adSSascha Wildner * | | +------- Is a Wake GPE 9197bcb6cafSSascha Wildner * | +--------- Has been enabled automatically at init time 9200d02842fSSascha Wildner * +------------ <Reserved> 9210d02842fSSascha Wildner */ 9220d02842fSSascha Wildner #define ACPI_GPE_DISPATCH_NONE (UINT8) 0x00 9230d02842fSSascha Wildner #define ACPI_GPE_DISPATCH_METHOD (UINT8) 0x01 9240d02842fSSascha Wildner #define ACPI_GPE_DISPATCH_HANDLER (UINT8) 0x02 9250d02842fSSascha Wildner #define ACPI_GPE_DISPATCH_NOTIFY (UINT8) 0x03 926fe7b5cb4SSascha Wildner #define ACPI_GPE_DISPATCH_RAW_HANDLER (UINT8) 0x04 927fe7b5cb4SSascha Wildner #define ACPI_GPE_DISPATCH_MASK (UINT8) 0x07 928fe7b5cb4SSascha Wildner #define ACPI_GPE_DISPATCH_TYPE(flags) ((UINT8) ((flags) & ACPI_GPE_DISPATCH_MASK)) 9290d02842fSSascha Wildner 930fe7b5cb4SSascha Wildner #define ACPI_GPE_LEVEL_TRIGGERED (UINT8) 0x08 9310d02842fSSascha Wildner #define ACPI_GPE_EDGE_TRIGGERED (UINT8) 0x00 932fe7b5cb4SSascha Wildner #define ACPI_GPE_XRUPT_TYPE_MASK (UINT8) 0x08 9330d02842fSSascha Wildner 934fe7b5cb4SSascha Wildner #define ACPI_GPE_CAN_WAKE (UINT8) 0x10 9357bcb6cafSSascha Wildner #define ACPI_GPE_AUTO_ENABLED (UINT8) 0x20 9367bcb6cafSSascha Wildner #define ACPI_GPE_INITIALIZED (UINT8) 0x40 9370d02842fSSascha Wildner 9380d02842fSSascha Wildner /* 9390d02842fSSascha Wildner * Flags for GPE and Lock interfaces 9400d02842fSSascha Wildner */ 9410d02842fSSascha Wildner #define ACPI_NOT_ISR 0x1 9420d02842fSSascha Wildner #define ACPI_ISR 0x0 9430d02842fSSascha Wildner 9440d02842fSSascha Wildner 9450d02842fSSascha Wildner /* Notify types */ 9460d02842fSSascha Wildner 9470d02842fSSascha Wildner #define ACPI_SYSTEM_NOTIFY 0x1 9480d02842fSSascha Wildner #define ACPI_DEVICE_NOTIFY 0x2 9490d02842fSSascha Wildner #define ACPI_ALL_NOTIFY (ACPI_SYSTEM_NOTIFY | ACPI_DEVICE_NOTIFY) 9500d02842fSSascha Wildner #define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3 9510d02842fSSascha Wildner #define ACPI_NUM_NOTIFY_TYPES 2 9520d02842fSSascha Wildner 9530d02842fSSascha Wildner #define ACPI_MAX_SYS_NOTIFY 0x7F 9540d02842fSSascha Wildner #define ACPI_MAX_DEVICE_SPECIFIC_NOTIFY 0xBF 9550d02842fSSascha Wildner 9560d02842fSSascha Wildner #define ACPI_SYSTEM_HANDLER_LIST 0 /* Used as index, must be SYSTEM_NOTIFY -1 */ 9570d02842fSSascha Wildner #define ACPI_DEVICE_HANDLER_LIST 1 /* Used as index, must be DEVICE_NOTIFY -1 */ 9580d02842fSSascha Wildner 9590d02842fSSascha Wildner 9600d02842fSSascha Wildner /* Address Space (Operation Region) Types */ 9610d02842fSSascha Wildner 9620d02842fSSascha Wildner typedef UINT8 ACPI_ADR_SPACE_TYPE; 9630d02842fSSascha Wildner 9640d02842fSSascha Wildner #define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0 9650d02842fSSascha Wildner #define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1 9660d02842fSSascha Wildner #define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2 9670d02842fSSascha Wildner #define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3 9680d02842fSSascha Wildner #define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 9690d02842fSSascha Wildner #define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 9700d02842fSSascha Wildner #define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 9710d02842fSSascha Wildner #define ACPI_ADR_SPACE_IPMI (ACPI_ADR_SPACE_TYPE) 7 9720d02842fSSascha Wildner #define ACPI_ADR_SPACE_GPIO (ACPI_ADR_SPACE_TYPE) 8 9730d02842fSSascha Wildner #define ACPI_ADR_SPACE_GSBUS (ACPI_ADR_SPACE_TYPE) 9 9740d02842fSSascha Wildner #define ACPI_ADR_SPACE_PLATFORM_COMM (ACPI_ADR_SPACE_TYPE) 10 975d0dff17aSSascha Wildner #define ACPI_ADR_SPACE_PLATFORM_RT (ACPI_ADR_SPACE_TYPE) 11 9760d02842fSSascha Wildner 977d0dff17aSSascha Wildner #define ACPI_NUM_PREDEFINED_REGIONS 12 9780d02842fSSascha Wildner 9790d02842fSSascha Wildner /* 9800d02842fSSascha Wildner * Special Address Spaces 9810d02842fSSascha Wildner * 9820d02842fSSascha Wildner * Note: A Data Table region is a special type of operation region 9830d02842fSSascha Wildner * that has its own AML opcode. However, internally, the AML 984c5a52fd3SSascha Wildner * interpreter simply creates an operation region with an address 9850d02842fSSascha Wildner * space type of ACPI_ADR_SPACE_DATA_TABLE. 9860d02842fSSascha Wildner */ 9870d02842fSSascha Wildner #define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 0x7E /* Internal to ACPICA only */ 9880d02842fSSascha Wildner #define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 0x7F 9890d02842fSSascha Wildner 9900d02842fSSascha Wildner /* Values for _REG connection code */ 9910d02842fSSascha Wildner 9920d02842fSSascha Wildner #define ACPI_REG_DISCONNECT 0 9930d02842fSSascha Wildner #define ACPI_REG_CONNECT 1 9940d02842fSSascha Wildner 9950d02842fSSascha Wildner /* 9960d02842fSSascha Wildner * BitRegister IDs 9970d02842fSSascha Wildner * 9980d02842fSSascha Wildner * These values are intended to be used by the hardware interfaces 9990d02842fSSascha Wildner * and are mapped to individual bitfields defined within the ACPI 10000d02842fSSascha Wildner * registers. See the AcpiGbl_BitRegisterInfo global table in utglobal.c 10010d02842fSSascha Wildner * for this mapping. 10020d02842fSSascha Wildner */ 10030d02842fSSascha Wildner 10040d02842fSSascha Wildner /* PM1 Status register */ 10050d02842fSSascha Wildner 10060d02842fSSascha Wildner #define ACPI_BITREG_TIMER_STATUS 0x00 10070d02842fSSascha Wildner #define ACPI_BITREG_BUS_MASTER_STATUS 0x01 10080d02842fSSascha Wildner #define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 10090d02842fSSascha Wildner #define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 10100d02842fSSascha Wildner #define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 10110d02842fSSascha Wildner #define ACPI_BITREG_RT_CLOCK_STATUS 0x05 10120d02842fSSascha Wildner #define ACPI_BITREG_WAKE_STATUS 0x06 10130d02842fSSascha Wildner #define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07 10140d02842fSSascha Wildner 10150d02842fSSascha Wildner /* PM1 Enable register */ 10160d02842fSSascha Wildner 10170d02842fSSascha Wildner #define ACPI_BITREG_TIMER_ENABLE 0x08 10180d02842fSSascha Wildner #define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09 10190d02842fSSascha Wildner #define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A 10200d02842fSSascha Wildner #define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B 10210d02842fSSascha Wildner #define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C 10220d02842fSSascha Wildner #define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0D 10230d02842fSSascha Wildner 10240d02842fSSascha Wildner /* PM1 Control register */ 10250d02842fSSascha Wildner 10260d02842fSSascha Wildner #define ACPI_BITREG_SCI_ENABLE 0x0E 10270d02842fSSascha Wildner #define ACPI_BITREG_BUS_MASTER_RLD 0x0F 10280d02842fSSascha Wildner #define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x10 10290d02842fSSascha Wildner #define ACPI_BITREG_SLEEP_TYPE 0x11 10300d02842fSSascha Wildner #define ACPI_BITREG_SLEEP_ENABLE 0x12 10310d02842fSSascha Wildner 10320d02842fSSascha Wildner /* PM2 Control register */ 10330d02842fSSascha Wildner 10340d02842fSSascha Wildner #define ACPI_BITREG_ARB_DISABLE 0x13 10350d02842fSSascha Wildner 10360d02842fSSascha Wildner #define ACPI_BITREG_MAX 0x13 10370d02842fSSascha Wildner #define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 10380d02842fSSascha Wildner 10390d02842fSSascha Wildner 10400d02842fSSascha Wildner /* Status register values. A 1 clears a status bit. 0 = no effect */ 10410d02842fSSascha Wildner 10420d02842fSSascha Wildner #define ACPI_CLEAR_STATUS 1 10430d02842fSSascha Wildner 10440d02842fSSascha Wildner /* Enable and Control register values */ 10450d02842fSSascha Wildner 10460d02842fSSascha Wildner #define ACPI_ENABLE_EVENT 1 10470d02842fSSascha Wildner #define ACPI_DISABLE_EVENT 0 10480d02842fSSascha Wildner 10490d02842fSSascha Wildner 10500d02842fSSascha Wildner /* Sleep function dispatch */ 10510d02842fSSascha Wildner 10520d02842fSSascha Wildner typedef ACPI_STATUS (*ACPI_SLEEP_FUNCTION) ( 10530d02842fSSascha Wildner UINT8 SleepState); 10540d02842fSSascha Wildner 10550d02842fSSascha Wildner typedef struct acpi_sleep_functions 10560d02842fSSascha Wildner { 10570d02842fSSascha Wildner ACPI_SLEEP_FUNCTION LegacyFunction; 10580d02842fSSascha Wildner ACPI_SLEEP_FUNCTION ExtendedFunction; 10590d02842fSSascha Wildner 10600d02842fSSascha Wildner } ACPI_SLEEP_FUNCTIONS; 10610d02842fSSascha Wildner 10620d02842fSSascha Wildner 10630d02842fSSascha Wildner /* 10640d02842fSSascha Wildner * External ACPI object definition 10650d02842fSSascha Wildner */ 10660d02842fSSascha Wildner 10670d02842fSSascha Wildner /* 10681093ca81SSascha Wildner * Note: Type == ACPI_TYPE_ANY (0) is used to indicate a NULL package 10691093ca81SSascha Wildner * element or an unresolved named reference. 10700d02842fSSascha Wildner */ 10710d02842fSSascha Wildner typedef union acpi_object 10720d02842fSSascha Wildner { 10730d02842fSSascha Wildner ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ 10740d02842fSSascha Wildner struct 10750d02842fSSascha Wildner { 10760d02842fSSascha Wildner ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_INTEGER */ 10770d02842fSSascha Wildner UINT64 Value; /* The actual number */ 10780d02842fSSascha Wildner } Integer; 10790d02842fSSascha Wildner 10800d02842fSSascha Wildner struct 10810d02842fSSascha Wildner { 10820d02842fSSascha Wildner ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_STRING */ 10830d02842fSSascha Wildner UINT32 Length; /* # of bytes in string, excluding trailing null */ 10840d02842fSSascha Wildner char *Pointer; /* points to the string value */ 10850d02842fSSascha Wildner } String; 10860d02842fSSascha Wildner 10870d02842fSSascha Wildner struct 10880d02842fSSascha Wildner { 10890d02842fSSascha Wildner ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_BUFFER */ 10900d02842fSSascha Wildner UINT32 Length; /* # of bytes in buffer */ 10910d02842fSSascha Wildner UINT8 *Pointer; /* points to the buffer */ 10920d02842fSSascha Wildner } Buffer; 10930d02842fSSascha Wildner 10940d02842fSSascha Wildner struct 10950d02842fSSascha Wildner { 10960d02842fSSascha Wildner ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PACKAGE */ 10970d02842fSSascha Wildner UINT32 Count; /* # of elements in package */ 10980d02842fSSascha Wildner union acpi_object *Elements; /* Pointer to an array of ACPI_OBJECTs */ 10990d02842fSSascha Wildner } Package; 11000d02842fSSascha Wildner 11010d02842fSSascha Wildner struct 11020d02842fSSascha Wildner { 11030d02842fSSascha Wildner ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_LOCAL_REFERENCE */ 11040d02842fSSascha Wildner ACPI_OBJECT_TYPE ActualType; /* Type associated with the Handle */ 11050d02842fSSascha Wildner ACPI_HANDLE Handle; /* object reference */ 11060d02842fSSascha Wildner } Reference; 11070d02842fSSascha Wildner 11080d02842fSSascha Wildner struct 11090d02842fSSascha Wildner { 11100d02842fSSascha Wildner ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PROCESSOR */ 11110d02842fSSascha Wildner UINT32 ProcId; 11120d02842fSSascha Wildner ACPI_IO_ADDRESS PblkAddress; 11130d02842fSSascha Wildner UINT32 PblkLength; 11140d02842fSSascha Wildner } Processor; 11150d02842fSSascha Wildner 11160d02842fSSascha Wildner struct 11170d02842fSSascha Wildner { 11180d02842fSSascha Wildner ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_POWER */ 11190d02842fSSascha Wildner UINT32 SystemLevel; 11200d02842fSSascha Wildner UINT32 ResourceOrder; 11210d02842fSSascha Wildner } PowerResource; 11220d02842fSSascha Wildner 11230d02842fSSascha Wildner } ACPI_OBJECT; 11240d02842fSSascha Wildner 11250d02842fSSascha Wildner 11260d02842fSSascha Wildner /* 11270d02842fSSascha Wildner * List of objects, used as a parameter list for control method evaluation 11280d02842fSSascha Wildner */ 11290d02842fSSascha Wildner typedef struct acpi_object_list 11300d02842fSSascha Wildner { 11310d02842fSSascha Wildner UINT32 Count; 11320d02842fSSascha Wildner ACPI_OBJECT *Pointer; 11330d02842fSSascha Wildner 11340d02842fSSascha Wildner } ACPI_OBJECT_LIST; 11350d02842fSSascha Wildner 11360d02842fSSascha Wildner 11370d02842fSSascha Wildner /* 11380d02842fSSascha Wildner * Miscellaneous common Data Structures used by the interfaces 11390d02842fSSascha Wildner */ 11400d02842fSSascha Wildner #define ACPI_NO_BUFFER 0 11419e1c0880SSascha Wildner 11429e1c0880SSascha Wildner #ifdef ACPI_NO_MEM_ALLOCATIONS 11439e1c0880SSascha Wildner 11449e1c0880SSascha Wildner #define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (0) 11459e1c0880SSascha Wildner #define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (0) 11469e1c0880SSascha Wildner 11479e1c0880SSascha Wildner #else /* ACPI_NO_MEM_ALLOCATIONS */ 11489e1c0880SSascha Wildner 11490d02842fSSascha Wildner #define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) /* Let ACPICA allocate buffer */ 11500d02842fSSascha Wildner #define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) /* For internal use only (enables tracking) */ 11510d02842fSSascha Wildner 11529e1c0880SSascha Wildner #endif /* ACPI_NO_MEM_ALLOCATIONS */ 11539e1c0880SSascha Wildner 11540d02842fSSascha Wildner typedef struct acpi_buffer 11550d02842fSSascha Wildner { 11560d02842fSSascha Wildner ACPI_SIZE Length; /* Length in bytes of the buffer */ 11570d02842fSSascha Wildner void *Pointer; /* pointer to buffer */ 11580d02842fSSascha Wildner 11590d02842fSSascha Wildner } ACPI_BUFFER; 11600d02842fSSascha Wildner 11610d02842fSSascha Wildner 11620d02842fSSascha Wildner /* 11630d02842fSSascha Wildner * NameType for AcpiGetName 11640d02842fSSascha Wildner */ 11650d02842fSSascha Wildner #define ACPI_FULL_PATHNAME 0 11660d02842fSSascha Wildner #define ACPI_SINGLE_NAME 1 1167267c04fdSSascha Wildner #define ACPI_FULL_PATHNAME_NO_TRAILING 2 1168267c04fdSSascha Wildner #define ACPI_NAME_TYPE_MAX 2 11690d02842fSSascha Wildner 11700d02842fSSascha Wildner 11710d02842fSSascha Wildner /* 11720d02842fSSascha Wildner * Predefined Namespace items 11730d02842fSSascha Wildner */ 11740d02842fSSascha Wildner typedef struct acpi_predefined_names 11750d02842fSSascha Wildner { 11762ffe9f16SSascha Wildner const char *Name; 11770d02842fSSascha Wildner UINT8 Type; 11780d02842fSSascha Wildner char *Val; 11790d02842fSSascha Wildner 11800d02842fSSascha Wildner } ACPI_PREDEFINED_NAMES; 11810d02842fSSascha Wildner 11820d02842fSSascha Wildner 11830d02842fSSascha Wildner /* 11840d02842fSSascha Wildner * Structure and flags for AcpiGetSystemInfo 11850d02842fSSascha Wildner */ 11860d02842fSSascha Wildner #define ACPI_SYS_MODE_UNKNOWN 0x0000 11870d02842fSSascha Wildner #define ACPI_SYS_MODE_ACPI 0x0001 11880d02842fSSascha Wildner #define ACPI_SYS_MODE_LEGACY 0x0002 11890d02842fSSascha Wildner #define ACPI_SYS_MODES_MASK 0x0003 11900d02842fSSascha Wildner 11910d02842fSSascha Wildner 11920d02842fSSascha Wildner /* 11930d02842fSSascha Wildner * System info returned by AcpiGetSystemInfo() 11940d02842fSSascha Wildner */ 11950d02842fSSascha Wildner typedef struct acpi_system_info 11960d02842fSSascha Wildner { 11970d02842fSSascha Wildner UINT32 AcpiCaVersion; 11980d02842fSSascha Wildner UINT32 Flags; 11990d02842fSSascha Wildner UINT32 TimerResolution; 12000d02842fSSascha Wildner UINT32 Reserved1; 12010d02842fSSascha Wildner UINT32 Reserved2; 12020d02842fSSascha Wildner UINT32 DebugLevel; 12030d02842fSSascha Wildner UINT32 DebugLayer; 12040d02842fSSascha Wildner 12050d02842fSSascha Wildner } ACPI_SYSTEM_INFO; 12060d02842fSSascha Wildner 12070d02842fSSascha Wildner 12080d02842fSSascha Wildner /* 12090d02842fSSascha Wildner * System statistics returned by AcpiGetStatistics() 12100d02842fSSascha Wildner */ 12110d02842fSSascha Wildner typedef struct acpi_statistics 12120d02842fSSascha Wildner { 12130d02842fSSascha Wildner UINT32 SciCount; 12140d02842fSSascha Wildner UINT32 GpeCount; 12150d02842fSSascha Wildner UINT32 FixedEventCount[ACPI_NUM_FIXED_EVENTS]; 12160d02842fSSascha Wildner UINT32 MethodCount; 12170d02842fSSascha Wildner 12180d02842fSSascha Wildner } ACPI_STATISTICS; 12190d02842fSSascha Wildner 12200d02842fSSascha Wildner 12210d02842fSSascha Wildner /* 12220d02842fSSascha Wildner * Types specific to the OS service interfaces 12230d02842fSSascha Wildner */ 12240d02842fSSascha Wildner typedef UINT32 12250d02842fSSascha Wildner (ACPI_SYSTEM_XFACE *ACPI_OSD_HANDLER) ( 12260d02842fSSascha Wildner void *Context); 12270d02842fSSascha Wildner 12280d02842fSSascha Wildner typedef void 12290d02842fSSascha Wildner (ACPI_SYSTEM_XFACE *ACPI_OSD_EXEC_CALLBACK) ( 12300d02842fSSascha Wildner void *Context); 12310d02842fSSascha Wildner 12320d02842fSSascha Wildner /* 12330d02842fSSascha Wildner * Various handlers and callback procedures 12340d02842fSSascha Wildner */ 12350d02842fSSascha Wildner typedef 12360d02842fSSascha Wildner UINT32 (*ACPI_SCI_HANDLER) ( 12370d02842fSSascha Wildner void *Context); 12380d02842fSSascha Wildner 12390d02842fSSascha Wildner typedef 12400d02842fSSascha Wildner void (*ACPI_GBL_EVENT_HANDLER) ( 12410d02842fSSascha Wildner UINT32 EventType, 12420d02842fSSascha Wildner ACPI_HANDLE Device, 12430d02842fSSascha Wildner UINT32 EventNumber, 12440d02842fSSascha Wildner void *Context); 12450d02842fSSascha Wildner 12460d02842fSSascha Wildner #define ACPI_EVENT_TYPE_GPE 0 12470d02842fSSascha Wildner #define ACPI_EVENT_TYPE_FIXED 1 12480d02842fSSascha Wildner 12490d02842fSSascha Wildner typedef 12500d02842fSSascha Wildner UINT32 (*ACPI_EVENT_HANDLER) ( 12510d02842fSSascha Wildner void *Context); 12520d02842fSSascha Wildner 12530d02842fSSascha Wildner typedef 12540d02842fSSascha Wildner UINT32 (*ACPI_GPE_HANDLER) ( 12550d02842fSSascha Wildner ACPI_HANDLE GpeDevice, 12560d02842fSSascha Wildner UINT32 GpeNumber, 12570d02842fSSascha Wildner void *Context); 12580d02842fSSascha Wildner 12590d02842fSSascha Wildner typedef 12600d02842fSSascha Wildner void (*ACPI_NOTIFY_HANDLER) ( 12610d02842fSSascha Wildner ACPI_HANDLE Device, 12620d02842fSSascha Wildner UINT32 Value, 12630d02842fSSascha Wildner void *Context); 12640d02842fSSascha Wildner 12650d02842fSSascha Wildner typedef 12660d02842fSSascha Wildner void (*ACPI_OBJECT_HANDLER) ( 12670d02842fSSascha Wildner ACPI_HANDLE Object, 12680d02842fSSascha Wildner void *Data); 12690d02842fSSascha Wildner 12700d02842fSSascha Wildner typedef 12710d02842fSSascha Wildner ACPI_STATUS (*ACPI_INIT_HANDLER) ( 12720d02842fSSascha Wildner ACPI_HANDLE Object, 12730d02842fSSascha Wildner UINT32 Function); 12740d02842fSSascha Wildner 12750d02842fSSascha Wildner #define ACPI_INIT_DEVICE_INI 1 12760d02842fSSascha Wildner 12770d02842fSSascha Wildner typedef 12780d02842fSSascha Wildner ACPI_STATUS (*ACPI_EXCEPTION_HANDLER) ( 12790d02842fSSascha Wildner ACPI_STATUS AmlStatus, 12800d02842fSSascha Wildner ACPI_NAME Name, 12810d02842fSSascha Wildner UINT16 Opcode, 12820d02842fSSascha Wildner UINT32 AmlOffset, 12830d02842fSSascha Wildner void *Context); 12840d02842fSSascha Wildner 12850d02842fSSascha Wildner /* Table Event handler (Load, LoadTable, etc.) and types */ 12860d02842fSSascha Wildner 12870d02842fSSascha Wildner typedef 12880d02842fSSascha Wildner ACPI_STATUS (*ACPI_TABLE_HANDLER) ( 12890d02842fSSascha Wildner UINT32 Event, 12900d02842fSSascha Wildner void *Table, 12910d02842fSSascha Wildner void *Context); 12920d02842fSSascha Wildner 1293e5e174adSSascha Wildner 1294e5e174adSSascha Wildner /* Table Event Types */ 1295e5e174adSSascha Wildner 1296e5e174adSSascha Wildner #define ACPI_TABLE_EVENT_LOAD 0x0 1297e5e174adSSascha Wildner #define ACPI_TABLE_EVENT_UNLOAD 0x1 1298e5e174adSSascha Wildner #define ACPI_TABLE_EVENT_INSTALL 0x2 1299e5e174adSSascha Wildner #define ACPI_TABLE_EVENT_UNINSTALL 0x3 1300e5e174adSSascha Wildner #define ACPI_NUM_TABLE_EVENTS 4 13010d02842fSSascha Wildner 13020d02842fSSascha Wildner 13030d02842fSSascha Wildner /* Address Spaces (For Operation Regions) */ 13040d02842fSSascha Wildner 13050d02842fSSascha Wildner typedef 13060d02842fSSascha Wildner ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( 13070d02842fSSascha Wildner UINT32 Function, 13080d02842fSSascha Wildner ACPI_PHYSICAL_ADDRESS Address, 13090d02842fSSascha Wildner UINT32 BitWidth, 13100d02842fSSascha Wildner UINT64 *Value, 13110d02842fSSascha Wildner void *HandlerContext, 13120d02842fSSascha Wildner void *RegionContext); 13130d02842fSSascha Wildner 13140d02842fSSascha Wildner #define ACPI_DEFAULT_HANDLER NULL 13150d02842fSSascha Wildner 13160d02842fSSascha Wildner /* Special Context data for GenericSerialBus/GeneralPurposeIo (ACPI 5.0) */ 13170d02842fSSascha Wildner 13180d02842fSSascha Wildner typedef struct acpi_connection_info 13190d02842fSSascha Wildner { 13200d02842fSSascha Wildner UINT8 *Connection; 13210d02842fSSascha Wildner UINT16 Length; 13220d02842fSSascha Wildner UINT8 AccessLength; 13230d02842fSSascha Wildner 13240d02842fSSascha Wildner } ACPI_CONNECTION_INFO; 13250d02842fSSascha Wildner 1326*aab122a6SSascha Wildner /* Special Context data for PCC Opregion (ACPI 6.3) */ 1327*aab122a6SSascha Wildner 1328*aab122a6SSascha Wildner typedef struct acpi_pcc_info { 1329*aab122a6SSascha Wildner UINT8 SubspaceId; 1330*aab122a6SSascha Wildner UINT16 Length; 1331*aab122a6SSascha Wildner UINT8 *InternalBuffer; 1332*aab122a6SSascha Wildner } ACPI_PCC_INFO; 1333*aab122a6SSascha Wildner 13340d02842fSSascha Wildner 13350d02842fSSascha Wildner typedef 13360d02842fSSascha Wildner ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( 13370d02842fSSascha Wildner ACPI_HANDLE RegionHandle, 13380d02842fSSascha Wildner UINT32 Function, 13390d02842fSSascha Wildner void *HandlerContext, 13400d02842fSSascha Wildner void **RegionContext); 13410d02842fSSascha Wildner 13420d02842fSSascha Wildner #define ACPI_REGION_ACTIVATE 0 13430d02842fSSascha Wildner #define ACPI_REGION_DEACTIVATE 1 13440d02842fSSascha Wildner 13450d02842fSSascha Wildner typedef 13460d02842fSSascha Wildner ACPI_STATUS (*ACPI_WALK_CALLBACK) ( 13470d02842fSSascha Wildner ACPI_HANDLE Object, 13480d02842fSSascha Wildner UINT32 NestingLevel, 13490d02842fSSascha Wildner void *Context, 13500d02842fSSascha Wildner void **ReturnValue); 13510d02842fSSascha Wildner 13520d02842fSSascha Wildner typedef 13530d02842fSSascha Wildner UINT32 (*ACPI_INTERFACE_HANDLER) ( 13540d02842fSSascha Wildner ACPI_STRING InterfaceName, 13550d02842fSSascha Wildner UINT32 Supported); 13560d02842fSSascha Wildner 13570d02842fSSascha Wildner 13580d02842fSSascha Wildner /* Interrupt handler return values */ 13590d02842fSSascha Wildner 13600d02842fSSascha Wildner #define ACPI_INTERRUPT_NOT_HANDLED 0x00 13610d02842fSSascha Wildner #define ACPI_INTERRUPT_HANDLED 0x01 13620d02842fSSascha Wildner 13630d02842fSSascha Wildner /* GPE handler return values */ 13640d02842fSSascha Wildner 13650d02842fSSascha Wildner #define ACPI_REENABLE_GPE 0x80 13660d02842fSSascha Wildner 13670d02842fSSascha Wildner 13680d02842fSSascha Wildner /* Length of 32-bit EISAID values when converted back to a string */ 13690d02842fSSascha Wildner 13700d02842fSSascha Wildner #define ACPI_EISAID_STRING_SIZE 8 /* Includes null terminator */ 13710d02842fSSascha Wildner 13720d02842fSSascha Wildner /* Length of UUID (string) values */ 13730d02842fSSascha Wildner 13740d02842fSSascha Wildner #define ACPI_UUID_LENGTH 16 13750d02842fSSascha Wildner 137625ca8c79SSascha Wildner /* Length of 3-byte PCI class code values when converted back to a string */ 137725ca8c79SSascha Wildner 137825ca8c79SSascha Wildner #define ACPI_PCICLS_STRING_SIZE 7 /* Includes null terminator */ 137925ca8c79SSascha Wildner 13800d02842fSSascha Wildner 1381820c5b08SSascha Wildner /* Structures used for device/processor HID, UID, CID */ 13820d02842fSSascha Wildner 13830d02842fSSascha Wildner typedef struct acpi_pnp_device_id 13840d02842fSSascha Wildner { 13850d02842fSSascha Wildner UINT32 Length; /* Length of string + null */ 13860d02842fSSascha Wildner char *String; 13870d02842fSSascha Wildner 13880d02842fSSascha Wildner } ACPI_PNP_DEVICE_ID; 13890d02842fSSascha Wildner 13900d02842fSSascha Wildner typedef struct acpi_pnp_device_id_list 13910d02842fSSascha Wildner { 13920d02842fSSascha Wildner UINT32 Count; /* Number of IDs in Ids array */ 13930d02842fSSascha Wildner UINT32 ListSize; /* Size of list, including ID strings */ 13944758d649SSascha Wildner ACPI_PNP_DEVICE_ID Ids[]; /* ID array */ 13950d02842fSSascha Wildner 13960d02842fSSascha Wildner } ACPI_PNP_DEVICE_ID_LIST; 13970d02842fSSascha Wildner 13980d02842fSSascha Wildner /* 13990d02842fSSascha Wildner * Structure returned from AcpiGetObjectInfo. 14001093ca81SSascha Wildner * Optimized for both 32-bit and 64-bit builds. 14010d02842fSSascha Wildner */ 14020d02842fSSascha Wildner typedef struct acpi_device_info 14030d02842fSSascha Wildner { 14040d02842fSSascha Wildner UINT32 InfoSize; /* Size of info, including ID strings */ 14050d02842fSSascha Wildner UINT32 Name; /* ACPI object Name */ 14060d02842fSSascha Wildner ACPI_OBJECT_TYPE Type; /* ACPI object Type */ 14070d02842fSSascha Wildner UINT8 ParamCount; /* If a method, required parameter count */ 140825ca8c79SSascha Wildner UINT16 Valid; /* Indicates which optional fields are valid */ 14090d02842fSSascha Wildner UINT8 Flags; /* Miscellaneous info */ 14100d02842fSSascha Wildner UINT8 HighestDstates[4]; /* _SxD values: 0xFF indicates not valid */ 14110d02842fSSascha Wildner UINT8 LowestDstates[5]; /* _SxW values: 0xFF indicates not valid */ 14120d02842fSSascha Wildner UINT64 Address; /* _ADR value */ 14130d02842fSSascha Wildner ACPI_PNP_DEVICE_ID HardwareId; /* _HID value */ 14140d02842fSSascha Wildner ACPI_PNP_DEVICE_ID UniqueId; /* _UID value */ 141525ca8c79SSascha Wildner ACPI_PNP_DEVICE_ID ClassCode; /* _CLS value */ 14160d02842fSSascha Wildner ACPI_PNP_DEVICE_ID_LIST CompatibleIdList; /* _CID list <must be last> */ 14170d02842fSSascha Wildner 14180d02842fSSascha Wildner } ACPI_DEVICE_INFO; 14190d02842fSSascha Wildner 14200d02842fSSascha Wildner /* Values for Flags field above (AcpiGetObjectInfo) */ 14210d02842fSSascha Wildner 14220d02842fSSascha Wildner #define ACPI_PCI_ROOT_BRIDGE 0x01 14230d02842fSSascha Wildner 14240d02842fSSascha Wildner /* Flags for Valid field above (AcpiGetObjectInfo) */ 14250d02842fSSascha Wildner 142625ca8c79SSascha Wildner #define ACPI_VALID_ADR 0x0002 142725ca8c79SSascha Wildner #define ACPI_VALID_HID 0x0004 142825ca8c79SSascha Wildner #define ACPI_VALID_UID 0x0008 142925ca8c79SSascha Wildner #define ACPI_VALID_CID 0x0020 143025ca8c79SSascha Wildner #define ACPI_VALID_CLS 0x0040 143125ca8c79SSascha Wildner #define ACPI_VALID_SXDS 0x0100 143225ca8c79SSascha Wildner #define ACPI_VALID_SXWS 0x0200 14330d02842fSSascha Wildner 1434820c5b08SSascha Wildner /* Flags for _STA method */ 14350d02842fSSascha Wildner 14360d02842fSSascha Wildner #define ACPI_STA_DEVICE_PRESENT 0x01 14370d02842fSSascha Wildner #define ACPI_STA_DEVICE_ENABLED 0x02 14380d02842fSSascha Wildner #define ACPI_STA_DEVICE_UI 0x04 14390d02842fSSascha Wildner #define ACPI_STA_DEVICE_FUNCTIONING 0x08 14400d02842fSSascha Wildner #define ACPI_STA_DEVICE_OK 0x08 /* Synonym */ 14410d02842fSSascha Wildner #define ACPI_STA_BATTERY_PRESENT 0x10 14420d02842fSSascha Wildner 14430d02842fSSascha Wildner 14440d02842fSSascha Wildner /* Context structs for address space handlers */ 14450d02842fSSascha Wildner 14460d02842fSSascha Wildner typedef struct acpi_pci_id 14470d02842fSSascha Wildner { 14480d02842fSSascha Wildner UINT16 Segment; 14490d02842fSSascha Wildner UINT16 Bus; 14500d02842fSSascha Wildner UINT16 Device; 14510d02842fSSascha Wildner UINT16 Function; 14520d02842fSSascha Wildner 14530d02842fSSascha Wildner } ACPI_PCI_ID; 14540d02842fSSascha Wildner 1455c5a52fd3SSascha Wildner typedef struct acpi_mem_mapping 1456c5a52fd3SSascha Wildner { 1457c5a52fd3SSascha Wildner ACPI_PHYSICAL_ADDRESS PhysicalAddress; 1458c5a52fd3SSascha Wildner UINT8 *LogicalAddress; 1459c5a52fd3SSascha Wildner ACPI_SIZE Length; 1460c5a52fd3SSascha Wildner struct acpi_mem_mapping *NextMm; 1461c5a52fd3SSascha Wildner 1462c5a52fd3SSascha Wildner } ACPI_MEM_MAPPING; 1463c5a52fd3SSascha Wildner 14640d02842fSSascha Wildner typedef struct acpi_mem_space_context 14650d02842fSSascha Wildner { 14660d02842fSSascha Wildner UINT32 Length; 14670d02842fSSascha Wildner ACPI_PHYSICAL_ADDRESS Address; 1468c5a52fd3SSascha Wildner ACPI_MEM_MAPPING *CurMm; 1469c5a52fd3SSascha Wildner ACPI_MEM_MAPPING *FirstMm; 14700d02842fSSascha Wildner 14710d02842fSSascha Wildner } ACPI_MEM_SPACE_CONTEXT; 14720d02842fSSascha Wildner 1473*aab122a6SSascha Wildner typedef struct acpi_data_table_space_context 1474*aab122a6SSascha Wildner { 1475*aab122a6SSascha Wildner void *Pointer; 1476*aab122a6SSascha Wildner 1477*aab122a6SSascha Wildner } ACPI_DATA_TABLE_MAPPING; 1478*aab122a6SSascha Wildner 14790d02842fSSascha Wildner 14800d02842fSSascha Wildner /* 14810d02842fSSascha Wildner * ACPI_MEMORY_LIST is used only if the ACPICA local cache is enabled 14820d02842fSSascha Wildner */ 14830d02842fSSascha Wildner typedef struct acpi_memory_list 14840d02842fSSascha Wildner { 14852ffe9f16SSascha Wildner const char *ListName; 14860d02842fSSascha Wildner void *ListHead; 14870d02842fSSascha Wildner UINT16 ObjectSize; 14880d02842fSSascha Wildner UINT16 MaxDepth; 14890d02842fSSascha Wildner UINT16 CurrentDepth; 14900d02842fSSascha Wildner 14910d02842fSSascha Wildner #ifdef ACPI_DBG_TRACK_ALLOCATIONS 14920d02842fSSascha Wildner 14930d02842fSSascha Wildner /* Statistics for debug memory tracking only */ 14940d02842fSSascha Wildner 14950d02842fSSascha Wildner UINT32 TotalAllocated; 14960d02842fSSascha Wildner UINT32 TotalFreed; 14970d02842fSSascha Wildner UINT32 MaxOccupied; 14980d02842fSSascha Wildner UINT32 TotalSize; 14990d02842fSSascha Wildner UINT32 CurrentTotalSize; 15000d02842fSSascha Wildner UINT32 Requests; 15010d02842fSSascha Wildner UINT32 Hits; 15020d02842fSSascha Wildner #endif 15030d02842fSSascha Wildner 15040d02842fSSascha Wildner } ACPI_MEMORY_LIST; 15050d02842fSSascha Wildner 15060d02842fSSascha Wildner 1507267c04fdSSascha Wildner /* Definitions of trace event types */ 1508267c04fdSSascha Wildner 1509267c04fdSSascha Wildner typedef enum 1510267c04fdSSascha Wildner { 1511267c04fdSSascha Wildner ACPI_TRACE_AML_METHOD, 1512267c04fdSSascha Wildner ACPI_TRACE_AML_OPCODE, 1513267c04fdSSascha Wildner ACPI_TRACE_AML_REGION 1514267c04fdSSascha Wildner 1515267c04fdSSascha Wildner } ACPI_TRACE_EVENT_TYPE; 1516267c04fdSSascha Wildner 1517267c04fdSSascha Wildner 15180d02842fSSascha Wildner /* Definitions of _OSI support */ 15190d02842fSSascha Wildner 15200d02842fSSascha Wildner #define ACPI_VENDOR_STRINGS 0x01 15210d02842fSSascha Wildner #define ACPI_FEATURE_STRINGS 0x02 15220d02842fSSascha Wildner #define ACPI_ENABLE_INTERFACES 0x00 15230d02842fSSascha Wildner #define ACPI_DISABLE_INTERFACES 0x04 15240d02842fSSascha Wildner 15250d02842fSSascha Wildner #define ACPI_DISABLE_ALL_VENDOR_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS) 15260d02842fSSascha Wildner #define ACPI_DISABLE_ALL_FEATURE_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_FEATURE_STRINGS) 15270d02842fSSascha Wildner #define ACPI_DISABLE_ALL_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS) 15280d02842fSSascha Wildner #define ACPI_ENABLE_ALL_VENDOR_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS) 15290d02842fSSascha Wildner #define ACPI_ENABLE_ALL_FEATURE_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_FEATURE_STRINGS) 15300d02842fSSascha Wildner #define ACPI_ENABLE_ALL_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS) 15310d02842fSSascha Wildner 15320d02842fSSascha Wildner #define ACPI_OSI_WIN_2000 0x01 15330d02842fSSascha Wildner #define ACPI_OSI_WIN_XP 0x02 15340d02842fSSascha Wildner #define ACPI_OSI_WIN_XP_SP1 0x03 15350d02842fSSascha Wildner #define ACPI_OSI_WINSRV_2003 0x04 15360d02842fSSascha Wildner #define ACPI_OSI_WIN_XP_SP2 0x05 15370d02842fSSascha Wildner #define ACPI_OSI_WINSRV_2003_SP1 0x06 15380d02842fSSascha Wildner #define ACPI_OSI_WIN_VISTA 0x07 15390d02842fSSascha Wildner #define ACPI_OSI_WINSRV_2008 0x08 15400d02842fSSascha Wildner #define ACPI_OSI_WIN_VISTA_SP1 0x09 15410d02842fSSascha Wildner #define ACPI_OSI_WIN_VISTA_SP2 0x0A 15420d02842fSSascha Wildner #define ACPI_OSI_WIN_7 0x0B 15430d02842fSSascha Wildner #define ACPI_OSI_WIN_8 0x0C 1544e5412f1eSSascha Wildner #define ACPI_OSI_WIN_8_1 0x0D 1545e5412f1eSSascha Wildner #define ACPI_OSI_WIN_10 0x0E 1546e5412f1eSSascha Wildner #define ACPI_OSI_WIN_10_RS1 0x0F 1547e5412f1eSSascha Wildner #define ACPI_OSI_WIN_10_RS2 0x10 1548e5412f1eSSascha Wildner #define ACPI_OSI_WIN_10_RS3 0x11 1549e5412f1eSSascha Wildner #define ACPI_OSI_WIN_10_RS4 0x12 1550e5412f1eSSascha Wildner #define ACPI_OSI_WIN_10_RS5 0x13 1551e5412f1eSSascha Wildner #define ACPI_OSI_WIN_10_19H1 0x14 155284fe3360SSascha Wildner #define ACPI_OSI_WIN_10_20H1 0x15 15530d02842fSSascha Wildner 15540d02842fSSascha Wildner 15555f39c7e7SSascha Wildner /* Definitions of getopt */ 15565f39c7e7SSascha Wildner 15575f39c7e7SSascha Wildner #define ACPI_OPT_END -1 15585f39c7e7SSascha Wildner 155908343eafSSascha Wildner /* Definitions for explicit fallthrough */ 156008343eafSSascha Wildner 156108343eafSSascha Wildner #ifndef ACPI_FALLTHROUGH 156208343eafSSascha Wildner #define ACPI_FALLTHROUGH do {} while(0) 156308343eafSSascha Wildner #endif 15645f39c7e7SSascha Wildner 15650d02842fSSascha Wildner #endif /* __ACTYPES_H__ */ 1566