17c478bd9Sstevel@tonic-gate /****************************************************************************** 27c478bd9Sstevel@tonic-gate * 37c478bd9Sstevel@tonic-gate * Name: aclocal.h - Internal data types used across the ACPI subsystem 47c478bd9Sstevel@tonic-gate * 57c478bd9Sstevel@tonic-gate *****************************************************************************/ 67c478bd9Sstevel@tonic-gate 7*35786f68SRobert Mustacchi /****************************************************************************** 8*35786f68SRobert Mustacchi * 9*35786f68SRobert Mustacchi * 1. Copyright Notice 10*35786f68SRobert Mustacchi * 11*35786f68SRobert Mustacchi * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp. 127c478bd9Sstevel@tonic-gate * All rights reserved. 137c478bd9Sstevel@tonic-gate * 14*35786f68SRobert Mustacchi * 2. License 15*35786f68SRobert Mustacchi * 16*35786f68SRobert Mustacchi * 2.1. This is your license from Intel Corp. under its intellectual property 17*35786f68SRobert Mustacchi * rights. You may have additional license terms from the party that provided 18*35786f68SRobert Mustacchi * you this software, covering your right to use that party's intellectual 19*35786f68SRobert Mustacchi * property rights. 20*35786f68SRobert Mustacchi * 21*35786f68SRobert Mustacchi * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22*35786f68SRobert Mustacchi * copy of the source code appearing in this file ("Covered Code") an 23*35786f68SRobert Mustacchi * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24*35786f68SRobert Mustacchi * base code distributed originally by Intel ("Original Intel Code") to copy, 25*35786f68SRobert Mustacchi * make derivatives, distribute, use and display any portion of the Covered 26*35786f68SRobert Mustacchi * Code in any form, with the right to sublicense such rights; and 27*35786f68SRobert Mustacchi * 28*35786f68SRobert Mustacchi * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29*35786f68SRobert Mustacchi * license (with the right to sublicense), under only those claims of Intel 30*35786f68SRobert Mustacchi * patents that are infringed by the Original Intel Code, to make, use, sell, 31*35786f68SRobert Mustacchi * offer to sell, and import the Covered Code and derivative works thereof 32*35786f68SRobert Mustacchi * solely to the minimum extent necessary to exercise the above copyright 33*35786f68SRobert Mustacchi * license, and in no event shall the patent license extend to any additions 34*35786f68SRobert Mustacchi * to or modifications of the Original Intel Code. No other license or right 35*35786f68SRobert Mustacchi * is granted directly or by implication, estoppel or otherwise; 36*35786f68SRobert Mustacchi * 37*35786f68SRobert Mustacchi * The above copyright and patent license is granted only if the following 38*35786f68SRobert Mustacchi * conditions are met: 39*35786f68SRobert Mustacchi * 40*35786f68SRobert Mustacchi * 3. Conditions 41*35786f68SRobert Mustacchi * 42*35786f68SRobert Mustacchi * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43*35786f68SRobert Mustacchi * Redistribution of source code of any substantial portion of the Covered 44*35786f68SRobert Mustacchi * Code or modification with rights to further distribute source must include 45*35786f68SRobert Mustacchi * the above Copyright Notice, the above License, this list of Conditions, 46*35786f68SRobert Mustacchi * and the following Disclaimer and Export Compliance provision. In addition, 47*35786f68SRobert Mustacchi * Licensee must cause all Covered Code to which Licensee contributes to 48*35786f68SRobert Mustacchi * contain a file documenting the changes Licensee made to create that Covered 49*35786f68SRobert Mustacchi * Code and the date of any change. Licensee must include in that file the 50*35786f68SRobert Mustacchi * documentation of any changes made by any predecessor Licensee. Licensee 51*35786f68SRobert Mustacchi * must include a prominent statement that the modification is derived, 52*35786f68SRobert Mustacchi * directly or indirectly, from Original Intel Code. 53*35786f68SRobert Mustacchi * 54*35786f68SRobert Mustacchi * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55*35786f68SRobert Mustacchi * Redistribution of source code of any substantial portion of the Covered 56*35786f68SRobert Mustacchi * Code or modification without rights to further distribute source must 57*35786f68SRobert Mustacchi * include the following Disclaimer and Export Compliance provision in the 58*35786f68SRobert Mustacchi * documentation and/or other materials provided with distribution. In 59*35786f68SRobert Mustacchi * addition, Licensee may not authorize further sublicense of source of any 60*35786f68SRobert Mustacchi * portion of the Covered Code, and must include terms to the effect that the 61*35786f68SRobert Mustacchi * license from Licensee to its licensee is limited to the intellectual 62*35786f68SRobert Mustacchi * property embodied in the software Licensee provides to its licensee, and 63*35786f68SRobert Mustacchi * not to intellectual property embodied in modifications its licensee may 64*35786f68SRobert Mustacchi * make. 65*35786f68SRobert Mustacchi * 66*35786f68SRobert Mustacchi * 3.3. Redistribution of Executable. Redistribution in executable form of any 67*35786f68SRobert Mustacchi * substantial portion of the Covered Code or modification must reproduce the 68*35786f68SRobert Mustacchi * above Copyright Notice, and the following Disclaimer and Export Compliance 69*35786f68SRobert Mustacchi * provision in the documentation and/or other materials provided with the 70*35786f68SRobert Mustacchi * distribution. 71*35786f68SRobert Mustacchi * 72*35786f68SRobert Mustacchi * 3.4. Intel retains all right, title, and interest in and to the Original 73*35786f68SRobert Mustacchi * Intel Code. 74*35786f68SRobert Mustacchi * 75*35786f68SRobert Mustacchi * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76*35786f68SRobert Mustacchi * Intel shall be used in advertising or otherwise to promote the sale, use or 77*35786f68SRobert Mustacchi * other dealings in products derived from or relating to the Covered Code 78*35786f68SRobert Mustacchi * without prior written authorization from Intel. 79*35786f68SRobert Mustacchi * 80*35786f68SRobert Mustacchi * 4. Disclaimer and Export Compliance 81*35786f68SRobert Mustacchi * 82*35786f68SRobert Mustacchi * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83*35786f68SRobert Mustacchi * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84*35786f68SRobert Mustacchi * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85*35786f68SRobert Mustacchi * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86*35786f68SRobert Mustacchi * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87*35786f68SRobert Mustacchi * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88*35786f68SRobert Mustacchi * PARTICULAR PURPOSE. 89*35786f68SRobert Mustacchi * 90*35786f68SRobert Mustacchi * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91*35786f68SRobert Mustacchi * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92*35786f68SRobert Mustacchi * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93*35786f68SRobert Mustacchi * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94*35786f68SRobert Mustacchi * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95*35786f68SRobert Mustacchi * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96*35786f68SRobert Mustacchi * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97*35786f68SRobert Mustacchi * LIMITED REMEDY. 98*35786f68SRobert Mustacchi * 99*35786f68SRobert Mustacchi * 4.3. Licensee shall not export, either directly or indirectly, any of this 100*35786f68SRobert Mustacchi * software or system incorporating such software without first obtaining any 101*35786f68SRobert Mustacchi * required license or other approval from the U. S. Department of Commerce or 102*35786f68SRobert Mustacchi * any other agency or department of the United States Government. In the 103*35786f68SRobert Mustacchi * event Licensee exports any such software from the United States or 104*35786f68SRobert Mustacchi * re-exports any such software from a foreign destination, Licensee shall 105*35786f68SRobert Mustacchi * ensure that the distribution and export/re-export of the software is in 106*35786f68SRobert Mustacchi * compliance with all laws, regulations, orders, or other restrictions of the 107*35786f68SRobert Mustacchi * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108*35786f68SRobert Mustacchi * any of its subsidiaries will export/re-export any technical data, process, 109*35786f68SRobert Mustacchi * software, or service, directly or indirectly, to any country for which the 110*35786f68SRobert Mustacchi * United States government or any agency thereof requires an export license, 111*35786f68SRobert Mustacchi * other governmental approval, or letter of assurance, without first obtaining 112*35786f68SRobert Mustacchi * such license, approval or letter. 113*35786f68SRobert Mustacchi * 114*35786f68SRobert Mustacchi ***************************************************************************** 115*35786f68SRobert Mustacchi * 116*35786f68SRobert Mustacchi * Alternatively, you may choose to be licensed under the terms of the 117*35786f68SRobert Mustacchi * following license: 118*35786f68SRobert Mustacchi * 11926f3cdf0SGordon Ross * Redistribution and use in source and binary forms, with or without 12026f3cdf0SGordon Ross * modification, are permitted provided that the following conditions 12126f3cdf0SGordon Ross * are met: 12226f3cdf0SGordon Ross * 1. Redistributions of source code must retain the above copyright 12326f3cdf0SGordon Ross * notice, this list of conditions, and the following disclaimer, 12426f3cdf0SGordon Ross * without modification. 12526f3cdf0SGordon Ross * 2. Redistributions in binary form must reproduce at minimum a disclaimer 12626f3cdf0SGordon Ross * substantially similar to the "NO WARRANTY" disclaimer below 12726f3cdf0SGordon Ross * ("Disclaimer") and any redistribution must be conditioned upon 12826f3cdf0SGordon Ross * including a substantially similar Disclaimer requirement for further 12926f3cdf0SGordon Ross * binary redistribution. 13026f3cdf0SGordon Ross * 3. Neither the names of the above-listed copyright holders nor the names 13126f3cdf0SGordon Ross * of any contributors may be used to endorse or promote products derived 13226f3cdf0SGordon Ross * from this software without specific prior written permission. 1337c478bd9Sstevel@tonic-gate * 13426f3cdf0SGordon Ross * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 13526f3cdf0SGordon Ross * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136*35786f68SRobert Mustacchi * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 13726f3cdf0SGordon Ross * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 138*35786f68SRobert Mustacchi * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 139*35786f68SRobert Mustacchi * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 140*35786f68SRobert Mustacchi * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 141*35786f68SRobert Mustacchi * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 142*35786f68SRobert Mustacchi * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 143*35786f68SRobert Mustacchi * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 144*35786f68SRobert Mustacchi * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 145*35786f68SRobert Mustacchi * 146*35786f68SRobert Mustacchi * Alternatively, you may choose to be licensed under the terms of the 147*35786f68SRobert Mustacchi * GNU General Public License ("GPL") version 2 as published by the Free 148*35786f68SRobert Mustacchi * Software Foundation. 149*35786f68SRobert Mustacchi * 150*35786f68SRobert Mustacchi *****************************************************************************/ 1517c478bd9Sstevel@tonic-gate 1527c478bd9Sstevel@tonic-gate #ifndef __ACLOCAL_H__ 1537c478bd9Sstevel@tonic-gate #define __ACLOCAL_H__ 1547c478bd9Sstevel@tonic-gate 155aa2aa9a6SDana Myers 15627f7c583Smyers /* acpisrc:StructDefs -- for acpisrc conversion */ 1577c478bd9Sstevel@tonic-gate 15827f7c583Smyers #define ACPI_SERIALIZED 0xFF 1597c478bd9Sstevel@tonic-gate 1607c478bd9Sstevel@tonic-gate typedef UINT32 ACPI_MUTEX_HANDLE; 161db2bae30SDana Myers #define ACPI_GLOBAL_LOCK (ACPI_SEMAPHORE) (-1) 1627c478bd9Sstevel@tonic-gate 1637c478bd9Sstevel@tonic-gate /* Total number of aml opcodes defined */ 1647c478bd9Sstevel@tonic-gate 165*35786f68SRobert Mustacchi #define AML_NUM_OPCODES 0x83 1667c478bd9Sstevel@tonic-gate 1677c478bd9Sstevel@tonic-gate 168450d6964Smyers /* Forward declarations */ 169450d6964Smyers 170450d6964Smyers struct acpi_walk_state; 171450d6964Smyers struct acpi_obj_mutex; 172450d6964Smyers union acpi_parse_object; 173450d6964Smyers 174450d6964Smyers 1757c478bd9Sstevel@tonic-gate /***************************************************************************** 1767c478bd9Sstevel@tonic-gate * 1777c478bd9Sstevel@tonic-gate * Mutex typedefs and structs 1787c478bd9Sstevel@tonic-gate * 1797c478bd9Sstevel@tonic-gate ****************************************************************************/ 1807c478bd9Sstevel@tonic-gate 1817c478bd9Sstevel@tonic-gate 1827c478bd9Sstevel@tonic-gate /* 1837c478bd9Sstevel@tonic-gate * Predefined handles for the mutex objects used within the subsystem 1847c478bd9Sstevel@tonic-gate * All mutex objects are automatically created by AcpiUtMutexInitialize. 1857c478bd9Sstevel@tonic-gate * 18627f7c583Smyers * The acquire/release ordering protocol is implied via this list. Mutexes 1877c478bd9Sstevel@tonic-gate * with a lower value must be acquired before mutexes with a higher value. 1887c478bd9Sstevel@tonic-gate * 18927f7c583Smyers * NOTE: any changes here must be reflected in the AcpiGbl_MutexNames 19027f7c583Smyers * table below also! 1917c478bd9Sstevel@tonic-gate */ 19227f7c583Smyers #define ACPI_MTX_INTERPRETER 0 /* AML Interpreter, main lock */ 193db2bae30SDana Myers #define ACPI_MTX_NAMESPACE 1 /* ACPI Namespace */ 194db2bae30SDana Myers #define ACPI_MTX_TABLES 2 /* Data for ACPI tables */ 19527f7c583Smyers #define ACPI_MTX_EVENTS 3 /* Data for ACPI events */ 19627f7c583Smyers #define ACPI_MTX_CACHES 4 /* Internal caches, general purposes */ 19727f7c583Smyers #define ACPI_MTX_MEMORY 5 /* Debug memory tracking lists */ 19827f7c583Smyers 1997b1019a6SJerry Jelinek #define ACPI_MAX_MUTEX 5 2007b1019a6SJerry Jelinek #define ACPI_NUM_MUTEX (ACPI_MAX_MUTEX+1) 2017c478bd9Sstevel@tonic-gate 2027c478bd9Sstevel@tonic-gate 203aa2aa9a6SDana Myers /* Lock structure for reader/writer interfaces */ 204aa2aa9a6SDana Myers 205aa2aa9a6SDana Myers typedef struct acpi_rw_lock 206aa2aa9a6SDana Myers { 207aa2aa9a6SDana Myers ACPI_MUTEX WriterMutex; 208aa2aa9a6SDana Myers ACPI_MUTEX ReaderMutex; 209aa2aa9a6SDana Myers UINT32 NumReaders; 210aa2aa9a6SDana Myers 211aa2aa9a6SDana Myers } ACPI_RW_LOCK; 212aa2aa9a6SDana Myers 2137c478bd9Sstevel@tonic-gate 21427f7c583Smyers /* 21527f7c583Smyers * Predefined handles for spinlocks used within the subsystem. 21627f7c583Smyers * These spinlocks are created by AcpiUtMutexInitialize 21727f7c583Smyers */ 21827f7c583Smyers #define ACPI_LOCK_GPES 0 21927f7c583Smyers #define ACPI_LOCK_HARDWARE 1 22027f7c583Smyers 22127f7c583Smyers #define ACPI_MAX_LOCK 1 2227b1019a6SJerry Jelinek #define ACPI_NUM_LOCK (ACPI_MAX_LOCK+1) 22327f7c583Smyers 22427f7c583Smyers 225450d6964Smyers /* This Thread ID means that the mutex is not in use (unlocked) */ 226450d6964Smyers 2277b1019a6SJerry Jelinek #define ACPI_MUTEX_NOT_ACQUIRED ((ACPI_THREAD_ID) -1) 2287b1019a6SJerry Jelinek 2297b1019a6SJerry Jelinek /* This Thread ID means an invalid thread ID */ 2307b1019a6SJerry Jelinek 2317b1019a6SJerry Jelinek #ifdef ACPI_OS_INVALID_THREAD_ID 2327b1019a6SJerry Jelinek #define ACPI_INVALID_THREAD_ID ACPI_OS_INVALID_THREAD_ID 2337b1019a6SJerry Jelinek #else 2347b1019a6SJerry Jelinek #define ACPI_INVALID_THREAD_ID ((ACPI_THREAD_ID) 0xFFFFFFFF) 2357b1019a6SJerry Jelinek #endif 236450d6964Smyers 2377c478bd9Sstevel@tonic-gate /* Table for the global mutexes */ 2387c478bd9Sstevel@tonic-gate 2397c478bd9Sstevel@tonic-gate typedef struct acpi_mutex_info 2407c478bd9Sstevel@tonic-gate { 24127f7c583Smyers ACPI_MUTEX Mutex; 24227f7c583Smyers UINT32 UseCount; 24327f7c583Smyers ACPI_THREAD_ID ThreadId; 2447c478bd9Sstevel@tonic-gate 2457c478bd9Sstevel@tonic-gate } ACPI_MUTEX_INFO; 2467c478bd9Sstevel@tonic-gate 2477c478bd9Sstevel@tonic-gate 2487c478bd9Sstevel@tonic-gate /* Lock flag parameter for various interfaces */ 2497c478bd9Sstevel@tonic-gate 2507c478bd9Sstevel@tonic-gate #define ACPI_MTX_DO_NOT_LOCK 0 2517c478bd9Sstevel@tonic-gate #define ACPI_MTX_LOCK 1 2527c478bd9Sstevel@tonic-gate 2537c478bd9Sstevel@tonic-gate 2547c478bd9Sstevel@tonic-gate /* Field access granularities */ 2557c478bd9Sstevel@tonic-gate 2567c478bd9Sstevel@tonic-gate #define ACPI_FIELD_BYTE_GRANULARITY 1 2577c478bd9Sstevel@tonic-gate #define ACPI_FIELD_WORD_GRANULARITY 2 2587c478bd9Sstevel@tonic-gate #define ACPI_FIELD_DWORD_GRANULARITY 4 2597c478bd9Sstevel@tonic-gate #define ACPI_FIELD_QWORD_GRANULARITY 8 2607c478bd9Sstevel@tonic-gate 2617c478bd9Sstevel@tonic-gate 26227f7c583Smyers #define ACPI_ENTRY_NOT_FOUND NULL 26327f7c583Smyers 26427f7c583Smyers 2657c478bd9Sstevel@tonic-gate /***************************************************************************** 2667c478bd9Sstevel@tonic-gate * 2677c478bd9Sstevel@tonic-gate * Namespace typedefs and structs 2687c478bd9Sstevel@tonic-gate * 2697c478bd9Sstevel@tonic-gate ****************************************************************************/ 2707c478bd9Sstevel@tonic-gate 2717c478bd9Sstevel@tonic-gate /* Operational modes of the AML interpreter/scanner */ 2727c478bd9Sstevel@tonic-gate 2737c478bd9Sstevel@tonic-gate typedef enum 2747c478bd9Sstevel@tonic-gate { 27527f7c583Smyers ACPI_IMODE_LOAD_PASS1 = 0x01, 27627f7c583Smyers ACPI_IMODE_LOAD_PASS2 = 0x02, 277db2bae30SDana Myers ACPI_IMODE_EXECUTE = 0x03 2787c478bd9Sstevel@tonic-gate 2797c478bd9Sstevel@tonic-gate } ACPI_INTERPRETER_MODE; 2807c478bd9Sstevel@tonic-gate 28127f7c583Smyers 28227f7c583Smyers /* 28327f7c583Smyers * The Namespace Node describes a named object that appears in the AML. 28427f7c583Smyers * DescriptorType is used to differentiate between internal descriptors. 28527f7c583Smyers * 28627f7c583Smyers * The node is optimized for both 32-bit and 64-bit platforms: 28727f7c583Smyers * 20 bytes for the 32-bit case, 32 bytes for the 64-bit case. 28827f7c583Smyers * 28927f7c583Smyers * Note: The DescriptorType and Type fields must appear in the identical 29027f7c583Smyers * position in both the ACPI_NAMESPACE_NODE and ACPI_OPERAND_OBJECT 29127f7c583Smyers * structures. 29227f7c583Smyers */ 2937c478bd9Sstevel@tonic-gate typedef struct acpi_namespace_node 2947c478bd9Sstevel@tonic-gate { 29527f7c583Smyers union acpi_operand_object *Object; /* Interpreter object */ 29627f7c583Smyers UINT8 DescriptorType; /* Differentiate object descriptor types */ 29727f7c583Smyers UINT8 Type; /* ACPI Type associated with this name */ 29827f7c583Smyers UINT8 Flags; /* Miscellaneous flags */ 29927f7c583Smyers ACPI_OWNER_ID OwnerId; /* Node creator */ 30027f7c583Smyers ACPI_NAME_UNION Name; /* ACPI Name, always 4 chars per ACPI spec */ 30126f3cdf0SGordon Ross struct acpi_namespace_node *Parent; /* Parent node */ 30227f7c583Smyers struct acpi_namespace_node *Child; /* First child */ 30326f3cdf0SGordon Ross struct acpi_namespace_node *Peer; /* First peer */ 30427f7c583Smyers 30527f7c583Smyers /* 30627f7c583Smyers * The following fields are used by the ASL compiler and disassembler only 30727f7c583Smyers */ 30827f7c583Smyers #ifdef ACPI_LARGE_NAMESPACE_NODE 30927f7c583Smyers union acpi_parse_object *Op; 3107b1019a6SJerry Jelinek void *MethodLocals; 3117b1019a6SJerry Jelinek void *MethodArgs; 31227f7c583Smyers UINT32 Value; 31327f7c583Smyers UINT32 Length; 3147b1019a6SJerry Jelinek UINT8 ArgCount; 3157b1019a6SJerry Jelinek 316450d6964Smyers #endif 317450d6964Smyers 3187c478bd9Sstevel@tonic-gate } ACPI_NAMESPACE_NODE; 3197c478bd9Sstevel@tonic-gate 3207c478bd9Sstevel@tonic-gate 32127f7c583Smyers /* Namespace Node flags */ 3227c478bd9Sstevel@tonic-gate 32326f3cdf0SGordon Ross #define ANOBJ_RESERVED 0x01 /* Available for use */ 324db2bae30SDana Myers #define ANOBJ_TEMPORARY 0x02 /* Node is create by a method and is temporary */ 32527f7c583Smyers #define ANOBJ_METHOD_ARG 0x04 /* Node is a method argument */ 32627f7c583Smyers #define ANOBJ_METHOD_LOCAL 0x08 /* Node is a method local */ 32727f7c583Smyers #define ANOBJ_SUBTREE_HAS_INI 0x10 /* Used to optimize device initialization */ 328aa2aa9a6SDana Myers #define ANOBJ_EVALUATED 0x20 /* Set on first evaluation of node */ 329aa2aa9a6SDana Myers #define ANOBJ_ALLOCATED_BUFFER 0x40 /* Method AML buffer is dynamic (InstallMethod) */ 3307c478bd9Sstevel@tonic-gate 33127f7c583Smyers #define ANOBJ_IS_EXTERNAL 0x08 /* iASL only: This object created via External() */ 33227f7c583Smyers #define ANOBJ_METHOD_NO_RETVAL 0x10 /* iASL only: Method has no return value */ 33327f7c583Smyers #define ANOBJ_METHOD_SOME_NO_RETVAL 0x20 /* iASL only: Method has at least one return value */ 33427f7c583Smyers #define ANOBJ_IS_REFERENCED 0x80 /* iASL only: Object was referenced */ 3357c478bd9Sstevel@tonic-gate 336db2bae30SDana Myers 33726f3cdf0SGordon Ross /* Internal ACPI table management - master table list */ 338db2bae30SDana Myers 33926f3cdf0SGordon Ross typedef struct acpi_table_list 3407c478bd9Sstevel@tonic-gate { 34126f3cdf0SGordon Ross ACPI_TABLE_DESC *Tables; /* Table descriptor array */ 34226f3cdf0SGordon Ross UINT32 CurrentTableCount; /* Tables currently in the array */ 34326f3cdf0SGordon Ross UINT32 MaxTableCount; /* Max tables array will hold */ 344db2bae30SDana Myers UINT8 Flags; 345db2bae30SDana Myers 34626f3cdf0SGordon Ross } ACPI_TABLE_LIST; 347db2bae30SDana Myers 348db2bae30SDana Myers /* Flags for above */ 349db2bae30SDana Myers 350db2bae30SDana Myers #define ACPI_ROOT_ORIGIN_UNKNOWN (0) /* ~ORIGIN_ALLOCATED */ 351db2bae30SDana Myers #define ACPI_ROOT_ORIGIN_ALLOCATED (1) 352db2bae30SDana Myers #define ACPI_ROOT_ALLOW_RESIZE (2) 3537c478bd9Sstevel@tonic-gate 354db2bae30SDana Myers 3557b1019a6SJerry Jelinek /* List to manage incoming ACPI tables */ 3567b1019a6SJerry Jelinek 3577b1019a6SJerry Jelinek typedef struct acpi_new_table_desc 3587b1019a6SJerry Jelinek { 3597b1019a6SJerry Jelinek ACPI_TABLE_HEADER *Table; 3607b1019a6SJerry Jelinek struct acpi_new_table_desc *Next; 3617b1019a6SJerry Jelinek 3627b1019a6SJerry Jelinek } ACPI_NEW_TABLE_DESC; 3637b1019a6SJerry Jelinek 3647b1019a6SJerry Jelinek 3657b1019a6SJerry Jelinek /* Predefined table indexes */ 366db2bae30SDana Myers 3677b1019a6SJerry Jelinek #define ACPI_INVALID_TABLE_INDEX (0xFFFFFFFF) 3687c478bd9Sstevel@tonic-gate 3697c478bd9Sstevel@tonic-gate 3707c478bd9Sstevel@tonic-gate typedef struct acpi_find_context 3717c478bd9Sstevel@tonic-gate { 37227f7c583Smyers char *SearchFor; 37327f7c583Smyers ACPI_HANDLE *List; 37427f7c583Smyers UINT32 *Count; 3757c478bd9Sstevel@tonic-gate 3767c478bd9Sstevel@tonic-gate } ACPI_FIND_CONTEXT; 3777c478bd9Sstevel@tonic-gate 3787c478bd9Sstevel@tonic-gate 3797c478bd9Sstevel@tonic-gate typedef struct acpi_ns_search_data 3807c478bd9Sstevel@tonic-gate { 38127f7c583Smyers ACPI_NAMESPACE_NODE *Node; 3827c478bd9Sstevel@tonic-gate 3837c478bd9Sstevel@tonic-gate } ACPI_NS_SEARCH_DATA; 3847c478bd9Sstevel@tonic-gate 3857c478bd9Sstevel@tonic-gate 3867c478bd9Sstevel@tonic-gate /* Object types used during package copies */ 3877c478bd9Sstevel@tonic-gate 3887c478bd9Sstevel@tonic-gate #define ACPI_COPY_TYPE_SIMPLE 0 3897c478bd9Sstevel@tonic-gate #define ACPI_COPY_TYPE_PACKAGE 1 3907c478bd9Sstevel@tonic-gate 39127f7c583Smyers 3927c478bd9Sstevel@tonic-gate /* Info structure used to convert external<->internal namestrings */ 3937c478bd9Sstevel@tonic-gate 3947c478bd9Sstevel@tonic-gate typedef struct acpi_namestring_info 3957c478bd9Sstevel@tonic-gate { 396db2bae30SDana Myers const char *ExternalName; 397db2bae30SDana Myers const char *NextExternalChar; 39827f7c583Smyers char *InternalName; 39927f7c583Smyers UINT32 Length; 40027f7c583Smyers UINT32 NumSegments; 40127f7c583Smyers UINT32 NumCarats; 40227f7c583Smyers BOOLEAN FullyQualified; 4037c478bd9Sstevel@tonic-gate 4047c478bd9Sstevel@tonic-gate } ACPI_NAMESTRING_INFO; 4057c478bd9Sstevel@tonic-gate 4067c478bd9Sstevel@tonic-gate 4077c478bd9Sstevel@tonic-gate /* Field creation info */ 4087c478bd9Sstevel@tonic-gate 4097c478bd9Sstevel@tonic-gate typedef struct acpi_create_field_info 4107c478bd9Sstevel@tonic-gate { 41127f7c583Smyers ACPI_NAMESPACE_NODE *RegionNode; 41227f7c583Smyers ACPI_NAMESPACE_NODE *FieldNode; 41327f7c583Smyers ACPI_NAMESPACE_NODE *RegisterNode; 41427f7c583Smyers ACPI_NAMESPACE_NODE *DataRegisterNode; 4157b1019a6SJerry Jelinek ACPI_NAMESPACE_NODE *ConnectionNode; 4167b1019a6SJerry Jelinek UINT8 *ResourceBuffer; 41727f7c583Smyers UINT32 BankValue; 41827f7c583Smyers UINT32 FieldBitPosition; 41927f7c583Smyers UINT32 FieldBitLength; 4207b1019a6SJerry Jelinek UINT16 ResourceLength; 4217b1019a6SJerry Jelinek UINT16 PinNumberIndex; 42227f7c583Smyers UINT8 FieldFlags; 42327f7c583Smyers UINT8 Attribute; 42427f7c583Smyers UINT8 FieldType; 4257b1019a6SJerry Jelinek UINT8 AccessLength; 4267c478bd9Sstevel@tonic-gate 4277c478bd9Sstevel@tonic-gate } ACPI_CREATE_FIELD_INFO; 4287c478bd9Sstevel@tonic-gate 4297c478bd9Sstevel@tonic-gate 43027f7c583Smyers typedef 43127f7c583Smyers ACPI_STATUS (*ACPI_INTERNAL_METHOD) ( 43227f7c583Smyers struct acpi_walk_state *WalkState); 43327f7c583Smyers 43427f7c583Smyers 43530082d0cSmyers /* 4367b1019a6SJerry Jelinek * Bitmapped ACPI types. Used internally only 43730082d0cSmyers */ 43830082d0cSmyers #define ACPI_BTYPE_ANY 0x00000000 43930082d0cSmyers #define ACPI_BTYPE_INTEGER 0x00000001 44030082d0cSmyers #define ACPI_BTYPE_STRING 0x00000002 44130082d0cSmyers #define ACPI_BTYPE_BUFFER 0x00000004 44230082d0cSmyers #define ACPI_BTYPE_PACKAGE 0x00000008 44330082d0cSmyers #define ACPI_BTYPE_FIELD_UNIT 0x00000010 44430082d0cSmyers #define ACPI_BTYPE_DEVICE 0x00000020 44530082d0cSmyers #define ACPI_BTYPE_EVENT 0x00000040 44630082d0cSmyers #define ACPI_BTYPE_METHOD 0x00000080 44730082d0cSmyers #define ACPI_BTYPE_MUTEX 0x00000100 44830082d0cSmyers #define ACPI_BTYPE_REGION 0x00000200 44930082d0cSmyers #define ACPI_BTYPE_POWER 0x00000400 45030082d0cSmyers #define ACPI_BTYPE_PROCESSOR 0x00000800 45130082d0cSmyers #define ACPI_BTYPE_THERMAL 0x00001000 45230082d0cSmyers #define ACPI_BTYPE_BUFFER_FIELD 0x00002000 45330082d0cSmyers #define ACPI_BTYPE_DDB_HANDLE 0x00004000 45430082d0cSmyers #define ACPI_BTYPE_DEBUG_OBJECT 0x00008000 4557b1019a6SJerry Jelinek #define ACPI_BTYPE_REFERENCE_OBJECT 0x00010000 /* From Index(), RefOf(), etc (Type6Opcodes) */ 45630082d0cSmyers #define ACPI_BTYPE_RESOURCE 0x00020000 4577b1019a6SJerry Jelinek #define ACPI_BTYPE_NAMED_REFERENCE 0x00040000 /* Generic unresolved Name or Namepath */ 45830082d0cSmyers 45930082d0cSmyers #define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER) 46030082d0cSmyers 46130082d0cSmyers #define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE) 4627b1019a6SJerry Jelinek 4637b1019a6SJerry Jelinek /* Used by Copy, DeRefOf, Store, Printf, Fprintf */ 4647b1019a6SJerry Jelinek 4657b1019a6SJerry Jelinek #define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE_OBJECT | ACPI_BTYPE_DDB_HANDLE) 46630082d0cSmyers #define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR) 46730082d0cSmyers #define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF /* ARG or LOCAL */ 46830082d0cSmyers #define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF 46930082d0cSmyers 4707b1019a6SJerry Jelinek #pragma pack(1) 47130082d0cSmyers 472aa2aa9a6SDana Myers /* 473aa2aa9a6SDana Myers * Information structure for ACPI predefined names. 474aa2aa9a6SDana Myers * Each entry in the table contains the following items: 475aa2aa9a6SDana Myers * 476aa2aa9a6SDana Myers * Name - The ACPI reserved name 477aa2aa9a6SDana Myers * ParamCount - Number of arguments to the method 478aa2aa9a6SDana Myers * ExpectedReturnBtypes - Allowed type(s) for the return value 479aa2aa9a6SDana Myers */ 480aa2aa9a6SDana Myers typedef struct acpi_name_info 481aa2aa9a6SDana Myers { 482aa2aa9a6SDana Myers char Name[ACPI_NAME_SIZE]; 4837b1019a6SJerry Jelinek UINT16 ArgumentList; 484aa2aa9a6SDana Myers UINT8 ExpectedBtypes; 485aa2aa9a6SDana Myers 486aa2aa9a6SDana Myers } ACPI_NAME_INFO; 487aa2aa9a6SDana Myers 488aa2aa9a6SDana Myers /* 489aa2aa9a6SDana Myers * Secondary information structures for ACPI predefined objects that return 490aa2aa9a6SDana Myers * package objects. This structure appears as the next entry in the table 491aa2aa9a6SDana Myers * after the NAME_INFO structure above. 492aa2aa9a6SDana Myers * 493aa2aa9a6SDana Myers * The reason for this is to minimize the size of the predefined name table. 494aa2aa9a6SDana Myers */ 495aa2aa9a6SDana Myers 496aa2aa9a6SDana Myers /* 497aa2aa9a6SDana Myers * Used for ACPI_PTYPE1_FIXED, ACPI_PTYPE1_VAR, ACPI_PTYPE2, 4987b1019a6SJerry Jelinek * ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT, 4997b1019a6SJerry Jelinek * ACPI_PTYPE2_FIX_VAR 500aa2aa9a6SDana Myers */ 501aa2aa9a6SDana Myers typedef struct acpi_package_info 502aa2aa9a6SDana Myers { 503aa2aa9a6SDana Myers UINT8 Type; 504aa2aa9a6SDana Myers UINT8 ObjectType1; 505aa2aa9a6SDana Myers UINT8 Count1; 506aa2aa9a6SDana Myers UINT8 ObjectType2; 507aa2aa9a6SDana Myers UINT8 Count2; 5087b1019a6SJerry Jelinek UINT16 Reserved; 509aa2aa9a6SDana Myers 510aa2aa9a6SDana Myers } ACPI_PACKAGE_INFO; 511aa2aa9a6SDana Myers 512aa2aa9a6SDana Myers /* Used for ACPI_PTYPE2_FIXED */ 513aa2aa9a6SDana Myers 514aa2aa9a6SDana Myers typedef struct acpi_package_info2 515aa2aa9a6SDana Myers { 516aa2aa9a6SDana Myers UINT8 Type; 517aa2aa9a6SDana Myers UINT8 Count; 518aa2aa9a6SDana Myers UINT8 ObjectType[4]; 5197b1019a6SJerry Jelinek UINT8 Reserved; 520aa2aa9a6SDana Myers 521aa2aa9a6SDana Myers } ACPI_PACKAGE_INFO2; 522aa2aa9a6SDana Myers 523aa2aa9a6SDana Myers /* Used for ACPI_PTYPE1_OPTION */ 524aa2aa9a6SDana Myers 525aa2aa9a6SDana Myers typedef struct acpi_package_info3 526aa2aa9a6SDana Myers { 527aa2aa9a6SDana Myers UINT8 Type; 528aa2aa9a6SDana Myers UINT8 Count; 529aa2aa9a6SDana Myers UINT8 ObjectType[2]; 530aa2aa9a6SDana Myers UINT8 TailObjectType; 5317b1019a6SJerry Jelinek UINT16 Reserved; 532aa2aa9a6SDana Myers 533aa2aa9a6SDana Myers } ACPI_PACKAGE_INFO3; 534aa2aa9a6SDana Myers 5357b1019a6SJerry Jelinek typedef struct acpi_package_info4 5367b1019a6SJerry Jelinek { 5377b1019a6SJerry Jelinek UINT8 Type; 5387b1019a6SJerry Jelinek UINT8 ObjectType1; 5397b1019a6SJerry Jelinek UINT8 Count1; 5407b1019a6SJerry Jelinek UINT8 SubObjectTypes; 5417b1019a6SJerry Jelinek UINT8 PkgCount; 5427b1019a6SJerry Jelinek UINT16 Reserved; 5437b1019a6SJerry Jelinek 5447b1019a6SJerry Jelinek } ACPI_PACKAGE_INFO4; 5457b1019a6SJerry Jelinek 546aa2aa9a6SDana Myers typedef union acpi_predefined_info 547aa2aa9a6SDana Myers { 548aa2aa9a6SDana Myers ACPI_NAME_INFO Info; 549aa2aa9a6SDana Myers ACPI_PACKAGE_INFO RetInfo; 550aa2aa9a6SDana Myers ACPI_PACKAGE_INFO2 RetInfo2; 551aa2aa9a6SDana Myers ACPI_PACKAGE_INFO3 RetInfo3; 5527b1019a6SJerry Jelinek ACPI_PACKAGE_INFO4 RetInfo4; 553aa2aa9a6SDana Myers 554aa2aa9a6SDana Myers } ACPI_PREDEFINED_INFO; 555aa2aa9a6SDana Myers 5567b1019a6SJerry Jelinek /* Reset to default packing */ 55757190917SDana Myers 5587b1019a6SJerry Jelinek #pragma pack() 55957190917SDana Myers 56057190917SDana Myers 5617b1019a6SJerry Jelinek /* Return object auto-repair info */ 5627b1019a6SJerry Jelinek 5637b1019a6SJerry Jelinek typedef ACPI_STATUS (*ACPI_OBJECT_CONVERTER) ( 5647b1019a6SJerry Jelinek struct acpi_namespace_node *Scope, 5657b1019a6SJerry Jelinek union acpi_operand_object *OriginalObject, 5667b1019a6SJerry Jelinek union acpi_operand_object **ConvertedObject); 56757190917SDana Myers 5687b1019a6SJerry Jelinek typedef struct acpi_simple_repair_info 5697b1019a6SJerry Jelinek { 5707b1019a6SJerry Jelinek char Name[ACPI_NAME_SIZE]; 5717b1019a6SJerry Jelinek UINT32 UnexpectedBtypes; 5727b1019a6SJerry Jelinek UINT32 PackageIndex; 5737b1019a6SJerry Jelinek ACPI_OBJECT_CONVERTER ObjectConverter; 57457190917SDana Myers 5757b1019a6SJerry Jelinek } ACPI_SIMPLE_REPAIR_INFO; 57657190917SDana Myers 57757190917SDana Myers 578aa2aa9a6SDana Myers /* 579aa2aa9a6SDana Myers * Bitmapped return value types 580aa2aa9a6SDana Myers * Note: the actual data types must be contiguous, a loop in nspredef.c 581aa2aa9a6SDana Myers * depends on this. 582aa2aa9a6SDana Myers */ 583aa2aa9a6SDana Myers #define ACPI_RTYPE_ANY 0x00 584aa2aa9a6SDana Myers #define ACPI_RTYPE_NONE 0x01 585aa2aa9a6SDana Myers #define ACPI_RTYPE_INTEGER 0x02 586aa2aa9a6SDana Myers #define ACPI_RTYPE_STRING 0x04 587aa2aa9a6SDana Myers #define ACPI_RTYPE_BUFFER 0x08 588aa2aa9a6SDana Myers #define ACPI_RTYPE_PACKAGE 0x10 589aa2aa9a6SDana Myers #define ACPI_RTYPE_REFERENCE 0x20 590aa2aa9a6SDana Myers #define ACPI_RTYPE_ALL 0x3F 591aa2aa9a6SDana Myers 592aa2aa9a6SDana Myers #define ACPI_NUM_RTYPES 5 /* Number of actual object types */ 593aa2aa9a6SDana Myers 594aa2aa9a6SDana Myers 5957b1019a6SJerry Jelinek /* Info for running the _REG methods */ 5967b1019a6SJerry Jelinek 5977b1019a6SJerry Jelinek typedef struct acpi_reg_walk_info 5987b1019a6SJerry Jelinek { 5997b1019a6SJerry Jelinek ACPI_ADR_SPACE_TYPE SpaceId; 6007b1019a6SJerry Jelinek UINT32 Function; 6017b1019a6SJerry Jelinek UINT32 RegRunCount; 6027b1019a6SJerry Jelinek 6037b1019a6SJerry Jelinek } ACPI_REG_WALK_INFO; 6047b1019a6SJerry Jelinek 6057b1019a6SJerry Jelinek 6067c478bd9Sstevel@tonic-gate /***************************************************************************** 6077c478bd9Sstevel@tonic-gate * 6087c478bd9Sstevel@tonic-gate * Event typedefs and structs 6097c478bd9Sstevel@tonic-gate * 6107c478bd9Sstevel@tonic-gate ****************************************************************************/ 6117c478bd9Sstevel@tonic-gate 6127b1019a6SJerry Jelinek /* Dispatch info for each host-installed SCI handler */ 6137b1019a6SJerry Jelinek 6147b1019a6SJerry Jelinek typedef struct acpi_sci_handler_info 6157b1019a6SJerry Jelinek { 6167b1019a6SJerry Jelinek struct acpi_sci_handler_info *Next; 6177b1019a6SJerry Jelinek ACPI_SCI_HANDLER Address; /* Address of handler */ 6187b1019a6SJerry Jelinek void *Context; /* Context to be passed to handler */ 6197b1019a6SJerry Jelinek 6207b1019a6SJerry Jelinek } ACPI_SCI_HANDLER_INFO; 6217b1019a6SJerry Jelinek 6227c478bd9Sstevel@tonic-gate /* Dispatch info for each GPE -- either a method or handler, cannot be both */ 6237c478bd9Sstevel@tonic-gate 62426f3cdf0SGordon Ross typedef struct acpi_gpe_handler_info 6257c478bd9Sstevel@tonic-gate { 62626f3cdf0SGordon Ross ACPI_GPE_HANDLER Address; /* Address of handler, if any */ 6277c478bd9Sstevel@tonic-gate void *Context; /* Context to be passed to handler */ 6287c478bd9Sstevel@tonic-gate ACPI_NAMESPACE_NODE *MethodNode; /* Method node for this GPE level (saved) */ 62926f3cdf0SGordon Ross UINT8 OriginalFlags; /* Original (pre-handler) GPE info */ 63026f3cdf0SGordon Ross BOOLEAN OriginallyEnabled; /* True if GPE was originally enabled */ 6317c478bd9Sstevel@tonic-gate 63226f3cdf0SGordon Ross } ACPI_GPE_HANDLER_INFO; 6337c478bd9Sstevel@tonic-gate 6347b1019a6SJerry Jelinek /* Notify info for implicit notify, multiple device objects */ 6357b1019a6SJerry Jelinek 6367b1019a6SJerry Jelinek typedef struct acpi_gpe_notify_info 6377b1019a6SJerry Jelinek { 6387b1019a6SJerry Jelinek ACPI_NAMESPACE_NODE *DeviceNode; /* Device to be notified */ 6397b1019a6SJerry Jelinek struct acpi_gpe_notify_info *Next; 6407b1019a6SJerry Jelinek 6417b1019a6SJerry Jelinek } ACPI_GPE_NOTIFY_INFO; 6427b1019a6SJerry Jelinek 64326f3cdf0SGordon Ross /* 64426f3cdf0SGordon Ross * GPE dispatch info. At any time, the GPE can have at most one type 64526f3cdf0SGordon Ross * of dispatch - Method, Handler, or Implicit Notify. 64626f3cdf0SGordon Ross */ 6477c478bd9Sstevel@tonic-gate typedef union acpi_gpe_dispatch_info 6487c478bd9Sstevel@tonic-gate { 6497c478bd9Sstevel@tonic-gate ACPI_NAMESPACE_NODE *MethodNode; /* Method node for this GPE level */ 6507b1019a6SJerry Jelinek ACPI_GPE_HANDLER_INFO *Handler; /* Installed GPE handler */ 6517b1019a6SJerry Jelinek ACPI_GPE_NOTIFY_INFO *NotifyList; /* List of _PRW devices for implicit notifies */ 6527c478bd9Sstevel@tonic-gate 6537c478bd9Sstevel@tonic-gate } ACPI_GPE_DISPATCH_INFO; 6547c478bd9Sstevel@tonic-gate 6557c478bd9Sstevel@tonic-gate /* 6567c478bd9Sstevel@tonic-gate * Information about a GPE, one per each GPE in an array. 6577c478bd9Sstevel@tonic-gate * NOTE: Important to keep this struct as small as possible. 6587c478bd9Sstevel@tonic-gate */ 6597c478bd9Sstevel@tonic-gate typedef struct acpi_gpe_event_info 6607c478bd9Sstevel@tonic-gate { 661*35786f68SRobert Mustacchi union acpi_gpe_dispatch_info Dispatch; /* Either Method, Handler, or NotifyList */ 662*35786f68SRobert Mustacchi struct acpi_gpe_register_info *RegisterInfo; /* Backpointer to register info */ 663*35786f68SRobert Mustacchi UINT8 Flags; /* Misc info about this GPE */ 664*35786f68SRobert Mustacchi UINT8 GpeNumber; /* This GPE */ 665*35786f68SRobert Mustacchi UINT8 RuntimeCount; /* References to a run GPE */ 666*35786f68SRobert Mustacchi BOOLEAN DisableForDispatch; /* Masked during dispatching */ 6677c478bd9Sstevel@tonic-gate 6687c478bd9Sstevel@tonic-gate } ACPI_GPE_EVENT_INFO; 6697c478bd9Sstevel@tonic-gate 6707c478bd9Sstevel@tonic-gate /* Information about a GPE register pair, one per each status/enable pair in an array */ 6717c478bd9Sstevel@tonic-gate 6727c478bd9Sstevel@tonic-gate typedef struct acpi_gpe_register_info 6737c478bd9Sstevel@tonic-gate { 6747c478bd9Sstevel@tonic-gate ACPI_GENERIC_ADDRESS StatusAddress; /* Address of status reg */ 6757c478bd9Sstevel@tonic-gate ACPI_GENERIC_ADDRESS EnableAddress; /* Address of enable reg */ 6767b1019a6SJerry Jelinek UINT16 BaseGpeNumber; /* Base GPE number for this register */ 6777c478bd9Sstevel@tonic-gate UINT8 EnableForWake; /* GPEs to keep enabled when sleeping */ 6787c478bd9Sstevel@tonic-gate UINT8 EnableForRun; /* GPEs to keep enabled when running */ 679*35786f68SRobert Mustacchi UINT8 MaskForRun; /* GPEs to keep masked when running */ 6807b1019a6SJerry Jelinek UINT8 EnableMask; /* Current mask of enabled GPEs */ 6817c478bd9Sstevel@tonic-gate 6827c478bd9Sstevel@tonic-gate } ACPI_GPE_REGISTER_INFO; 6837c478bd9Sstevel@tonic-gate 6847c478bd9Sstevel@tonic-gate /* 6857c478bd9Sstevel@tonic-gate * Information about a GPE register block, one per each installed block -- 6867c478bd9Sstevel@tonic-gate * GPE0, GPE1, and one per each installed GPE Block Device. 6877c478bd9Sstevel@tonic-gate */ 6887c478bd9Sstevel@tonic-gate typedef struct acpi_gpe_block_info 6897c478bd9Sstevel@tonic-gate { 6907c478bd9Sstevel@tonic-gate ACPI_NAMESPACE_NODE *Node; 6917c478bd9Sstevel@tonic-gate struct acpi_gpe_block_info *Previous; 6927c478bd9Sstevel@tonic-gate struct acpi_gpe_block_info *Next; 6937c478bd9Sstevel@tonic-gate struct acpi_gpe_xrupt_info *XruptBlock; /* Backpointer to interrupt block */ 6947c478bd9Sstevel@tonic-gate ACPI_GPE_REGISTER_INFO *RegisterInfo; /* One per GPE register pair */ 6957c478bd9Sstevel@tonic-gate ACPI_GPE_EVENT_INFO *EventInfo; /* One for each GPE */ 6967b1019a6SJerry Jelinek UINT64 Address; /* Base address of the block */ 6977c478bd9Sstevel@tonic-gate UINT32 RegisterCount; /* Number of register pairs in block */ 69826f3cdf0SGordon Ross UINT16 GpeCount; /* Number of individual GPEs in block */ 6997b1019a6SJerry Jelinek UINT16 BlockBaseNumber;/* Base GPE number for this block */ 7007b1019a6SJerry Jelinek UINT8 SpaceId; 70126f3cdf0SGordon Ross BOOLEAN Initialized; /* TRUE if this block is initialized */ 7027c478bd9Sstevel@tonic-gate 7037c478bd9Sstevel@tonic-gate } ACPI_GPE_BLOCK_INFO; 7047c478bd9Sstevel@tonic-gate 7057c478bd9Sstevel@tonic-gate /* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */ 7067c478bd9Sstevel@tonic-gate 7077c478bd9Sstevel@tonic-gate typedef struct acpi_gpe_xrupt_info 7087c478bd9Sstevel@tonic-gate { 7097c478bd9Sstevel@tonic-gate struct acpi_gpe_xrupt_info *Previous; 7107c478bd9Sstevel@tonic-gate struct acpi_gpe_xrupt_info *Next; 7117c478bd9Sstevel@tonic-gate ACPI_GPE_BLOCK_INFO *GpeBlockListHead; /* List of GPE blocks for this xrupt */ 712450d6964Smyers UINT32 InterruptNumber; /* System interrupt number */ 7137c478bd9Sstevel@tonic-gate 7147c478bd9Sstevel@tonic-gate } ACPI_GPE_XRUPT_INFO; 7157c478bd9Sstevel@tonic-gate 7167c478bd9Sstevel@tonic-gate typedef struct acpi_gpe_walk_info 7177c478bd9Sstevel@tonic-gate { 7187c478bd9Sstevel@tonic-gate ACPI_NAMESPACE_NODE *GpeDevice; 7197c478bd9Sstevel@tonic-gate ACPI_GPE_BLOCK_INFO *GpeBlock; 72026f3cdf0SGordon Ross UINT16 Count; 72126f3cdf0SGordon Ross ACPI_OWNER_ID OwnerId; 72226f3cdf0SGordon Ross BOOLEAN ExecuteByOwnerId; 7237c478bd9Sstevel@tonic-gate 7247c478bd9Sstevel@tonic-gate } ACPI_GPE_WALK_INFO; 7257c478bd9Sstevel@tonic-gate 726aa2aa9a6SDana Myers typedef struct acpi_gpe_device_info 727aa2aa9a6SDana Myers { 728aa2aa9a6SDana Myers UINT32 Index; 729aa2aa9a6SDana Myers UINT32 NextBlockBaseIndex; 730aa2aa9a6SDana Myers ACPI_STATUS Status; 731aa2aa9a6SDana Myers ACPI_NAMESPACE_NODE *GpeDevice; 732aa2aa9a6SDana Myers 733aa2aa9a6SDana Myers } ACPI_GPE_DEVICE_INFO; 7347c478bd9Sstevel@tonic-gate 7357c478bd9Sstevel@tonic-gate typedef ACPI_STATUS (*ACPI_GPE_CALLBACK) ( 73627f7c583Smyers ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 737aa2aa9a6SDana Myers ACPI_GPE_BLOCK_INFO *GpeBlock, 738aa2aa9a6SDana Myers void *Context); 7397c478bd9Sstevel@tonic-gate 7407c478bd9Sstevel@tonic-gate 7417c478bd9Sstevel@tonic-gate /* Information about each particular fixed event */ 7427c478bd9Sstevel@tonic-gate 7437c478bd9Sstevel@tonic-gate typedef struct acpi_fixed_event_handler 7447c478bd9Sstevel@tonic-gate { 74527f7c583Smyers ACPI_EVENT_HANDLER Handler; /* Address of handler. */ 74627f7c583Smyers void *Context; /* Context to be passed to handler */ 7477c478bd9Sstevel@tonic-gate 7487c478bd9Sstevel@tonic-gate } ACPI_FIXED_EVENT_HANDLER; 7497c478bd9Sstevel@tonic-gate 7507c478bd9Sstevel@tonic-gate typedef struct acpi_fixed_event_info 7517c478bd9Sstevel@tonic-gate { 75227f7c583Smyers UINT8 StatusRegisterId; 75327f7c583Smyers UINT8 EnableRegisterId; 75427f7c583Smyers UINT16 StatusBitMask; 75527f7c583Smyers UINT16 EnableBitMask; 7567c478bd9Sstevel@tonic-gate 7577c478bd9Sstevel@tonic-gate } ACPI_FIXED_EVENT_INFO; 7587c478bd9Sstevel@tonic-gate 7597c478bd9Sstevel@tonic-gate /* Information used during field processing */ 7607c478bd9Sstevel@tonic-gate 7617c478bd9Sstevel@tonic-gate typedef struct acpi_field_info 7627c478bd9Sstevel@tonic-gate { 76327f7c583Smyers UINT8 SkipField; 76427f7c583Smyers UINT8 FieldFlag; 76527f7c583Smyers UINT32 PkgLength; 7667c478bd9Sstevel@tonic-gate 7677c478bd9Sstevel@tonic-gate } ACPI_FIELD_INFO; 7687c478bd9Sstevel@tonic-gate 7697c478bd9Sstevel@tonic-gate 7707c478bd9Sstevel@tonic-gate /***************************************************************************** 7717c478bd9Sstevel@tonic-gate * 7727c478bd9Sstevel@tonic-gate * Generic "state" object for stacks 7737c478bd9Sstevel@tonic-gate * 7747c478bd9Sstevel@tonic-gate ****************************************************************************/ 7757c478bd9Sstevel@tonic-gate 7767c478bd9Sstevel@tonic-gate #define ACPI_CONTROL_NORMAL 0xC0 7777c478bd9Sstevel@tonic-gate #define ACPI_CONTROL_CONDITIONAL_EXECUTING 0xC1 7787c478bd9Sstevel@tonic-gate #define ACPI_CONTROL_PREDICATE_EXECUTING 0xC2 7797c478bd9Sstevel@tonic-gate #define ACPI_CONTROL_PREDICATE_FALSE 0xC3 7807c478bd9Sstevel@tonic-gate #define ACPI_CONTROL_PREDICATE_TRUE 0xC4 7817c478bd9Sstevel@tonic-gate 7827c478bd9Sstevel@tonic-gate 78327f7c583Smyers #define ACPI_STATE_COMMON \ 78427f7c583Smyers void *Next; \ 78527f7c583Smyers UINT8 DescriptorType; /* To differentiate various internal objs */\ 78627f7c583Smyers UINT8 Flags; \ 78727f7c583Smyers UINT16 Value; \ 78827f7c583Smyers UINT16 State; 78927f7c583Smyers 79027f7c583Smyers /* There are 2 bytes available here until the next natural alignment boundary */ 7917c478bd9Sstevel@tonic-gate 7927c478bd9Sstevel@tonic-gate typedef struct acpi_common_state 7937c478bd9Sstevel@tonic-gate { 7947c478bd9Sstevel@tonic-gate ACPI_STATE_COMMON 7957c478bd9Sstevel@tonic-gate } ACPI_COMMON_STATE; 7967c478bd9Sstevel@tonic-gate 7977c478bd9Sstevel@tonic-gate 7987c478bd9Sstevel@tonic-gate /* 7997c478bd9Sstevel@tonic-gate * Update state - used to traverse complex objects such as packages 8007c478bd9Sstevel@tonic-gate */ 8017c478bd9Sstevel@tonic-gate typedef struct acpi_update_state 8027c478bd9Sstevel@tonic-gate { 8037c478bd9Sstevel@tonic-gate ACPI_STATE_COMMON 80427f7c583Smyers union acpi_operand_object *Object; 8057c478bd9Sstevel@tonic-gate 8067c478bd9Sstevel@tonic-gate } ACPI_UPDATE_STATE; 8077c478bd9Sstevel@tonic-gate 8087c478bd9Sstevel@tonic-gate 8097c478bd9Sstevel@tonic-gate /* 8107c478bd9Sstevel@tonic-gate * Pkg state - used to traverse nested package structures 8117c478bd9Sstevel@tonic-gate */ 8127c478bd9Sstevel@tonic-gate typedef struct acpi_pkg_state 8137c478bd9Sstevel@tonic-gate { 8147c478bd9Sstevel@tonic-gate ACPI_STATE_COMMON 815*35786f68SRobert Mustacchi UINT32 Index; 81627f7c583Smyers union acpi_operand_object *SourceObject; 81727f7c583Smyers union acpi_operand_object *DestObject; 81827f7c583Smyers struct acpi_walk_state *WalkState; 81927f7c583Smyers void *ThisTargetObj; 82027f7c583Smyers UINT32 NumPackages; 8217c478bd9Sstevel@tonic-gate 8227c478bd9Sstevel@tonic-gate } ACPI_PKG_STATE; 8237c478bd9Sstevel@tonic-gate 8247c478bd9Sstevel@tonic-gate 8257c478bd9Sstevel@tonic-gate /* 8267c478bd9Sstevel@tonic-gate * Control state - one per if/else and while constructs. 8277c478bd9Sstevel@tonic-gate * Allows nesting of these constructs 8287c478bd9Sstevel@tonic-gate */ 8297c478bd9Sstevel@tonic-gate typedef struct acpi_control_state 8307c478bd9Sstevel@tonic-gate { 8317c478bd9Sstevel@tonic-gate ACPI_STATE_COMMON 83227f7c583Smyers UINT16 Opcode; 83327f7c583Smyers union acpi_parse_object *PredicateOp; 83427f7c583Smyers UINT8 *AmlPredicateStart; /* Start of if/while predicate */ 83527f7c583Smyers UINT8 *PackageEnd; /* End of if/while block */ 836*35786f68SRobert Mustacchi UINT64 LoopTimeout; /* While() loop timeout */ 8377c478bd9Sstevel@tonic-gate 8387c478bd9Sstevel@tonic-gate } ACPI_CONTROL_STATE; 8397c478bd9Sstevel@tonic-gate 8407c478bd9Sstevel@tonic-gate 8417c478bd9Sstevel@tonic-gate /* 8427c478bd9Sstevel@tonic-gate * Scope state - current scope during namespace lookups 8437c478bd9Sstevel@tonic-gate */ 8447c478bd9Sstevel@tonic-gate typedef struct acpi_scope_state 8457c478bd9Sstevel@tonic-gate { 8467c478bd9Sstevel@tonic-gate ACPI_STATE_COMMON 84727f7c583Smyers ACPI_NAMESPACE_NODE *Node; 8487c478bd9Sstevel@tonic-gate 8497c478bd9Sstevel@tonic-gate } ACPI_SCOPE_STATE; 8507c478bd9Sstevel@tonic-gate 8517c478bd9Sstevel@tonic-gate 8527c478bd9Sstevel@tonic-gate typedef struct acpi_pscope_state 8537c478bd9Sstevel@tonic-gate { 8547c478bd9Sstevel@tonic-gate ACPI_STATE_COMMON 85527f7c583Smyers UINT32 ArgCount; /* Number of fixed arguments */ 85627f7c583Smyers union acpi_parse_object *Op; /* Current op being parsed */ 85727f7c583Smyers UINT8 *ArgEnd; /* Current argument end */ 85827f7c583Smyers UINT8 *PkgEnd; /* Current package end */ 85927f7c583Smyers UINT32 ArgList; /* Next argument to parse */ 8607c478bd9Sstevel@tonic-gate 8617c478bd9Sstevel@tonic-gate } ACPI_PSCOPE_STATE; 8627c478bd9Sstevel@tonic-gate 8637c478bd9Sstevel@tonic-gate 8647c478bd9Sstevel@tonic-gate /* 8657b1019a6SJerry Jelinek * Thread state - one per thread across multiple walk states. Multiple walk 8667c478bd9Sstevel@tonic-gate * states are created when there are nested control methods executing. 8677c478bd9Sstevel@tonic-gate */ 8687c478bd9Sstevel@tonic-gate typedef struct acpi_thread_state 8697c478bd9Sstevel@tonic-gate { 8707c478bd9Sstevel@tonic-gate ACPI_STATE_COMMON 87127f7c583Smyers UINT8 CurrentSyncLevel; /* Mutex Sync (nested acquire) level */ 87227f7c583Smyers struct acpi_walk_state *WalkStateList; /* Head of list of WalkStates for this thread */ 87327f7c583Smyers union acpi_operand_object *AcquiredMutexList; /* List of all currently acquired mutexes */ 87427f7c583Smyers ACPI_THREAD_ID ThreadId; /* Running thread ID */ 8757c478bd9Sstevel@tonic-gate 8767c478bd9Sstevel@tonic-gate } ACPI_THREAD_STATE; 8777c478bd9Sstevel@tonic-gate 8787c478bd9Sstevel@tonic-gate 8797c478bd9Sstevel@tonic-gate /* 8807c478bd9Sstevel@tonic-gate * Result values - used to accumulate the results of nested 8817c478bd9Sstevel@tonic-gate * AML arguments 8827c478bd9Sstevel@tonic-gate */ 8837c478bd9Sstevel@tonic-gate typedef struct acpi_result_values 8847c478bd9Sstevel@tonic-gate { 8857c478bd9Sstevel@tonic-gate ACPI_STATE_COMMON 886db2bae30SDana Myers union acpi_operand_object *ObjDesc [ACPI_RESULTS_FRAME_OBJ_NUM]; 8877c478bd9Sstevel@tonic-gate 8887c478bd9Sstevel@tonic-gate } ACPI_RESULT_VALUES; 8897c478bd9Sstevel@tonic-gate 8907c478bd9Sstevel@tonic-gate 8917c478bd9Sstevel@tonic-gate typedef 8927c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_PARSE_DOWNWARDS) ( 89327f7c583Smyers struct acpi_walk_state *WalkState, 89427f7c583Smyers union acpi_parse_object **OutOp); 8957c478bd9Sstevel@tonic-gate 8967c478bd9Sstevel@tonic-gate typedef 8977c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_PARSE_UPWARDS) ( 89827f7c583Smyers struct acpi_walk_state *WalkState); 8997c478bd9Sstevel@tonic-gate 9007c478bd9Sstevel@tonic-gate 9017b1019a6SJerry Jelinek /* Global handlers for AML Notifies */ 9027b1019a6SJerry Jelinek 9037b1019a6SJerry Jelinek typedef struct acpi_global_notify_handler 9047b1019a6SJerry Jelinek { 9057b1019a6SJerry Jelinek ACPI_NOTIFY_HANDLER Handler; 9067b1019a6SJerry Jelinek void *Context; 9077b1019a6SJerry Jelinek 9087b1019a6SJerry Jelinek } ACPI_GLOBAL_NOTIFY_HANDLER; 9097b1019a6SJerry Jelinek 9107c478bd9Sstevel@tonic-gate /* 9117c478bd9Sstevel@tonic-gate * Notify info - used to pass info to the deferred notify 9127c478bd9Sstevel@tonic-gate * handler/dispatcher. 9137c478bd9Sstevel@tonic-gate */ 9147c478bd9Sstevel@tonic-gate typedef struct acpi_notify_info 9157c478bd9Sstevel@tonic-gate { 9167c478bd9Sstevel@tonic-gate ACPI_STATE_COMMON 9177b1019a6SJerry Jelinek UINT8 HandlerListId; 91827f7c583Smyers ACPI_NAMESPACE_NODE *Node; 9197b1019a6SJerry Jelinek union acpi_operand_object *HandlerListHead; 9207b1019a6SJerry Jelinek ACPI_GLOBAL_NOTIFY_HANDLER *Global; 9217c478bd9Sstevel@tonic-gate 9227c478bd9Sstevel@tonic-gate } ACPI_NOTIFY_INFO; 9237c478bd9Sstevel@tonic-gate 9247c478bd9Sstevel@tonic-gate 9257c478bd9Sstevel@tonic-gate /* Generic state is union of structs above */ 9267c478bd9Sstevel@tonic-gate 9277c478bd9Sstevel@tonic-gate typedef union acpi_generic_state 9287c478bd9Sstevel@tonic-gate { 92927f7c583Smyers ACPI_COMMON_STATE Common; 93027f7c583Smyers ACPI_CONTROL_STATE Control; 93127f7c583Smyers ACPI_UPDATE_STATE Update; 93227f7c583Smyers ACPI_SCOPE_STATE Scope; 93327f7c583Smyers ACPI_PSCOPE_STATE ParseScope; 93427f7c583Smyers ACPI_PKG_STATE Pkg; 93527f7c583Smyers ACPI_THREAD_STATE Thread; 93627f7c583Smyers ACPI_RESULT_VALUES Results; 93727f7c583Smyers ACPI_NOTIFY_INFO Notify; 9387c478bd9Sstevel@tonic-gate 9397c478bd9Sstevel@tonic-gate } ACPI_GENERIC_STATE; 9407c478bd9Sstevel@tonic-gate 9417c478bd9Sstevel@tonic-gate 9427c478bd9Sstevel@tonic-gate /***************************************************************************** 9437c478bd9Sstevel@tonic-gate * 9447c478bd9Sstevel@tonic-gate * Interpreter typedefs and structs 9457c478bd9Sstevel@tonic-gate * 9467c478bd9Sstevel@tonic-gate ****************************************************************************/ 9477c478bd9Sstevel@tonic-gate 9487c478bd9Sstevel@tonic-gate typedef 9497c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_EXECUTE_OP) ( 95027f7c583Smyers struct acpi_walk_state *WalkState); 9517c478bd9Sstevel@tonic-gate 9527b1019a6SJerry Jelinek /* Address Range info block */ 9537b1019a6SJerry Jelinek 9547b1019a6SJerry Jelinek typedef struct acpi_address_range 9557b1019a6SJerry Jelinek { 9567b1019a6SJerry Jelinek struct acpi_address_range *Next; 9577b1019a6SJerry Jelinek ACPI_NAMESPACE_NODE *RegionNode; 9587b1019a6SJerry Jelinek ACPI_PHYSICAL_ADDRESS StartAddress; 9597b1019a6SJerry Jelinek ACPI_PHYSICAL_ADDRESS EndAddress; 9607b1019a6SJerry Jelinek 9617b1019a6SJerry Jelinek } ACPI_ADDRESS_RANGE; 9627b1019a6SJerry Jelinek 9637c478bd9Sstevel@tonic-gate 9647c478bd9Sstevel@tonic-gate /***************************************************************************** 9657c478bd9Sstevel@tonic-gate * 9667c478bd9Sstevel@tonic-gate * Parser typedefs and structs 9677c478bd9Sstevel@tonic-gate * 9687c478bd9Sstevel@tonic-gate ****************************************************************************/ 9697c478bd9Sstevel@tonic-gate 9707c478bd9Sstevel@tonic-gate /* 9717c478bd9Sstevel@tonic-gate * AML opcode, name, and argument layout 9727c478bd9Sstevel@tonic-gate */ 9737c478bd9Sstevel@tonic-gate typedef struct acpi_opcode_info 9747c478bd9Sstevel@tonic-gate { 9757c478bd9Sstevel@tonic-gate #if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT) 97627f7c583Smyers char *Name; /* Opcode name (disassembler/debug only) */ 9777c478bd9Sstevel@tonic-gate #endif 97827f7c583Smyers UINT32 ParseArgs; /* Grammar/Parse time arguments */ 97927f7c583Smyers UINT32 RuntimeArgs; /* Interpret time arguments */ 98027f7c583Smyers UINT16 Flags; /* Misc flags */ 98127f7c583Smyers UINT8 ObjectType; /* Corresponding internal object type */ 98227f7c583Smyers UINT8 Class; /* Opcode class */ 98327f7c583Smyers UINT8 Type; /* Opcode type */ 9847c478bd9Sstevel@tonic-gate 9857c478bd9Sstevel@tonic-gate } ACPI_OPCODE_INFO; 9867c478bd9Sstevel@tonic-gate 9877b1019a6SJerry Jelinek /* Structure for Resource Tag information */ 9887b1019a6SJerry Jelinek 9897b1019a6SJerry Jelinek typedef struct acpi_tag_info 9907b1019a6SJerry Jelinek { 9917b1019a6SJerry Jelinek UINT32 BitOffset; 9927b1019a6SJerry Jelinek UINT32 BitLength; 9937b1019a6SJerry Jelinek 9947b1019a6SJerry Jelinek } ACPI_TAG_INFO; 9957b1019a6SJerry Jelinek 9967b1019a6SJerry Jelinek /* Value associated with the parse object */ 9977b1019a6SJerry Jelinek 9987c478bd9Sstevel@tonic-gate typedef union acpi_parse_value 9997c478bd9Sstevel@tonic-gate { 100026f3cdf0SGordon Ross UINT64 Integer; /* Integer constant (Up to 64 bits) */ 100127f7c583Smyers UINT32 Size; /* bytelist or field size */ 100227f7c583Smyers char *String; /* NULL terminated string */ 100327f7c583Smyers UINT8 *Buffer; /* buffer or string */ 100427f7c583Smyers char *Name; /* NULL terminated string */ 100527f7c583Smyers union acpi_parse_object *Arg; /* arguments and contained ops */ 10067b1019a6SJerry Jelinek ACPI_TAG_INFO Tag; /* Resource descriptor tag info */ 10077c478bd9Sstevel@tonic-gate 10087c478bd9Sstevel@tonic-gate } ACPI_PARSE_VALUE; 10097c478bd9Sstevel@tonic-gate 1010aa2aa9a6SDana Myers 10117b1019a6SJerry Jelinek #if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT) 1012aa2aa9a6SDana Myers #define ACPI_DISASM_ONLY_MEMBERS(a) a; 1013aa2aa9a6SDana Myers #else 1014aa2aa9a6SDana Myers #define ACPI_DISASM_ONLY_MEMBERS(a) 1015aa2aa9a6SDana Myers #endif 1016aa2aa9a6SDana Myers 1017*35786f68SRobert Mustacchi #if defined(ACPI_ASL_COMPILER) 1018*35786f68SRobert Mustacchi #define ACPI_CONVERTER_ONLY_MEMBERS(a) a; 1019*35786f68SRobert Mustacchi #else 1020*35786f68SRobert Mustacchi #define ACPI_CONVERTER_ONLY_MEMBERS(a) 1021*35786f68SRobert Mustacchi #endif 1022*35786f68SRobert Mustacchi 10237c478bd9Sstevel@tonic-gate #define ACPI_PARSE_COMMON \ 1024*35786f68SRobert Mustacchi union acpi_parse_object *Parent; /* Parent op */\ 1025*35786f68SRobert Mustacchi UINT8 DescriptorType; /* To differentiate various internal objs */\ 1026*35786f68SRobert Mustacchi UINT8 Flags; /* Type of Op */\ 1027*35786f68SRobert Mustacchi UINT16 AmlOpcode; /* AML opcode */\ 1028*35786f68SRobert Mustacchi UINT8 *Aml; /* Address of declaration in AML */\ 1029*35786f68SRobert Mustacchi union acpi_parse_object *Next; /* Next op */\ 1030*35786f68SRobert Mustacchi ACPI_NAMESPACE_NODE *Node; /* For use by interpreter */\ 1031*35786f68SRobert Mustacchi ACPI_PARSE_VALUE Value; /* Value or args associated with the opcode */\ 1032*35786f68SRobert Mustacchi UINT8 ArgListLength; /* Number of elements in the arg list */\ 1033*35786f68SRobert Mustacchi ACPI_DISASM_ONLY_MEMBERS (\ 1034*35786f68SRobert Mustacchi UINT16 DisasmFlags; /* Used during AML disassembly */\ 1035*35786f68SRobert Mustacchi UINT8 DisasmOpcode; /* Subtype used for disassembly */\ 1036*35786f68SRobert Mustacchi char *OperatorSymbol; /* Used for C-style operator name strings */\ 1037*35786f68SRobert Mustacchi char AmlOpName[16]) /* Op name (debug only) */\ 1038*35786f68SRobert Mustacchi ACPI_CONVERTER_ONLY_MEMBERS (\ 1039*35786f68SRobert Mustacchi char *InlineComment; /* Inline comment */\ 1040*35786f68SRobert Mustacchi char *EndNodeComment; /* End of node comment */\ 1041*35786f68SRobert Mustacchi char *NameComment; /* Comment associated with the first parameter of the name node */\ 1042*35786f68SRobert Mustacchi char *CloseBraceComment; /* Comments that come after } on the same as } */\ 1043*35786f68SRobert Mustacchi ACPI_COMMENT_NODE *CommentList; /* comments that appears before this node */\ 1044*35786f68SRobert Mustacchi ACPI_COMMENT_NODE *EndBlkComment; /* comments that at the end of a block but before ) or } */\ 1045*35786f68SRobert Mustacchi char *CvFilename; /* Filename associated with this node. Used for ASL/ASL+ converter */\ 1046*35786f68SRobert Mustacchi char *CvParentFilename) /* Parent filename associated with this node. Used for ASL/ASL+ converter */ 1047*35786f68SRobert Mustacchi 1048*35786f68SRobert Mustacchi 1049*35786f68SRobert Mustacchi /* categories of comments */ 1050*35786f68SRobert Mustacchi 1051*35786f68SRobert Mustacchi typedef enum 1052*35786f68SRobert Mustacchi { 1053*35786f68SRobert Mustacchi STANDARD_COMMENT = 1, 1054*35786f68SRobert Mustacchi INLINE_COMMENT, 1055*35786f68SRobert Mustacchi ENDNODE_COMMENT, 1056*35786f68SRobert Mustacchi OPENBRACE_COMMENT, 1057*35786f68SRobert Mustacchi CLOSE_BRACE_COMMENT, 1058*35786f68SRobert Mustacchi STD_DEFBLK_COMMENT, 1059*35786f68SRobert Mustacchi END_DEFBLK_COMMENT, 1060*35786f68SRobert Mustacchi FILENAME_COMMENT, 1061*35786f68SRobert Mustacchi PARENTFILENAME_COMMENT, 1062*35786f68SRobert Mustacchi ENDBLK_COMMENT, 1063*35786f68SRobert Mustacchi INCLUDE_COMMENT 1064*35786f68SRobert Mustacchi 1065*35786f68SRobert Mustacchi } ASL_COMMENT_TYPES; 1066*35786f68SRobert Mustacchi 1067*35786f68SRobert Mustacchi 1068*35786f68SRobert Mustacchi /* Internal opcodes for DisasmOpcode field above */ 10697b1019a6SJerry Jelinek 10707b1019a6SJerry Jelinek #define ACPI_DASM_BUFFER 0x00 /* Buffer is a simple data buffer */ 10717b1019a6SJerry Jelinek #define ACPI_DASM_RESOURCE 0x01 /* Buffer is a Resource Descriptor */ 10727b1019a6SJerry Jelinek #define ACPI_DASM_STRING 0x02 /* Buffer is a ASCII string */ 10737b1019a6SJerry Jelinek #define ACPI_DASM_UNICODE 0x03 /* Buffer is a Unicode string */ 10747b1019a6SJerry Jelinek #define ACPI_DASM_PLD_METHOD 0x04 /* Buffer is a _PLD method bit-packed buffer */ 10757b1019a6SJerry Jelinek #define ACPI_DASM_UUID 0x05 /* Buffer is a UUID/GUID */ 10767b1019a6SJerry Jelinek #define ACPI_DASM_EISAID 0x06 /* Integer is an EISAID */ 10777b1019a6SJerry Jelinek #define ACPI_DASM_MATCHOP 0x07 /* Parent opcode is a Match() operator */ 10787b1019a6SJerry Jelinek #define ACPI_DASM_LNOT_PREFIX 0x08 /* Start of a LNotEqual (etc.) pair of opcodes */ 10797b1019a6SJerry Jelinek #define ACPI_DASM_LNOT_SUFFIX 0x09 /* End of a LNotEqual (etc.) pair of opcodes */ 10807b1019a6SJerry Jelinek #define ACPI_DASM_HID_STRING 0x0A /* String is a _HID or _CID */ 1081*35786f68SRobert Mustacchi #define ACPI_DASM_IGNORE_SINGLE 0x0B /* Ignore the opcode but not it's children */ 1082*35786f68SRobert Mustacchi #define ACPI_DASM_SWITCH 0x0C /* While is a Switch */ 1083*35786f68SRobert Mustacchi #define ACPI_DASM_SWITCH_PREDICATE 0x0D /* Object is a predicate for a Switch or Case block */ 1084*35786f68SRobert Mustacchi #define ACPI_DASM_CASE 0x0E /* If/Else is a Case in a Switch/Case block */ 1085*35786f68SRobert Mustacchi #define ACPI_DASM_DEFAULT 0x0F /* Else is a Default in a Switch/Case block */ 1086*35786f68SRobert Mustacchi 1087*35786f68SRobert Mustacchi 1088*35786f68SRobert Mustacchi /* 1089*35786f68SRobert Mustacchi * List struct used in the -ca option 1090*35786f68SRobert Mustacchi */ 1091*35786f68SRobert Mustacchi typedef struct acpi_comment_node 1092*35786f68SRobert Mustacchi { 1093*35786f68SRobert Mustacchi char *Comment; 1094*35786f68SRobert Mustacchi struct acpi_comment_node *Next; 1095*35786f68SRobert Mustacchi 1096*35786f68SRobert Mustacchi } ACPI_COMMENT_NODE; 1097*35786f68SRobert Mustacchi 1098*35786f68SRobert Mustacchi 1099*35786f68SRobert Mustacchi typedef struct acpi_comment_addr_node 1100*35786f68SRobert Mustacchi { 1101*35786f68SRobert Mustacchi UINT8 *Addr; 1102*35786f68SRobert Mustacchi struct acpi_comment_addr_node *Next; 1103*35786f68SRobert Mustacchi } ACPI_COMMENT_ADDR_NODE; 1104*35786f68SRobert Mustacchi 1105*35786f68SRobert Mustacchi /* 1106*35786f68SRobert Mustacchi * File node - used for "Include" operator file stack and 1107*35786f68SRobert Mustacchi * depdendency tree for the -ca option 1108*35786f68SRobert Mustacchi */ 1109*35786f68SRobert Mustacchi typedef struct acpi_file_node 1110*35786f68SRobert Mustacchi { 1111*35786f68SRobert Mustacchi void *File; 1112*35786f68SRobert Mustacchi char *Filename; 1113*35786f68SRobert Mustacchi char *FileStart; /* Points to AML and indicates when the AML for this particular file starts. */ 1114*35786f68SRobert Mustacchi char *FileEnd; /* Points to AML and indicates when the AML for this particular file ends. */ 1115*35786f68SRobert Mustacchi struct acpi_file_node *Next; 1116*35786f68SRobert Mustacchi struct acpi_file_node *Parent; 1117*35786f68SRobert Mustacchi BOOLEAN IncludeWritten; 1118*35786f68SRobert Mustacchi ACPI_COMMENT_NODE *IncludeComment; 1119*35786f68SRobert Mustacchi 1120*35786f68SRobert Mustacchi } ACPI_FILE_NODE; 1121*35786f68SRobert Mustacchi 11227c478bd9Sstevel@tonic-gate 11237c478bd9Sstevel@tonic-gate /* 112427f7c583Smyers * Generic operation (for example: If, While, Store) 11257c478bd9Sstevel@tonic-gate */ 11267c478bd9Sstevel@tonic-gate typedef struct acpi_parse_obj_common 11277c478bd9Sstevel@tonic-gate { 11287c478bd9Sstevel@tonic-gate ACPI_PARSE_COMMON 11297c478bd9Sstevel@tonic-gate } ACPI_PARSE_OBJ_COMMON; 11307c478bd9Sstevel@tonic-gate 11317c478bd9Sstevel@tonic-gate 11327c478bd9Sstevel@tonic-gate /* 11337c478bd9Sstevel@tonic-gate * Extended Op for named ops (Scope, Method, etc.), deferred ops (Methods and OpRegions), 11347c478bd9Sstevel@tonic-gate * and bytelists. 11357c478bd9Sstevel@tonic-gate */ 11367c478bd9Sstevel@tonic-gate typedef struct acpi_parse_obj_named 11377c478bd9Sstevel@tonic-gate { 11387c478bd9Sstevel@tonic-gate ACPI_PARSE_COMMON 1139*35786f68SRobert Mustacchi char *Path; 114027f7c583Smyers UINT8 *Data; /* AML body or bytelist data */ 114127f7c583Smyers UINT32 Length; /* AML length */ 114227f7c583Smyers UINT32 Name; /* 4-byte name or zero if no name */ 11437c478bd9Sstevel@tonic-gate 11447c478bd9Sstevel@tonic-gate } ACPI_PARSE_OBJ_NAMED; 11457c478bd9Sstevel@tonic-gate 11467c478bd9Sstevel@tonic-gate 114727f7c583Smyers /* This version is used by the iASL compiler only */ 11487c478bd9Sstevel@tonic-gate 1149*35786f68SRobert Mustacchi #define ACPI_MAX_PARSEOP_NAME 20 115030082d0cSmyers 11517c478bd9Sstevel@tonic-gate typedef struct acpi_parse_obj_asl 11527c478bd9Sstevel@tonic-gate { 11537c478bd9Sstevel@tonic-gate ACPI_PARSE_COMMON 115427f7c583Smyers union acpi_parse_object *Child; 115527f7c583Smyers union acpi_parse_object *ParentMethod; 115627f7c583Smyers char *Filename; 1157*35786f68SRobert Mustacchi BOOLEAN FileChanged; 1158*35786f68SRobert Mustacchi char *ParentFilename; 115927f7c583Smyers char *ExternalName; 116027f7c583Smyers char *Namepath; 116127f7c583Smyers char NameSeg[4]; 116227f7c583Smyers UINT32 ExtraValue; 116327f7c583Smyers UINT32 Column; 116427f7c583Smyers UINT32 LineNumber; 116527f7c583Smyers UINT32 LogicalLineNumber; 116627f7c583Smyers UINT32 LogicalByteOffset; 116727f7c583Smyers UINT32 EndLine; 116827f7c583Smyers UINT32 EndLogicalLine; 116927f7c583Smyers UINT32 AcpiBtype; 117027f7c583Smyers UINT32 AmlLength; 117127f7c583Smyers UINT32 AmlSubtreeLength; 117227f7c583Smyers UINT32 FinalAmlLength; 117327f7c583Smyers UINT32 FinalAmlOffset; 117427f7c583Smyers UINT32 CompileFlags; 117527f7c583Smyers UINT16 ParseOpcode; 117627f7c583Smyers UINT8 AmlOpcodeLength; 117727f7c583Smyers UINT8 AmlPkgLenBytes; 117827f7c583Smyers UINT8 Extra; 117927f7c583Smyers char ParseOpName[ACPI_MAX_PARSEOP_NAME]; 11807c478bd9Sstevel@tonic-gate 11817c478bd9Sstevel@tonic-gate } ACPI_PARSE_OBJ_ASL; 11827c478bd9Sstevel@tonic-gate 11837c478bd9Sstevel@tonic-gate typedef union acpi_parse_object 11847c478bd9Sstevel@tonic-gate { 118527f7c583Smyers ACPI_PARSE_OBJ_COMMON Common; 118627f7c583Smyers ACPI_PARSE_OBJ_NAMED Named; 118727f7c583Smyers ACPI_PARSE_OBJ_ASL Asl; 11887c478bd9Sstevel@tonic-gate 11897c478bd9Sstevel@tonic-gate } ACPI_PARSE_OBJECT; 11907c478bd9Sstevel@tonic-gate 1191*35786f68SRobert Mustacchi typedef struct asl_comment_state 1192*35786f68SRobert Mustacchi { 1193*35786f68SRobert Mustacchi UINT8 CommentType; 1194*35786f68SRobert Mustacchi UINT32 SpacesBefore; 1195*35786f68SRobert Mustacchi ACPI_PARSE_OBJECT *LatestParseOp; 1196*35786f68SRobert Mustacchi ACPI_PARSE_OBJECT *ParsingParenBraceNode; 1197*35786f68SRobert Mustacchi BOOLEAN CaptureComments; 1198*35786f68SRobert Mustacchi 1199*35786f68SRobert Mustacchi } ASL_COMMENT_STATE; 1200*35786f68SRobert Mustacchi 12017c478bd9Sstevel@tonic-gate 12027c478bd9Sstevel@tonic-gate /* 12037c478bd9Sstevel@tonic-gate * Parse state - one state per parser invocation and each control 12047c478bd9Sstevel@tonic-gate * method. 12057c478bd9Sstevel@tonic-gate */ 12067c478bd9Sstevel@tonic-gate typedef struct acpi_parse_state 12077c478bd9Sstevel@tonic-gate { 120827f7c583Smyers UINT8 *AmlStart; /* First AML byte */ 120927f7c583Smyers UINT8 *Aml; /* Next AML byte */ 121027f7c583Smyers UINT8 *AmlEnd; /* (last + 1) AML byte */ 121127f7c583Smyers UINT8 *PkgStart; /* Current package begin */ 121227f7c583Smyers UINT8 *PkgEnd; /* Current package end */ 121327f7c583Smyers union acpi_parse_object *StartOp; /* Root of parse tree */ 121427f7c583Smyers struct acpi_namespace_node *StartNode; 121527f7c583Smyers union acpi_generic_state *Scope; /* Current scope */ 121627f7c583Smyers union acpi_parse_object *StartScope; 121727f7c583Smyers UINT32 AmlSize; 12187c478bd9Sstevel@tonic-gate 12197c478bd9Sstevel@tonic-gate } ACPI_PARSE_STATE; 12207c478bd9Sstevel@tonic-gate 12217c478bd9Sstevel@tonic-gate 12227c478bd9Sstevel@tonic-gate /* Parse object flags */ 12237c478bd9Sstevel@tonic-gate 12247b1019a6SJerry Jelinek #define ACPI_PARSEOP_GENERIC 0x01 12257b1019a6SJerry Jelinek #define ACPI_PARSEOP_NAMED_OBJECT 0x02 12267b1019a6SJerry Jelinek #define ACPI_PARSEOP_DEFERRED 0x04 12277b1019a6SJerry Jelinek #define ACPI_PARSEOP_BYTELIST 0x08 12287b1019a6SJerry Jelinek #define ACPI_PARSEOP_IN_STACK 0x10 12297b1019a6SJerry Jelinek #define ACPI_PARSEOP_TARGET 0x20 12307b1019a6SJerry Jelinek #define ACPI_PARSEOP_IN_CACHE 0x80 12317c478bd9Sstevel@tonic-gate 12327c478bd9Sstevel@tonic-gate /* Parse object DisasmFlags */ 12337c478bd9Sstevel@tonic-gate 1234*35786f68SRobert Mustacchi #define ACPI_PARSEOP_IGNORE 0x0001 1235*35786f68SRobert Mustacchi #define ACPI_PARSEOP_PARAMETER_LIST 0x0002 1236*35786f68SRobert Mustacchi #define ACPI_PARSEOP_EMPTY_TERMLIST 0x0004 1237*35786f68SRobert Mustacchi #define ACPI_PARSEOP_PREDEFINED_CHECKED 0x0008 1238*35786f68SRobert Mustacchi #define ACPI_PARSEOP_CLOSING_PAREN 0x0010 1239*35786f68SRobert Mustacchi #define ACPI_PARSEOP_COMPOUND_ASSIGNMENT 0x0020 1240*35786f68SRobert Mustacchi #define ACPI_PARSEOP_ASSIGNMENT 0x0040 1241*35786f68SRobert Mustacchi #define ACPI_PARSEOP_ELSEIF 0x0080 1242*35786f68SRobert Mustacchi #define ACPI_PARSEOP_LEGACY_ASL_ONLY 0x0100 12437c478bd9Sstevel@tonic-gate 12447c478bd9Sstevel@tonic-gate 12457c478bd9Sstevel@tonic-gate /***************************************************************************** 12467c478bd9Sstevel@tonic-gate * 12477c478bd9Sstevel@tonic-gate * Hardware (ACPI registers) and PNP 12487c478bd9Sstevel@tonic-gate * 12497c478bd9Sstevel@tonic-gate ****************************************************************************/ 12507c478bd9Sstevel@tonic-gate 12517c478bd9Sstevel@tonic-gate typedef struct acpi_bit_register_info 12527c478bd9Sstevel@tonic-gate { 125327f7c583Smyers UINT8 ParentRegister; 125427f7c583Smyers UINT8 BitPosition; 125527f7c583Smyers UINT16 AccessBitMask; 12567c478bd9Sstevel@tonic-gate 12577c478bd9Sstevel@tonic-gate } ACPI_BIT_REGISTER_INFO; 12587c478bd9Sstevel@tonic-gate 12597c478bd9Sstevel@tonic-gate 126027f7c583Smyers /* 126127f7c583Smyers * Some ACPI registers have bits that must be ignored -- meaning that they 126227f7c583Smyers * must be preserved. 126327f7c583Smyers */ 126427f7c583Smyers #define ACPI_PM1_STATUS_PRESERVED_BITS 0x0800 /* Bit 11 */ 126527f7c583Smyers 1266aa2aa9a6SDana Myers /* Write-only bits must be zeroed by software */ 1267aa2aa9a6SDana Myers 1268aa2aa9a6SDana Myers #define ACPI_PM1_CONTROL_WRITEONLY_BITS 0x2004 /* Bits 13, 2 */ 1269aa2aa9a6SDana Myers 1270aa2aa9a6SDana Myers /* For control registers, both ignored and reserved bits must be preserved */ 1271aa2aa9a6SDana Myers 1272aa2aa9a6SDana Myers /* 1273aa2aa9a6SDana Myers * For PM1 control, the SCI enable bit (bit 0, SCI_EN) is defined by the 1274aa2aa9a6SDana Myers * ACPI specification to be a "preserved" bit - "OSPM always preserves this 1275aa2aa9a6SDana Myers * bit position", section 4.7.3.2.1. However, on some machines the OS must 1276aa2aa9a6SDana Myers * write a one to this bit after resume for the machine to work properly. 1277aa2aa9a6SDana Myers * To enable this, we no longer attempt to preserve this bit. No machines 1278aa2aa9a6SDana Myers * are known to fail if the bit is not preserved. (May 2009) 1279aa2aa9a6SDana Myers */ 1280aa2aa9a6SDana Myers #define ACPI_PM1_CONTROL_IGNORED_BITS 0x0200 /* Bit 9 */ 1281aa2aa9a6SDana Myers #define ACPI_PM1_CONTROL_RESERVED_BITS 0xC1F8 /* Bits 14-15, 3-8 */ 1282aa2aa9a6SDana Myers #define ACPI_PM1_CONTROL_PRESERVED_BITS \ 1283aa2aa9a6SDana Myers (ACPI_PM1_CONTROL_IGNORED_BITS | ACPI_PM1_CONTROL_RESERVED_BITS) 1284aa2aa9a6SDana Myers 1285aa2aa9a6SDana Myers #define ACPI_PM2_CONTROL_PRESERVED_BITS 0xFFFFFFFE /* All except bit 0 */ 128627f7c583Smyers 12877c478bd9Sstevel@tonic-gate /* 12887c478bd9Sstevel@tonic-gate * Register IDs 12897c478bd9Sstevel@tonic-gate * These are the full ACPI registers 12907c478bd9Sstevel@tonic-gate */ 12917c478bd9Sstevel@tonic-gate #define ACPI_REGISTER_PM1_STATUS 0x01 12927c478bd9Sstevel@tonic-gate #define ACPI_REGISTER_PM1_ENABLE 0x02 12937c478bd9Sstevel@tonic-gate #define ACPI_REGISTER_PM1_CONTROL 0x03 1294aa2aa9a6SDana Myers #define ACPI_REGISTER_PM2_CONTROL 0x04 1295aa2aa9a6SDana Myers #define ACPI_REGISTER_PM_TIMER 0x05 1296aa2aa9a6SDana Myers #define ACPI_REGISTER_PROCESSOR_BLOCK 0x06 1297aa2aa9a6SDana Myers #define ACPI_REGISTER_SMI_COMMAND_BLOCK 0x07 12987c478bd9Sstevel@tonic-gate 12997c478bd9Sstevel@tonic-gate 13007c478bd9Sstevel@tonic-gate /* Masks used to access the BitRegisters */ 13017c478bd9Sstevel@tonic-gate 13027c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_TIMER_STATUS 0x0001 13037c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_BUS_MASTER_STATUS 0x0010 13047c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_GLOBAL_LOCK_STATUS 0x0020 13057c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_POWER_BUTTON_STATUS 0x0100 13067c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_SLEEP_BUTTON_STATUS 0x0200 13077c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_RT_CLOCK_STATUS 0x0400 13087c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_PCIEXP_WAKE_STATUS 0x4000 /* ACPI 3.0 */ 13097c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_WAKE_STATUS 0x8000 13107c478bd9Sstevel@tonic-gate 131127f7c583Smyers #define ACPI_BITMASK_ALL_FIXED_STATUS (\ 131227f7c583Smyers ACPI_BITMASK_TIMER_STATUS | \ 131327f7c583Smyers ACPI_BITMASK_BUS_MASTER_STATUS | \ 131427f7c583Smyers ACPI_BITMASK_GLOBAL_LOCK_STATUS | \ 131527f7c583Smyers ACPI_BITMASK_POWER_BUTTON_STATUS | \ 131627f7c583Smyers ACPI_BITMASK_SLEEP_BUTTON_STATUS | \ 131727f7c583Smyers ACPI_BITMASK_RT_CLOCK_STATUS | \ 131826f3cdf0SGordon Ross ACPI_BITMASK_PCIEXP_WAKE_STATUS | \ 131927f7c583Smyers ACPI_BITMASK_WAKE_STATUS) 13207c478bd9Sstevel@tonic-gate 13217c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_TIMER_ENABLE 0x0001 13227c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_GLOBAL_LOCK_ENABLE 0x0020 13237c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_POWER_BUTTON_ENABLE 0x0100 13247c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_SLEEP_BUTTON_ENABLE 0x0200 13257c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_RT_CLOCK_ENABLE 0x0400 13267c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_PCIEXP_WAKE_DISABLE 0x4000 /* ACPI 3.0 */ 13277c478bd9Sstevel@tonic-gate 13287c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_SCI_ENABLE 0x0001 13297c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_BUS_MASTER_RLD 0x0002 13307c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_GLOBAL_LOCK_RELEASE 0x0004 1331aa2aa9a6SDana Myers #define ACPI_BITMASK_SLEEP_TYPE 0x1C00 13327c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_SLEEP_ENABLE 0x2000 13337c478bd9Sstevel@tonic-gate 13347c478bd9Sstevel@tonic-gate #define ACPI_BITMASK_ARB_DISABLE 0x0001 13357c478bd9Sstevel@tonic-gate 13367c478bd9Sstevel@tonic-gate 13377c478bd9Sstevel@tonic-gate /* Raw bit position of each BitRegister */ 13387c478bd9Sstevel@tonic-gate 13397c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_TIMER_STATUS 0x00 13407c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_BUS_MASTER_STATUS 0x04 13417c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_GLOBAL_LOCK_STATUS 0x05 13427c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_POWER_BUTTON_STATUS 0x08 13437c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_SLEEP_BUTTON_STATUS 0x09 13447c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_RT_CLOCK_STATUS 0x0A 13457c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_PCIEXP_WAKE_STATUS 0x0E /* ACPI 3.0 */ 13467c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_WAKE_STATUS 0x0F 13477c478bd9Sstevel@tonic-gate 13487c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_TIMER_ENABLE 0x00 13497c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE 0x05 13507c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_POWER_BUTTON_ENABLE 0x08 13517c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE 0x09 13527c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_RT_CLOCK_ENABLE 0x0A 13537c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE 0x0E /* ACPI 3.0 */ 13547c478bd9Sstevel@tonic-gate 13557c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_SCI_ENABLE 0x00 13567c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_BUS_MASTER_RLD 0x01 13577c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE 0x02 1358aa2aa9a6SDana Myers #define ACPI_BITPOSITION_SLEEP_TYPE 0x0A 13597c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_SLEEP_ENABLE 0x0D 13607c478bd9Sstevel@tonic-gate 13617c478bd9Sstevel@tonic-gate #define ACPI_BITPOSITION_ARB_DISABLE 0x00 13627c478bd9Sstevel@tonic-gate 13637c478bd9Sstevel@tonic-gate 1364aa2aa9a6SDana Myers /* Structs and definitions for _OSI support and I/O port validation */ 1365aa2aa9a6SDana Myers 1366aa2aa9a6SDana Myers #define ACPI_ALWAYS_ILLEGAL 0x00 1367aa2aa9a6SDana Myers 1368aa2aa9a6SDana Myers typedef struct acpi_interface_info 1369aa2aa9a6SDana Myers { 137026f3cdf0SGordon Ross char *Name; 137126f3cdf0SGordon Ross struct acpi_interface_info *Next; 137226f3cdf0SGordon Ross UINT8 Flags; 137326f3cdf0SGordon Ross UINT8 Value; 1374aa2aa9a6SDana Myers 1375aa2aa9a6SDana Myers } ACPI_INTERFACE_INFO; 1376aa2aa9a6SDana Myers 137726f3cdf0SGordon Ross #define ACPI_OSI_INVALID 0x01 137826f3cdf0SGordon Ross #define ACPI_OSI_DYNAMIC 0x02 13797b1019a6SJerry Jelinek #define ACPI_OSI_FEATURE 0x04 13807b1019a6SJerry Jelinek #define ACPI_OSI_DEFAULT_INVALID 0x08 13817b1019a6SJerry Jelinek #define ACPI_OSI_OPTIONAL_FEATURE (ACPI_OSI_FEATURE | ACPI_OSI_DEFAULT_INVALID | ACPI_OSI_INVALID) 138226f3cdf0SGordon Ross 1383aa2aa9a6SDana Myers typedef struct acpi_port_info 1384aa2aa9a6SDana Myers { 1385aa2aa9a6SDana Myers char *Name; 1386aa2aa9a6SDana Myers UINT16 Start; 1387aa2aa9a6SDana Myers UINT16 End; 1388aa2aa9a6SDana Myers UINT8 OsiDependency; 1389aa2aa9a6SDana Myers 1390aa2aa9a6SDana Myers } ACPI_PORT_INFO; 1391aa2aa9a6SDana Myers 1392aa2aa9a6SDana Myers 13937c478bd9Sstevel@tonic-gate /***************************************************************************** 13947c478bd9Sstevel@tonic-gate * 13957c478bd9Sstevel@tonic-gate * Resource descriptors 13967c478bd9Sstevel@tonic-gate * 13977c478bd9Sstevel@tonic-gate ****************************************************************************/ 13987c478bd9Sstevel@tonic-gate 13997c478bd9Sstevel@tonic-gate /* ResourceType values */ 14007c478bd9Sstevel@tonic-gate 1401186507a7Smyers #define ACPI_ADDRESS_TYPE_MEMORY_RANGE 0 1402186507a7Smyers #define ACPI_ADDRESS_TYPE_IO_RANGE 1 1403186507a7Smyers #define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE 2 14047c478bd9Sstevel@tonic-gate 14057c478bd9Sstevel@tonic-gate /* Resource descriptor types and masks */ 14067c478bd9Sstevel@tonic-gate 1407186507a7Smyers #define ACPI_RESOURCE_NAME_LARGE 0x80 1408186507a7Smyers #define ACPI_RESOURCE_NAME_SMALL 0x00 14097c478bd9Sstevel@tonic-gate 1410186507a7Smyers #define ACPI_RESOURCE_NAME_SMALL_MASK 0x78 /* Bits 6:3 contain the type */ 1411186507a7Smyers #define ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK 0x07 /* Bits 2:0 contain the length */ 1412186507a7Smyers #define ACPI_RESOURCE_NAME_LARGE_MASK 0x7F /* Bits 6:0 contain the type */ 14137c478bd9Sstevel@tonic-gate 14147c478bd9Sstevel@tonic-gate 14157c478bd9Sstevel@tonic-gate /* 1416186507a7Smyers * Small resource descriptor "names" as defined by the ACPI specification. 1417186507a7Smyers * Note: Bits 2:0 are used for the descriptor length 14187c478bd9Sstevel@tonic-gate */ 1419186507a7Smyers #define ACPI_RESOURCE_NAME_IRQ 0x20 1420186507a7Smyers #define ACPI_RESOURCE_NAME_DMA 0x28 1421186507a7Smyers #define ACPI_RESOURCE_NAME_START_DEPENDENT 0x30 1422186507a7Smyers #define ACPI_RESOURCE_NAME_END_DEPENDENT 0x38 1423186507a7Smyers #define ACPI_RESOURCE_NAME_IO 0x40 1424186507a7Smyers #define ACPI_RESOURCE_NAME_FIXED_IO 0x48 14257b1019a6SJerry Jelinek #define ACPI_RESOURCE_NAME_FIXED_DMA 0x50 1426186507a7Smyers #define ACPI_RESOURCE_NAME_RESERVED_S2 0x58 1427186507a7Smyers #define ACPI_RESOURCE_NAME_RESERVED_S3 0x60 1428186507a7Smyers #define ACPI_RESOURCE_NAME_RESERVED_S4 0x68 1429186507a7Smyers #define ACPI_RESOURCE_NAME_VENDOR_SMALL 0x70 1430186507a7Smyers #define ACPI_RESOURCE_NAME_END_TAG 0x78 14317c478bd9Sstevel@tonic-gate 14327c478bd9Sstevel@tonic-gate /* 1433186507a7Smyers * Large resource descriptor "names" as defined by the ACPI specification. 1434186507a7Smyers * Note: includes the Large Descriptor bit in bit[7] 14357c478bd9Sstevel@tonic-gate */ 1436186507a7Smyers #define ACPI_RESOURCE_NAME_MEMORY24 0x81 1437186507a7Smyers #define ACPI_RESOURCE_NAME_GENERIC_REGISTER 0x82 1438186507a7Smyers #define ACPI_RESOURCE_NAME_RESERVED_L1 0x83 1439186507a7Smyers #define ACPI_RESOURCE_NAME_VENDOR_LARGE 0x84 1440186507a7Smyers #define ACPI_RESOURCE_NAME_MEMORY32 0x85 1441186507a7Smyers #define ACPI_RESOURCE_NAME_FIXED_MEMORY32 0x86 1442186507a7Smyers #define ACPI_RESOURCE_NAME_ADDRESS32 0x87 1443186507a7Smyers #define ACPI_RESOURCE_NAME_ADDRESS16 0x88 1444186507a7Smyers #define ACPI_RESOURCE_NAME_EXTENDED_IRQ 0x89 1445186507a7Smyers #define ACPI_RESOURCE_NAME_ADDRESS64 0x8A 1446186507a7Smyers #define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 0x8B 14477b1019a6SJerry Jelinek #define ACPI_RESOURCE_NAME_GPIO 0x8C 1448*35786f68SRobert Mustacchi #define ACPI_RESOURCE_NAME_PIN_FUNCTION 0x8D 14497b1019a6SJerry Jelinek #define ACPI_RESOURCE_NAME_SERIAL_BUS 0x8E 1450*35786f68SRobert Mustacchi #define ACPI_RESOURCE_NAME_PIN_CONFIG 0x8F 1451*35786f68SRobert Mustacchi #define ACPI_RESOURCE_NAME_PIN_GROUP 0x90 1452*35786f68SRobert Mustacchi #define ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION 0x91 1453*35786f68SRobert Mustacchi #define ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG 0x92 1454*35786f68SRobert Mustacchi #define ACPI_RESOURCE_NAME_LARGE_MAX 0x92 14557c478bd9Sstevel@tonic-gate 14567c478bd9Sstevel@tonic-gate 14577c478bd9Sstevel@tonic-gate /***************************************************************************** 14587c478bd9Sstevel@tonic-gate * 14597c478bd9Sstevel@tonic-gate * Miscellaneous 14607c478bd9Sstevel@tonic-gate * 14617c478bd9Sstevel@tonic-gate ****************************************************************************/ 14627c478bd9Sstevel@tonic-gate 146327f7c583Smyers #define ACPI_ASCII_ZERO 0x30 14647c478bd9Sstevel@tonic-gate 14657c478bd9Sstevel@tonic-gate 146657190917SDana Myers /***************************************************************************** 146757190917SDana Myers * 146857190917SDana Myers * Disassembler 146957190917SDana Myers * 147057190917SDana Myers ****************************************************************************/ 147157190917SDana Myers 147257190917SDana Myers typedef struct acpi_external_list 147357190917SDana Myers { 147457190917SDana Myers char *Path; 147557190917SDana Myers char *InternalPath; 147657190917SDana Myers struct acpi_external_list *Next; 147757190917SDana Myers UINT32 Value; 147857190917SDana Myers UINT16 Length; 14797b1019a6SJerry Jelinek UINT16 Flags; 148057190917SDana Myers UINT8 Type; 148157190917SDana Myers 148257190917SDana Myers } ACPI_EXTERNAL_LIST; 148357190917SDana Myers 148457190917SDana Myers /* Values for Flags field above */ 148557190917SDana Myers 14867b1019a6SJerry Jelinek #define ACPI_EXT_RESOLVED_REFERENCE 0x01 /* Object was resolved during cross ref */ 14877b1019a6SJerry Jelinek #define ACPI_EXT_ORIGIN_FROM_FILE 0x02 /* External came from a file */ 14887b1019a6SJerry Jelinek #define ACPI_EXT_INTERNAL_PATH_ALLOCATED 0x04 /* Deallocate internal path on completion */ 14897b1019a6SJerry Jelinek #define ACPI_EXT_EXTERNAL_EMITTED 0x08 /* External() statement has been emitted */ 14907b1019a6SJerry Jelinek #define ACPI_EXT_ORIGIN_FROM_OPCODE 0x10 /* External came from a External() opcode */ 1491*35786f68SRobert Mustacchi #define ACPI_EXT_CONFLICTING_DECLARATION 0x20 /* External has a conflicting declaration within AML */ 149257190917SDana Myers 149357190917SDana Myers 149426f3cdf0SGordon Ross typedef struct acpi_external_file 149526f3cdf0SGordon Ross { 149626f3cdf0SGordon Ross char *Path; 149726f3cdf0SGordon Ross struct acpi_external_file *Next; 149826f3cdf0SGordon Ross 149926f3cdf0SGordon Ross } ACPI_EXTERNAL_FILE; 150026f3cdf0SGordon Ross 150126f3cdf0SGordon Ross 1502*35786f68SRobert Mustacchi typedef struct acpi_parse_object_list 1503*35786f68SRobert Mustacchi { 1504*35786f68SRobert Mustacchi ACPI_PARSE_OBJECT *Op; 1505*35786f68SRobert Mustacchi struct acpi_parse_object_list *Next; 1506*35786f68SRobert Mustacchi 1507*35786f68SRobert Mustacchi } ACPI_PARSE_OBJECT_LIST; 1508*35786f68SRobert Mustacchi 15097c478bd9Sstevel@tonic-gate /***************************************************************************** 15107c478bd9Sstevel@tonic-gate * 15117c478bd9Sstevel@tonic-gate * Debugger 15127c478bd9Sstevel@tonic-gate * 15137c478bd9Sstevel@tonic-gate ****************************************************************************/ 15147c478bd9Sstevel@tonic-gate 15157c478bd9Sstevel@tonic-gate typedef struct acpi_db_method_info 15167c478bd9Sstevel@tonic-gate { 15177b1019a6SJerry Jelinek ACPI_HANDLE Method; 1518db2bae30SDana Myers ACPI_HANDLE MainThreadGate; 1519db2bae30SDana Myers ACPI_HANDLE ThreadCompleteGate; 1520aa2aa9a6SDana Myers ACPI_HANDLE InfoGate; 152126f3cdf0SGordon Ross ACPI_THREAD_ID *Threads; 1522db2bae30SDana Myers UINT32 NumThreads; 1523db2bae30SDana Myers UINT32 NumCreated; 1524db2bae30SDana Myers UINT32 NumCompleted; 1525db2bae30SDana Myers 152627f7c583Smyers char *Name; 152727f7c583Smyers UINT32 Flags; 152827f7c583Smyers UINT32 NumLoops; 15297b1019a6SJerry Jelinek char Pathname[ACPI_DB_LINE_BUFFER_SIZE]; 1530db2bae30SDana Myers char **Args; 153126f3cdf0SGordon Ross ACPI_OBJECT_TYPE *Types; 1532db2bae30SDana Myers 1533db2bae30SDana Myers /* 1534*35786f68SRobert Mustacchi * Arguments to be passed to method for the commands Threads and 1535*35786f68SRobert Mustacchi * Background. Note, ACPI specifies a maximum of 7 arguments (0 - 6). 1536*35786f68SRobert Mustacchi * 1537*35786f68SRobert Mustacchi * For the Threads command, the Number of threads, ID of current 1538*35786f68SRobert Mustacchi * thread and Index of current thread inside all them created. 1539db2bae30SDana Myers */ 1540db2bae30SDana Myers char InitArgs; 15417b1019a6SJerry Jelinek #ifdef ACPI_DEBUGGER 1542*35786f68SRobert Mustacchi ACPI_OBJECT_TYPE ArgTypes[ACPI_METHOD_NUM_ARGS]; 15437b1019a6SJerry Jelinek #endif 1544*35786f68SRobert Mustacchi char *Arguments[ACPI_METHOD_NUM_ARGS]; 1545db2bae30SDana Myers char NumThreadsStr[11]; 1546db2bae30SDana Myers char IdOfThreadStr[11]; 1547db2bae30SDana Myers char IndexOfThreadStr[11]; 15487c478bd9Sstevel@tonic-gate 15497c478bd9Sstevel@tonic-gate } ACPI_DB_METHOD_INFO; 15507c478bd9Sstevel@tonic-gate 15517c478bd9Sstevel@tonic-gate typedef struct acpi_integrity_info 15527c478bd9Sstevel@tonic-gate { 155327f7c583Smyers UINT32 Nodes; 155427f7c583Smyers UINT32 Objects; 15557c478bd9Sstevel@tonic-gate 15567c478bd9Sstevel@tonic-gate } ACPI_INTEGRITY_INFO; 15577c478bd9Sstevel@tonic-gate 15587c478bd9Sstevel@tonic-gate 15597b1019a6SJerry Jelinek #define ACPI_DB_DISABLE_OUTPUT 0x00 156027f7c583Smyers #define ACPI_DB_REDIRECTABLE_OUTPUT 0x01 156127f7c583Smyers #define ACPI_DB_CONSOLE_OUTPUT 0x02 156227f7c583Smyers #define ACPI_DB_DUPLICATE_OUTPUT 0x03 15637c478bd9Sstevel@tonic-gate 15647c478bd9Sstevel@tonic-gate 15657b1019a6SJerry Jelinek typedef struct acpi_object_info 15667b1019a6SJerry Jelinek { 15677b1019a6SJerry Jelinek UINT32 Types[ACPI_TOTAL_TYPES]; 15687b1019a6SJerry Jelinek 15697b1019a6SJerry Jelinek } ACPI_OBJECT_INFO; 15707b1019a6SJerry Jelinek 15717b1019a6SJerry Jelinek 15727c478bd9Sstevel@tonic-gate /***************************************************************************** 15737c478bd9Sstevel@tonic-gate * 15747c478bd9Sstevel@tonic-gate * Debug 15757c478bd9Sstevel@tonic-gate * 15767c478bd9Sstevel@tonic-gate ****************************************************************************/ 15777c478bd9Sstevel@tonic-gate 15787c478bd9Sstevel@tonic-gate /* Entry for a memory allocation (debug only) */ 15797c478bd9Sstevel@tonic-gate 158027f7c583Smyers #define ACPI_MEM_MALLOC 0 158127f7c583Smyers #define ACPI_MEM_CALLOC 1 158227f7c583Smyers #define ACPI_MAX_MODULE_NAME 16 15837c478bd9Sstevel@tonic-gate 15847c478bd9Sstevel@tonic-gate #define ACPI_COMMON_DEBUG_MEM_HEADER \ 158527f7c583Smyers struct acpi_debug_mem_block *Previous; \ 158627f7c583Smyers struct acpi_debug_mem_block *Next; \ 158727f7c583Smyers UINT32 Size; \ 158827f7c583Smyers UINT32 Component; \ 158927f7c583Smyers UINT32 Line; \ 159027f7c583Smyers char Module[ACPI_MAX_MODULE_NAME]; \ 159127f7c583Smyers UINT8 AllocType; 15927c478bd9Sstevel@tonic-gate 15937c478bd9Sstevel@tonic-gate typedef struct acpi_debug_mem_header 15947c478bd9Sstevel@tonic-gate { 15957c478bd9Sstevel@tonic-gate ACPI_COMMON_DEBUG_MEM_HEADER 15967c478bd9Sstevel@tonic-gate 15977c478bd9Sstevel@tonic-gate } ACPI_DEBUG_MEM_HEADER; 15987c478bd9Sstevel@tonic-gate 15997c478bd9Sstevel@tonic-gate typedef struct acpi_debug_mem_block 16007c478bd9Sstevel@tonic-gate { 16017c478bd9Sstevel@tonic-gate ACPI_COMMON_DEBUG_MEM_HEADER 160227f7c583Smyers UINT64 UserSpace; 16037c478bd9Sstevel@tonic-gate 16047c478bd9Sstevel@tonic-gate } ACPI_DEBUG_MEM_BLOCK; 16057c478bd9Sstevel@tonic-gate 16067c478bd9Sstevel@tonic-gate 16077c478bd9Sstevel@tonic-gate #define ACPI_MEM_LIST_GLOBAL 0 16087c478bd9Sstevel@tonic-gate #define ACPI_MEM_LIST_NSNODE 1 1609450d6964Smyers #define ACPI_MEM_LIST_MAX 1 1610450d6964Smyers #define ACPI_NUM_MEM_LISTS 2 16117c478bd9Sstevel@tonic-gate 16127c478bd9Sstevel@tonic-gate 16137b1019a6SJerry Jelinek /***************************************************************************** 16147b1019a6SJerry Jelinek * 16157b1019a6SJerry Jelinek * Info/help support 16167b1019a6SJerry Jelinek * 16177b1019a6SJerry Jelinek ****************************************************************************/ 16187b1019a6SJerry Jelinek 16197b1019a6SJerry Jelinek typedef struct ah_predefined_name 16207b1019a6SJerry Jelinek { 16217b1019a6SJerry Jelinek char *Name; 16227b1019a6SJerry Jelinek char *Description; 16237b1019a6SJerry Jelinek #ifndef ACPI_ASL_COMPILER 16247b1019a6SJerry Jelinek char *Action; 16257b1019a6SJerry Jelinek #endif 16267b1019a6SJerry Jelinek 16277b1019a6SJerry Jelinek } AH_PREDEFINED_NAME; 16287b1019a6SJerry Jelinek 16297b1019a6SJerry Jelinek typedef struct ah_device_id 16307b1019a6SJerry Jelinek { 16317b1019a6SJerry Jelinek char *Name; 16327b1019a6SJerry Jelinek char *Description; 16337b1019a6SJerry Jelinek 16347b1019a6SJerry Jelinek } AH_DEVICE_ID; 16357b1019a6SJerry Jelinek 16367b1019a6SJerry Jelinek typedef struct ah_uuid 16377b1019a6SJerry Jelinek { 16387b1019a6SJerry Jelinek char *Description; 16397b1019a6SJerry Jelinek char *String; 16407b1019a6SJerry Jelinek 16417b1019a6SJerry Jelinek } AH_UUID; 16427b1019a6SJerry Jelinek 16437b1019a6SJerry Jelinek typedef struct ah_table 16447b1019a6SJerry Jelinek { 16457b1019a6SJerry Jelinek char *Signature; 16467b1019a6SJerry Jelinek char *Description; 16477b1019a6SJerry Jelinek 16487b1019a6SJerry Jelinek } AH_TABLE; 16497b1019a6SJerry Jelinek 16507c478bd9Sstevel@tonic-gate #endif /* __ACLOCAL_H__ */ 1651