1 1.1 jruoho /****************************************************************************** 2 1.1 jruoho * 3 1.1 jruoho * Name: amlcode.h - Definitions for AML, as included in "definition blocks" 4 1.1 jruoho * Declarations and definitions contained herein are derived 5 1.1 jruoho * directly from the ACPI specification. 6 1.1 jruoho * 7 1.1 jruoho *****************************************************************************/ 8 1.1 jruoho 9 1.1.1.18 christos /****************************************************************************** 10 1.1.1.18 christos * 11 1.1.1.18 christos * 1. Copyright Notice 12 1.1.1.18 christos * 13 1.1.1.19 christos * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp. 14 1.1 jruoho * All rights reserved. 15 1.1 jruoho * 16 1.1.1.18 christos * 2. License 17 1.1.1.18 christos * 18 1.1.1.18 christos * 2.1. This is your license from Intel Corp. under its intellectual property 19 1.1.1.18 christos * rights. You may have additional license terms from the party that provided 20 1.1.1.18 christos * you this software, covering your right to use that party's intellectual 21 1.1.1.18 christos * property rights. 22 1.1.1.18 christos * 23 1.1.1.18 christos * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 24 1.1.1.18 christos * copy of the source code appearing in this file ("Covered Code") an 25 1.1.1.18 christos * irrevocable, perpetual, worldwide license under Intel's copyrights in the 26 1.1.1.18 christos * base code distributed originally by Intel ("Original Intel Code") to copy, 27 1.1.1.18 christos * make derivatives, distribute, use and display any portion of the Covered 28 1.1.1.18 christos * Code in any form, with the right to sublicense such rights; and 29 1.1.1.18 christos * 30 1.1.1.18 christos * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 31 1.1.1.18 christos * license (with the right to sublicense), under only those claims of Intel 32 1.1.1.18 christos * patents that are infringed by the Original Intel Code, to make, use, sell, 33 1.1.1.18 christos * offer to sell, and import the Covered Code and derivative works thereof 34 1.1.1.18 christos * solely to the minimum extent necessary to exercise the above copyright 35 1.1.1.18 christos * license, and in no event shall the patent license extend to any additions 36 1.1.1.18 christos * to or modifications of the Original Intel Code. No other license or right 37 1.1.1.18 christos * is granted directly or by implication, estoppel or otherwise; 38 1.1.1.18 christos * 39 1.1.1.18 christos * The above copyright and patent license is granted only if the following 40 1.1.1.18 christos * conditions are met: 41 1.1.1.18 christos * 42 1.1.1.18 christos * 3. Conditions 43 1.1.1.18 christos * 44 1.1.1.18 christos * 3.1. Redistribution of Source with Rights to Further Distribute Source. 45 1.1.1.18 christos * Redistribution of source code of any substantial portion of the Covered 46 1.1.1.18 christos * Code or modification with rights to further distribute source must include 47 1.1.1.18 christos * the above Copyright Notice, the above License, this list of Conditions, 48 1.1.1.18 christos * and the following Disclaimer and Export Compliance provision. In addition, 49 1.1.1.18 christos * Licensee must cause all Covered Code to which Licensee contributes to 50 1.1.1.18 christos * contain a file documenting the changes Licensee made to create that Covered 51 1.1.1.18 christos * Code and the date of any change. Licensee must include in that file the 52 1.1.1.18 christos * documentation of any changes made by any predecessor Licensee. Licensee 53 1.1.1.18 christos * must include a prominent statement that the modification is derived, 54 1.1.1.18 christos * directly or indirectly, from Original Intel Code. 55 1.1.1.18 christos * 56 1.1.1.18 christos * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 57 1.1.1.18 christos * Redistribution of source code of any substantial portion of the Covered 58 1.1.1.18 christos * Code or modification without rights to further distribute source must 59 1.1.1.18 christos * include the following Disclaimer and Export Compliance provision in the 60 1.1.1.18 christos * documentation and/or other materials provided with distribution. In 61 1.1.1.18 christos * addition, Licensee may not authorize further sublicense of source of any 62 1.1.1.18 christos * portion of the Covered Code, and must include terms to the effect that the 63 1.1.1.18 christos * license from Licensee to its licensee is limited to the intellectual 64 1.1.1.18 christos * property embodied in the software Licensee provides to its licensee, and 65 1.1.1.18 christos * not to intellectual property embodied in modifications its licensee may 66 1.1.1.18 christos * make. 67 1.1.1.18 christos * 68 1.1.1.18 christos * 3.3. Redistribution of Executable. Redistribution in executable form of any 69 1.1.1.18 christos * substantial portion of the Covered Code or modification must reproduce the 70 1.1.1.18 christos * above Copyright Notice, and the following Disclaimer and Export Compliance 71 1.1.1.18 christos * provision in the documentation and/or other materials provided with the 72 1.1.1.18 christos * distribution. 73 1.1.1.18 christos * 74 1.1.1.18 christos * 3.4. Intel retains all right, title, and interest in and to the Original 75 1.1.1.18 christos * Intel Code. 76 1.1.1.18 christos * 77 1.1.1.18 christos * 3.5. Neither the name Intel nor any other trademark owned or controlled by 78 1.1.1.18 christos * Intel shall be used in advertising or otherwise to promote the sale, use or 79 1.1.1.18 christos * other dealings in products derived from or relating to the Covered Code 80 1.1.1.18 christos * without prior written authorization from Intel. 81 1.1.1.18 christos * 82 1.1.1.18 christos * 4. Disclaimer and Export Compliance 83 1.1.1.18 christos * 84 1.1.1.18 christos * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 85 1.1.1.18 christos * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 86 1.1.1.18 christos * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 87 1.1.1.18 christos * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 88 1.1.1.18 christos * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 89 1.1.1.18 christos * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 90 1.1.1.18 christos * PARTICULAR PURPOSE. 91 1.1.1.18 christos * 92 1.1.1.18 christos * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 93 1.1.1.18 christos * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 94 1.1.1.18 christos * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 95 1.1.1.18 christos * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 96 1.1.1.18 christos * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 97 1.1.1.18 christos * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 98 1.1.1.18 christos * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 99 1.1.1.18 christos * LIMITED REMEDY. 100 1.1.1.18 christos * 101 1.1.1.18 christos * 4.3. Licensee shall not export, either directly or indirectly, any of this 102 1.1.1.18 christos * software or system incorporating such software without first obtaining any 103 1.1.1.18 christos * required license or other approval from the U. S. Department of Commerce or 104 1.1.1.18 christos * any other agency or department of the United States Government. In the 105 1.1.1.18 christos * event Licensee exports any such software from the United States or 106 1.1.1.18 christos * re-exports any such software from a foreign destination, Licensee shall 107 1.1.1.18 christos * ensure that the distribution and export/re-export of the software is in 108 1.1.1.18 christos * compliance with all laws, regulations, orders, or other restrictions of the 109 1.1.1.18 christos * U.S. Export Administration Regulations. Licensee agrees that neither it nor 110 1.1.1.18 christos * any of its subsidiaries will export/re-export any technical data, process, 111 1.1.1.18 christos * software, or service, directly or indirectly, to any country for which the 112 1.1.1.18 christos * United States government or any agency thereof requires an export license, 113 1.1.1.18 christos * other governmental approval, or letter of assurance, without first obtaining 114 1.1.1.18 christos * such license, approval or letter. 115 1.1.1.18 christos * 116 1.1.1.18 christos ***************************************************************************** 117 1.1.1.18 christos * 118 1.1.1.18 christos * Alternatively, you may choose to be licensed under the terms of the 119 1.1.1.18 christos * following license: 120 1.1.1.18 christos * 121 1.1.1.2 jruoho * Redistribution and use in source and binary forms, with or without 122 1.1.1.2 jruoho * modification, are permitted provided that the following conditions 123 1.1.1.2 jruoho * are met: 124 1.1.1.2 jruoho * 1. Redistributions of source code must retain the above copyright 125 1.1.1.2 jruoho * notice, this list of conditions, and the following disclaimer, 126 1.1.1.2 jruoho * without modification. 127 1.1.1.2 jruoho * 2. Redistributions in binary form must reproduce at minimum a disclaimer 128 1.1.1.2 jruoho * substantially similar to the "NO WARRANTY" disclaimer below 129 1.1.1.2 jruoho * ("Disclaimer") and any redistribution must be conditioned upon 130 1.1.1.2 jruoho * including a substantially similar Disclaimer requirement for further 131 1.1.1.2 jruoho * binary redistribution. 132 1.1.1.2 jruoho * 3. Neither the names of the above-listed copyright holders nor the names 133 1.1.1.2 jruoho * of any contributors may be used to endorse or promote products derived 134 1.1.1.2 jruoho * from this software without specific prior written permission. 135 1.1.1.2 jruoho * 136 1.1.1.2 jruoho * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 137 1.1.1.2 jruoho * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 138 1.1.1.15 christos * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 139 1.1.1.2 jruoho * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 140 1.1.1.18 christos * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 141 1.1.1.18 christos * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 142 1.1.1.18 christos * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 143 1.1.1.18 christos * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 144 1.1.1.18 christos * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 145 1.1.1.18 christos * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 146 1.1.1.18 christos * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 147 1.1.1.18 christos * 148 1.1.1.18 christos * Alternatively, you may choose to be licensed under the terms of the 149 1.1.1.18 christos * GNU General Public License ("GPL") version 2 as published by the Free 150 1.1.1.18 christos * Software Foundation. 151 1.1.1.18 christos * 152 1.1.1.18 christos *****************************************************************************/ 153 1.1 jruoho 154 1.1 jruoho #ifndef __AMLCODE_H__ 155 1.1 jruoho #define __AMLCODE_H__ 156 1.1 jruoho 157 1.1 jruoho /* primary opcodes */ 158 1.1 jruoho 159 1.1 jruoho #define AML_ZERO_OP (UINT16) 0x00 160 1.1 jruoho #define AML_ONE_OP (UINT16) 0x01 161 1.1 jruoho #define AML_ALIAS_OP (UINT16) 0x06 162 1.1 jruoho #define AML_NAME_OP (UINT16) 0x08 163 1.1 jruoho #define AML_BYTE_OP (UINT16) 0x0a 164 1.1 jruoho #define AML_WORD_OP (UINT16) 0x0b 165 1.1 jruoho #define AML_DWORD_OP (UINT16) 0x0c 166 1.1 jruoho #define AML_STRING_OP (UINT16) 0x0d 167 1.1 jruoho #define AML_QWORD_OP (UINT16) 0x0e /* ACPI 2.0 */ 168 1.1 jruoho #define AML_SCOPE_OP (UINT16) 0x10 169 1.1 jruoho #define AML_BUFFER_OP (UINT16) 0x11 170 1.1 jruoho #define AML_PACKAGE_OP (UINT16) 0x12 171 1.1.1.9 christos #define AML_VARIABLE_PACKAGE_OP (UINT16) 0x13 /* ACPI 2.0 */ 172 1.1 jruoho #define AML_METHOD_OP (UINT16) 0x14 173 1.1.1.6 christos #define AML_EXTERNAL_OP (UINT16) 0x15 /* ACPI 6.0 */ 174 1.1 jruoho #define AML_DUAL_NAME_PREFIX (UINT16) 0x2e 175 1.1.1.9 christos #define AML_MULTI_NAME_PREFIX (UINT16) 0x2f 176 1.1.1.9 christos #define AML_EXTENDED_PREFIX (UINT16) 0x5b 177 1.1 jruoho #define AML_ROOT_PREFIX (UINT16) 0x5c 178 1.1 jruoho #define AML_PARENT_PREFIX (UINT16) 0x5e 179 1.1.1.9 christos #define AML_FIRST_LOCAL_OP (UINT16) 0x60 /* Used for Local op # calculations */ 180 1.1 jruoho #define AML_LOCAL0 (UINT16) 0x60 181 1.1 jruoho #define AML_LOCAL1 (UINT16) 0x61 182 1.1 jruoho #define AML_LOCAL2 (UINT16) 0x62 183 1.1 jruoho #define AML_LOCAL3 (UINT16) 0x63 184 1.1 jruoho #define AML_LOCAL4 (UINT16) 0x64 185 1.1 jruoho #define AML_LOCAL5 (UINT16) 0x65 186 1.1 jruoho #define AML_LOCAL6 (UINT16) 0x66 187 1.1 jruoho #define AML_LOCAL7 (UINT16) 0x67 188 1.1.1.9 christos #define AML_FIRST_ARG_OP (UINT16) 0x68 /* Used for Arg op # calculations */ 189 1.1 jruoho #define AML_ARG0 (UINT16) 0x68 190 1.1 jruoho #define AML_ARG1 (UINT16) 0x69 191 1.1 jruoho #define AML_ARG2 (UINT16) 0x6a 192 1.1 jruoho #define AML_ARG3 (UINT16) 0x6b 193 1.1 jruoho #define AML_ARG4 (UINT16) 0x6c 194 1.1 jruoho #define AML_ARG5 (UINT16) 0x6d 195 1.1 jruoho #define AML_ARG6 (UINT16) 0x6e 196 1.1 jruoho #define AML_STORE_OP (UINT16) 0x70 197 1.1 jruoho #define AML_REF_OF_OP (UINT16) 0x71 198 1.1 jruoho #define AML_ADD_OP (UINT16) 0x72 199 1.1.1.9 christos #define AML_CONCATENATE_OP (UINT16) 0x73 200 1.1 jruoho #define AML_SUBTRACT_OP (UINT16) 0x74 201 1.1 jruoho #define AML_INCREMENT_OP (UINT16) 0x75 202 1.1 jruoho #define AML_DECREMENT_OP (UINT16) 0x76 203 1.1 jruoho #define AML_MULTIPLY_OP (UINT16) 0x77 204 1.1 jruoho #define AML_DIVIDE_OP (UINT16) 0x78 205 1.1 jruoho #define AML_SHIFT_LEFT_OP (UINT16) 0x79 206 1.1 jruoho #define AML_SHIFT_RIGHT_OP (UINT16) 0x7a 207 1.1 jruoho #define AML_BIT_AND_OP (UINT16) 0x7b 208 1.1 jruoho #define AML_BIT_NAND_OP (UINT16) 0x7c 209 1.1 jruoho #define AML_BIT_OR_OP (UINT16) 0x7d 210 1.1 jruoho #define AML_BIT_NOR_OP (UINT16) 0x7e 211 1.1 jruoho #define AML_BIT_XOR_OP (UINT16) 0x7f 212 1.1 jruoho #define AML_BIT_NOT_OP (UINT16) 0x80 213 1.1 jruoho #define AML_FIND_SET_LEFT_BIT_OP (UINT16) 0x81 214 1.1 jruoho #define AML_FIND_SET_RIGHT_BIT_OP (UINT16) 0x82 215 1.1 jruoho #define AML_DEREF_OF_OP (UINT16) 0x83 216 1.1.1.9 christos #define AML_CONCATENATE_TEMPLATE_OP (UINT16) 0x84 /* ACPI 2.0 */ 217 1.1 jruoho #define AML_MOD_OP (UINT16) 0x85 /* ACPI 2.0 */ 218 1.1 jruoho #define AML_NOTIFY_OP (UINT16) 0x86 219 1.1 jruoho #define AML_SIZE_OF_OP (UINT16) 0x87 220 1.1 jruoho #define AML_INDEX_OP (UINT16) 0x88 221 1.1 jruoho #define AML_MATCH_OP (UINT16) 0x89 222 1.1 jruoho #define AML_CREATE_DWORD_FIELD_OP (UINT16) 0x8a 223 1.1 jruoho #define AML_CREATE_WORD_FIELD_OP (UINT16) 0x8b 224 1.1 jruoho #define AML_CREATE_BYTE_FIELD_OP (UINT16) 0x8c 225 1.1 jruoho #define AML_CREATE_BIT_FIELD_OP (UINT16) 0x8d 226 1.1.1.7 christos #define AML_OBJECT_TYPE_OP (UINT16) 0x8e 227 1.1 jruoho #define AML_CREATE_QWORD_FIELD_OP (UINT16) 0x8f /* ACPI 2.0 */ 228 1.1.1.9 christos #define AML_LOGICAL_AND_OP (UINT16) 0x90 229 1.1.1.9 christos #define AML_LOGICAL_OR_OP (UINT16) 0x91 230 1.1.1.9 christos #define AML_LOGICAL_NOT_OP (UINT16) 0x92 231 1.1.1.9 christos #define AML_LOGICAL_EQUAL_OP (UINT16) 0x93 232 1.1.1.9 christos #define AML_LOGICAL_GREATER_OP (UINT16) 0x94 233 1.1.1.9 christos #define AML_LOGICAL_LESS_OP (UINT16) 0x95 234 1.1 jruoho #define AML_TO_BUFFER_OP (UINT16) 0x96 /* ACPI 2.0 */ 235 1.1.1.9 christos #define AML_TO_DECIMAL_STRING_OP (UINT16) 0x97 /* ACPI 2.0 */ 236 1.1.1.9 christos #define AML_TO_HEX_STRING_OP (UINT16) 0x98 /* ACPI 2.0 */ 237 1.1 jruoho #define AML_TO_INTEGER_OP (UINT16) 0x99 /* ACPI 2.0 */ 238 1.1 jruoho #define AML_TO_STRING_OP (UINT16) 0x9c /* ACPI 2.0 */ 239 1.1.1.9 christos #define AML_COPY_OBJECT_OP (UINT16) 0x9d /* ACPI 2.0 */ 240 1.1 jruoho #define AML_MID_OP (UINT16) 0x9e /* ACPI 2.0 */ 241 1.1 jruoho #define AML_CONTINUE_OP (UINT16) 0x9f /* ACPI 2.0 */ 242 1.1 jruoho #define AML_IF_OP (UINT16) 0xa0 243 1.1 jruoho #define AML_ELSE_OP (UINT16) 0xa1 244 1.1 jruoho #define AML_WHILE_OP (UINT16) 0xa2 245 1.1 jruoho #define AML_NOOP_OP (UINT16) 0xa3 246 1.1 jruoho #define AML_RETURN_OP (UINT16) 0xa4 247 1.1 jruoho #define AML_BREAK_OP (UINT16) 0xa5 248 1.1.1.9 christos #define AML_COMMENT_OP (UINT16) 0xa9 249 1.1.1.9 christos #define AML_BREAKPOINT_OP (UINT16) 0xcc 250 1.1 jruoho #define AML_ONES_OP (UINT16) 0xff 251 1.1 jruoho 252 1.1 jruoho 253 1.1.1.9 christos /* 254 1.1.1.9 christos * Combination opcodes (actually two one-byte opcodes) 255 1.1.1.9 christos * Used by the disassembler and iASL compiler 256 1.1.1.9 christos */ 257 1.1.1.9 christos #define AML_LOGICAL_GREATER_EQUAL_OP (UINT16) 0x9295 /* LNot (LLess) */ 258 1.1.1.9 christos #define AML_LOGICAL_LESS_EQUAL_OP (UINT16) 0x9294 /* LNot (LGreater) */ 259 1.1.1.9 christos #define AML_LOGICAL_NOT_EQUAL_OP (UINT16) 0x9293 /* LNot (LEqual) */ 260 1.1.1.9 christos 261 1.1.1.9 christos 262 1.1.1.9 christos /* Prefixed (2-byte) opcodes (with AML_EXTENDED_PREFIX) */ 263 1.1.1.9 christos 264 1.1.1.9 christos #define AML_EXTENDED_OPCODE (UINT16) 0x5b00 /* Prefix for 2-byte opcodes */ 265 1.1 jruoho 266 1.1 jruoho #define AML_MUTEX_OP (UINT16) 0x5b01 267 1.1 jruoho #define AML_EVENT_OP (UINT16) 0x5b02 268 1.1.1.9 christos #define AML_SHIFT_RIGHT_BIT_OP (UINT16) 0x5b10 /* Obsolete, not in ACPI spec */ 269 1.1.1.9 christos #define AML_SHIFT_LEFT_BIT_OP (UINT16) 0x5b11 /* Obsolete, not in ACPI spec */ 270 1.1.1.9 christos #define AML_CONDITIONAL_REF_OF_OP (UINT16) 0x5b12 271 1.1 jruoho #define AML_CREATE_FIELD_OP (UINT16) 0x5b13 272 1.1 jruoho #define AML_LOAD_TABLE_OP (UINT16) 0x5b1f /* ACPI 2.0 */ 273 1.1 jruoho #define AML_LOAD_OP (UINT16) 0x5b20 274 1.1 jruoho #define AML_STALL_OP (UINT16) 0x5b21 275 1.1 jruoho #define AML_SLEEP_OP (UINT16) 0x5b22 276 1.1 jruoho #define AML_ACQUIRE_OP (UINT16) 0x5b23 277 1.1 jruoho #define AML_SIGNAL_OP (UINT16) 0x5b24 278 1.1 jruoho #define AML_WAIT_OP (UINT16) 0x5b25 279 1.1 jruoho #define AML_RESET_OP (UINT16) 0x5b26 280 1.1 jruoho #define AML_RELEASE_OP (UINT16) 0x5b27 281 1.1 jruoho #define AML_FROM_BCD_OP (UINT16) 0x5b28 282 1.1 jruoho #define AML_TO_BCD_OP (UINT16) 0x5b29 283 1.1 jruoho #define AML_UNLOAD_OP (UINT16) 0x5b2a 284 1.1 jruoho #define AML_REVISION_OP (UINT16) 0x5b30 285 1.1 jruoho #define AML_DEBUG_OP (UINT16) 0x5b31 286 1.1 jruoho #define AML_FATAL_OP (UINT16) 0x5b32 287 1.1 jruoho #define AML_TIMER_OP (UINT16) 0x5b33 /* ACPI 3.0 */ 288 1.1 jruoho #define AML_REGION_OP (UINT16) 0x5b80 289 1.1 jruoho #define AML_FIELD_OP (UINT16) 0x5b81 290 1.1 jruoho #define AML_DEVICE_OP (UINT16) 0x5b82 291 1.1 jruoho #define AML_PROCESSOR_OP (UINT16) 0x5b83 292 1.1.1.9 christos #define AML_POWER_RESOURCE_OP (UINT16) 0x5b84 293 1.1 jruoho #define AML_THERMAL_ZONE_OP (UINT16) 0x5b85 294 1.1 jruoho #define AML_INDEX_FIELD_OP (UINT16) 0x5b86 295 1.1 jruoho #define AML_BANK_FIELD_OP (UINT16) 0x5b87 296 1.1 jruoho #define AML_DATA_REGION_OP (UINT16) 0x5b88 /* ACPI 2.0 */ 297 1.1 jruoho 298 1.1 jruoho 299 1.1 jruoho /* 300 1.1.1.4 christos * Opcodes for "Field" operators 301 1.1.1.4 christos */ 302 1.1.1.4 christos #define AML_FIELD_OFFSET_OP (UINT8) 0x00 303 1.1.1.4 christos #define AML_FIELD_ACCESS_OP (UINT8) 0x01 304 1.1.1.4 christos #define AML_FIELD_CONNECTION_OP (UINT8) 0x02 /* ACPI 5.0 */ 305 1.1.1.4 christos #define AML_FIELD_EXT_ACCESS_OP (UINT8) 0x03 /* ACPI 5.0 */ 306 1.1.1.4 christos 307 1.1.1.4 christos 308 1.1.1.4 christos /* 309 1.1 jruoho * Internal opcodes 310 1.1 jruoho * Use only "Unknown" AML opcodes, don't attempt to use 311 1.1 jruoho * any valid ACPI ASCII values (A-Z, 0-9, '-') 312 1.1 jruoho */ 313 1.1 jruoho #define AML_INT_NAMEPATH_OP (UINT16) 0x002d 314 1.1 jruoho #define AML_INT_NAMEDFIELD_OP (UINT16) 0x0030 315 1.1 jruoho #define AML_INT_RESERVEDFIELD_OP (UINT16) 0x0031 316 1.1 jruoho #define AML_INT_ACCESSFIELD_OP (UINT16) 0x0032 317 1.1 jruoho #define AML_INT_BYTELIST_OP (UINT16) 0x0033 318 1.1 jruoho #define AML_INT_METHODCALL_OP (UINT16) 0x0035 319 1.1 jruoho #define AML_INT_RETURN_VALUE_OP (UINT16) 0x0036 320 1.1 jruoho #define AML_INT_EVAL_SUBTREE_OP (UINT16) 0x0037 321 1.1.1.4 christos #define AML_INT_CONNECTION_OP (UINT16) 0x0038 322 1.1.1.4 christos #define AML_INT_EXTACCESSFIELD_OP (UINT16) 0x0039 323 1.1 jruoho 324 1.1 jruoho #define ARG_NONE 0x0 325 1.1 jruoho 326 1.1 jruoho /* 327 1.1 jruoho * Argument types for the AML Parser 328 1.1 jruoho * Each field in the ArgTypes UINT32 is 5 bits, allowing for a maximum of 6 arguments. 329 1.1 jruoho * There can be up to 31 unique argument types 330 1.1 jruoho * Zero is reserved as end-of-list indicator 331 1.1 jruoho */ 332 1.1 jruoho #define ARGP_BYTEDATA 0x01 333 1.1 jruoho #define ARGP_BYTELIST 0x02 334 1.1 jruoho #define ARGP_CHARLIST 0x03 335 1.1 jruoho #define ARGP_DATAOBJ 0x04 336 1.1 jruoho #define ARGP_DATAOBJLIST 0x05 337 1.1 jruoho #define ARGP_DWORDDATA 0x06 338 1.1 jruoho #define ARGP_FIELDLIST 0x07 339 1.1 jruoho #define ARGP_NAME 0x08 340 1.1 jruoho #define ARGP_NAMESTRING 0x09 341 1.1 jruoho #define ARGP_OBJLIST 0x0A 342 1.1 jruoho #define ARGP_PKGLENGTH 0x0B 343 1.1 jruoho #define ARGP_SUPERNAME 0x0C 344 1.1 jruoho #define ARGP_TARGET 0x0D 345 1.1 jruoho #define ARGP_TERMARG 0x0E 346 1.1 jruoho #define ARGP_TERMLIST 0x0F 347 1.1 jruoho #define ARGP_WORDDATA 0x10 348 1.1 jruoho #define ARGP_QWORDDATA 0x11 349 1.1.1.7 christos #define ARGP_SIMPLENAME 0x12 /* NameString | LocalTerm | ArgTerm */ 350 1.1.1.7 christos #define ARGP_NAME_OR_REF 0x13 /* For ObjectType only */ 351 1.1.1.8 christos #define ARGP_MAX 0x13 352 1.1.1.9 christos #define ARGP_COMMENT 0x14 353 1.1 jruoho 354 1.1 jruoho /* 355 1.1 jruoho * Resolved argument types for the AML Interpreter 356 1.1 jruoho * Each field in the ArgTypes UINT32 is 5 bits, allowing for a maximum of 6 arguments. 357 1.1 jruoho * There can be up to 31 unique argument types (0 is end-of-arg-list indicator) 358 1.1 jruoho * 359 1.1 jruoho * Note1: These values are completely independent from the ACPI_TYPEs 360 1.1 jruoho * i.e., ARGI_INTEGER != ACPI_TYPE_INTEGER 361 1.1 jruoho * 362 1.1 jruoho * Note2: If and when 5 bits becomes insufficient, it would probably be best 363 1.1 jruoho * to convert to a 6-byte array of argument types, allowing 8 bits per argument. 364 1.1 jruoho */ 365 1.1 jruoho 366 1.1 jruoho /* Single, simple types */ 367 1.1 jruoho 368 1.1 jruoho #define ARGI_ANYTYPE 0x01 /* Don't care */ 369 1.1 jruoho #define ARGI_PACKAGE 0x02 370 1.1 jruoho #define ARGI_EVENT 0x03 371 1.1 jruoho #define ARGI_MUTEX 0x04 372 1.1 jruoho #define ARGI_DDBHANDLE 0x05 373 1.1 jruoho 374 1.1 jruoho /* Interchangeable types (via implicit conversion) */ 375 1.1 jruoho 376 1.1 jruoho #define ARGI_INTEGER 0x06 377 1.1 jruoho #define ARGI_STRING 0x07 378 1.1 jruoho #define ARGI_BUFFER 0x08 379 1.1 jruoho #define ARGI_BUFFER_OR_STRING 0x09 /* Used by MID op only */ 380 1.1 jruoho #define ARGI_COMPUTEDATA 0x0A /* Buffer, String, or Integer */ 381 1.1 jruoho 382 1.1 jruoho /* Reference objects */ 383 1.1 jruoho 384 1.1 jruoho #define ARGI_INTEGER_REF 0x0B 385 1.1 jruoho #define ARGI_OBJECT_REF 0x0C 386 1.1 jruoho #define ARGI_DEVICE_REF 0x0D 387 1.1 jruoho #define ARGI_REFERENCE 0x0E 388 1.1 jruoho #define ARGI_TARGETREF 0x0F /* Target, subject to implicit conversion */ 389 1.1.1.11 christos #define ARGI_FIXED_TARGET 0x10 /* Target, no implicit conversion */ 390 1.1.1.11 christos #define ARGI_SIMPLE_TARGET 0x11 /* Name, Local, Arg -- no implicit conversion */ 391 1.1.1.11 christos #define ARGI_STORE_TARGET 0x12 /* Target for store is TARGETREF + package objects */ 392 1.1 jruoho 393 1.1 jruoho /* Multiple/complex types */ 394 1.1 jruoho 395 1.1.1.7 christos #define ARGI_DATAOBJECT 0x13 /* Buffer, String, package or reference to a Node - Used only by SizeOf operator*/ 396 1.1.1.7 christos #define ARGI_COMPLEXOBJ 0x14 /* Buffer, String, or package (Used by INDEX op only) */ 397 1.1.1.7 christos #define ARGI_REF_OR_STRING 0x15 /* Reference or String (Used by DEREFOF op only) */ 398 1.1.1.7 christos #define ARGI_REGION_OR_BUFFER 0x16 /* Used by LOAD op only */ 399 1.1.1.7 christos #define ARGI_DATAREFOBJ 0x17 400 1.1 jruoho 401 1.1 jruoho /* Note: types above can expand to 0x1F maximum */ 402 1.1 jruoho 403 1.1 jruoho #define ARGI_INVALID_OPCODE 0xFFFFFFFF 404 1.1 jruoho 405 1.1 jruoho 406 1.1 jruoho /* 407 1.1.1.9 christos * Some of the flags and types below are of the form: 408 1.1.1.9 christos * 409 1.1.1.9 christos * AML_FLAGS_EXEC_#A_#T,#R, or 410 1.1.1.9 christos * AML_TYPE_EXEC_#A_#T,#R where: 411 1.1.1.9 christos * 412 1.1.1.9 christos * #A is the number of required arguments 413 1.1.1.9 christos * #T is the number of target operands 414 1.1.1.9 christos * #R indicates whether there is a return value 415 1.1.1.10 christos * 416 1.1.1.10 christos * These types are used for the top-level dispatch of the AML 417 1.1.1.10 christos * opcode. They group similar operators that can share common 418 1.1.1.10 christos * front-end code before dispatch to the final code that implements 419 1.1.1.10 christos * the operator. 420 1.1 jruoho */ 421 1.1 jruoho 422 1.1 jruoho /* 423 1.1.1.9 christos * Opcode information flags 424 1.1 jruoho */ 425 1.1 jruoho #define AML_LOGICAL 0x0001 426 1.1 jruoho #define AML_LOGICAL_NUMERIC 0x0002 427 1.1 jruoho #define AML_MATH 0x0004 428 1.1 jruoho #define AML_CREATE 0x0008 429 1.1 jruoho #define AML_FIELD 0x0010 430 1.1 jruoho #define AML_DEFER 0x0020 431 1.1 jruoho #define AML_NAMED 0x0040 432 1.1 jruoho #define AML_NSNODE 0x0080 433 1.1 jruoho #define AML_NSOPCODE 0x0100 434 1.1 jruoho #define AML_NSOBJECT 0x0200 435 1.1 jruoho #define AML_HAS_RETVAL 0x0400 436 1.1 jruoho #define AML_HAS_TARGET 0x0800 437 1.1 jruoho #define AML_HAS_ARGS 0x1000 438 1.1 jruoho #define AML_CONSTANT 0x2000 439 1.1 jruoho #define AML_NO_OPERAND_RESOLVE 0x4000 440 1.1 jruoho 441 1.1.1.9 christos /* Convenient flag groupings of the flags above */ 442 1.1 jruoho 443 1.1 jruoho #define AML_FLAGS_EXEC_0A_0T_1R AML_HAS_RETVAL 444 1.1 jruoho #define AML_FLAGS_EXEC_1A_0T_0R AML_HAS_ARGS /* Monadic1 */ 445 1.1 jruoho #define AML_FLAGS_EXEC_1A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Monadic2 */ 446 1.1 jruoho #define AML_FLAGS_EXEC_1A_1T_0R AML_HAS_ARGS | AML_HAS_TARGET 447 1.1 jruoho #define AML_FLAGS_EXEC_1A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* Monadic2R */ 448 1.1 jruoho #define AML_FLAGS_EXEC_2A_0T_0R AML_HAS_ARGS /* Dyadic1 */ 449 1.1 jruoho #define AML_FLAGS_EXEC_2A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Dyadic2 */ 450 1.1 jruoho #define AML_FLAGS_EXEC_2A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* Dyadic2R */ 451 1.1 jruoho #define AML_FLAGS_EXEC_2A_2T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL 452 1.1 jruoho #define AML_FLAGS_EXEC_3A_0T_0R AML_HAS_ARGS 453 1.1 jruoho #define AML_FLAGS_EXEC_3A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL 454 1.1 jruoho #define AML_FLAGS_EXEC_6A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL 455 1.1 jruoho 456 1.1 jruoho 457 1.1 jruoho /* 458 1.1 jruoho * The opcode Type is used in a dispatch table, do not change 459 1.1.1.9 christos * or add anything new without updating the table. 460 1.1 jruoho */ 461 1.1.1.10 christos #define AML_TYPE_EXEC_0A_0T_1R 0x00 /* 0 Args, 0 Target, 1 RetVal */ 462 1.1.1.10 christos #define AML_TYPE_EXEC_1A_0T_0R 0x01 /* 1 Args, 0 Target, 0 RetVal */ 463 1.1.1.10 christos #define AML_TYPE_EXEC_1A_0T_1R 0x02 /* 1 Args, 0 Target, 1 RetVal */ 464 1.1.1.10 christos #define AML_TYPE_EXEC_1A_1T_0R 0x03 /* 1 Args, 1 Target, 0 RetVal */ 465 1.1.1.10 christos #define AML_TYPE_EXEC_1A_1T_1R 0x04 /* 1 Args, 1 Target, 1 RetVal */ 466 1.1.1.10 christos #define AML_TYPE_EXEC_2A_0T_0R 0x05 /* 2 Args, 0 Target, 0 RetVal */ 467 1.1.1.10 christos #define AML_TYPE_EXEC_2A_0T_1R 0x06 /* 2 Args, 0 Target, 1 RetVal */ 468 1.1.1.10 christos #define AML_TYPE_EXEC_2A_1T_1R 0x07 /* 2 Args, 1 Target, 1 RetVal */ 469 1.1.1.10 christos #define AML_TYPE_EXEC_2A_2T_1R 0x08 /* 2 Args, 2 Target, 1 RetVal */ 470 1.1.1.10 christos #define AML_TYPE_EXEC_3A_0T_0R 0x09 /* 3 Args, 0 Target, 0 RetVal */ 471 1.1.1.10 christos #define AML_TYPE_EXEC_3A_1T_1R 0x0A /* 3 Args, 1 Target, 1 RetVal */ 472 1.1.1.10 christos #define AML_TYPE_EXEC_6A_0T_1R 0x0B /* 6 Args, 0 Target, 1 RetVal */ 473 1.1 jruoho /* End of types used in dispatch table */ 474 1.1 jruoho 475 1.1.1.10 christos #define AML_TYPE_LITERAL 0x0C 476 1.1.1.10 christos #define AML_TYPE_CONSTANT 0x0D 477 1.1.1.10 christos #define AML_TYPE_METHOD_ARGUMENT 0x0E 478 1.1.1.10 christos #define AML_TYPE_LOCAL_VARIABLE 0x0F 479 1.1.1.10 christos #define AML_TYPE_DATA_TERM 0x10 480 1.1 jruoho 481 1.1 jruoho /* Generic for an op that returns a value */ 482 1.1 jruoho 483 1.1.1.10 christos #define AML_TYPE_METHOD_CALL 0x11 484 1.1 jruoho 485 1.1.1.9 christos /* Miscellaneous types */ 486 1.1 jruoho 487 1.1.1.10 christos #define AML_TYPE_CREATE_FIELD 0x12 488 1.1.1.10 christos #define AML_TYPE_CREATE_OBJECT 0x13 489 1.1.1.10 christos #define AML_TYPE_CONTROL 0x14 490 1.1.1.10 christos #define AML_TYPE_NAMED_NO_OBJ 0x15 491 1.1.1.10 christos #define AML_TYPE_NAMED_FIELD 0x16 492 1.1.1.10 christos #define AML_TYPE_NAMED_SIMPLE 0x17 493 1.1.1.10 christos #define AML_TYPE_NAMED_COMPLEX 0x18 494 1.1.1.10 christos #define AML_TYPE_RETURN 0x19 495 1.1.1.10 christos #define AML_TYPE_UNDEFINED 0x1A 496 1.1.1.10 christos #define AML_TYPE_BOGUS 0x1B 497 1.1 jruoho 498 1.1 jruoho /* AML Package Length encodings */ 499 1.1 jruoho 500 1.1 jruoho #define ACPI_AML_PACKAGE_TYPE1 0x40 501 1.1 jruoho #define ACPI_AML_PACKAGE_TYPE2 0x4000 502 1.1 jruoho #define ACPI_AML_PACKAGE_TYPE3 0x400000 503 1.1 jruoho #define ACPI_AML_PACKAGE_TYPE4 0x40000000 504 1.1 jruoho 505 1.1 jruoho /* 506 1.1 jruoho * Opcode classes 507 1.1 jruoho */ 508 1.1 jruoho #define AML_CLASS_EXECUTE 0x00 509 1.1 jruoho #define AML_CLASS_CREATE 0x01 510 1.1 jruoho #define AML_CLASS_ARGUMENT 0x02 511 1.1 jruoho #define AML_CLASS_NAMED_OBJECT 0x03 512 1.1 jruoho #define AML_CLASS_CONTROL 0x04 513 1.1 jruoho #define AML_CLASS_ASCII 0x05 514 1.1 jruoho #define AML_CLASS_PREFIX 0x06 515 1.1 jruoho #define AML_CLASS_INTERNAL 0x07 516 1.1 jruoho #define AML_CLASS_RETURN_VALUE 0x08 517 1.1 jruoho #define AML_CLASS_METHOD_CALL 0x09 518 1.1 jruoho #define AML_CLASS_UNKNOWN 0x0A 519 1.1 jruoho 520 1.1 jruoho 521 1.1 jruoho /* Comparison operation codes for MatchOp operator */ 522 1.1 jruoho 523 1.1 jruoho typedef enum 524 1.1 jruoho { 525 1.1 jruoho MATCH_MTR = 0, 526 1.1 jruoho MATCH_MEQ = 1, 527 1.1 jruoho MATCH_MLE = 2, 528 1.1 jruoho MATCH_MLT = 3, 529 1.1 jruoho MATCH_MGE = 4, 530 1.1 jruoho MATCH_MGT = 5 531 1.1 jruoho 532 1.1 jruoho } AML_MATCH_OPERATOR; 533 1.1 jruoho 534 1.1 jruoho #define MAX_MATCH_OPERATOR 5 535 1.1 jruoho 536 1.1 jruoho 537 1.1 jruoho /* 538 1.1 jruoho * FieldFlags 539 1.1 jruoho * 540 1.1 jruoho * This byte is extracted from the AML and includes three separate 541 1.1 jruoho * pieces of information about the field: 542 1.1 jruoho * 1) The field access type 543 1.1 jruoho * 2) The field update rule 544 1.1 jruoho * 3) The lock rule for the field 545 1.1 jruoho * 546 1.1 jruoho * Bits 00 - 03 : AccessType (AnyAcc, ByteAcc, etc.) 547 1.1 jruoho * 04 : LockRule (1 == Lock) 548 1.1 jruoho * 05 - 06 : UpdateRule 549 1.1 jruoho */ 550 1.1 jruoho #define AML_FIELD_ACCESS_TYPE_MASK 0x0F 551 1.1 jruoho #define AML_FIELD_LOCK_RULE_MASK 0x10 552 1.1 jruoho #define AML_FIELD_UPDATE_RULE_MASK 0x60 553 1.1 jruoho 554 1.1 jruoho 555 1.1 jruoho /* 1) Field Access Types */ 556 1.1 jruoho 557 1.1 jruoho typedef enum 558 1.1 jruoho { 559 1.1 jruoho AML_FIELD_ACCESS_ANY = 0x00, 560 1.1 jruoho AML_FIELD_ACCESS_BYTE = 0x01, 561 1.1 jruoho AML_FIELD_ACCESS_WORD = 0x02, 562 1.1 jruoho AML_FIELD_ACCESS_DWORD = 0x03, 563 1.1 jruoho AML_FIELD_ACCESS_QWORD = 0x04, /* ACPI 2.0 */ 564 1.1 jruoho AML_FIELD_ACCESS_BUFFER = 0x05 /* ACPI 2.0 */ 565 1.1 jruoho 566 1.1 jruoho } AML_ACCESS_TYPE; 567 1.1 jruoho 568 1.1 jruoho 569 1.1 jruoho /* 2) Field Lock Rules */ 570 1.1 jruoho 571 1.1 jruoho typedef enum 572 1.1 jruoho { 573 1.1 jruoho AML_FIELD_LOCK_NEVER = 0x00, 574 1.1 jruoho AML_FIELD_LOCK_ALWAYS = 0x10 575 1.1 jruoho 576 1.1 jruoho } AML_LOCK_RULE; 577 1.1 jruoho 578 1.1 jruoho 579 1.1 jruoho /* 3) Field Update Rules */ 580 1.1 jruoho 581 1.1 jruoho typedef enum 582 1.1 jruoho { 583 1.1 jruoho AML_FIELD_UPDATE_PRESERVE = 0x00, 584 1.1 jruoho AML_FIELD_UPDATE_WRITE_AS_ONES = 0x20, 585 1.1 jruoho AML_FIELD_UPDATE_WRITE_AS_ZEROS = 0x40 586 1.1 jruoho 587 1.1 jruoho } AML_UPDATE_RULE; 588 1.1 jruoho 589 1.1 jruoho 590 1.1 jruoho /* 591 1.1 jruoho * Field Access Attributes. 592 1.1 jruoho * This byte is extracted from the AML via the 593 1.1 jruoho * AccessAs keyword 594 1.1 jruoho */ 595 1.1 jruoho typedef enum 596 1.1 jruoho { 597 1.1.1.12 christos AML_FIELD_ATTRIB_QUICK = 0x02, 598 1.1.1.12 christos AML_FIELD_ATTRIB_SEND_RECEIVE = 0x04, 599 1.1.1.12 christos AML_FIELD_ATTRIB_BYTE = 0x06, 600 1.1.1.12 christos AML_FIELD_ATTRIB_WORD = 0x08, 601 1.1.1.12 christos AML_FIELD_ATTRIB_BLOCK = 0x0A, 602 1.1.1.12 christos AML_FIELD_ATTRIB_BYTES = 0x0B, 603 1.1.1.12 christos AML_FIELD_ATTRIB_PROCESS_CALL = 0x0C, 604 1.1.1.12 christos AML_FIELD_ATTRIB_BLOCK_PROCESS_CALL = 0x0D, 605 1.1.1.12 christos AML_FIELD_ATTRIB_RAW_BYTES = 0x0E, 606 1.1.1.12 christos AML_FIELD_ATTRIB_RAW_PROCESS_BYTES = 0x0F 607 1.1 jruoho 608 1.1 jruoho } AML_ACCESS_ATTRIBUTE; 609 1.1 jruoho 610 1.1 jruoho 611 1.1.1.2 jruoho /* Bit fields in the AML MethodFlags byte */ 612 1.1 jruoho 613 1.1 jruoho #define AML_METHOD_ARG_COUNT 0x07 614 1.1 jruoho #define AML_METHOD_SERIALIZED 0x08 615 1.1 jruoho #define AML_METHOD_SYNC_LEVEL 0xF0 616 1.1 jruoho 617 1.1 jruoho 618 1.1 jruoho #endif /* __AMLCODE_H__ */ 619