The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/dev/acpica/include/aclocal.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /******************************************************************************
    2  *
    3  * Name: aclocal.h - Internal data types used across the ACPI subsystem
    4  *
    5  *****************************************************************************/
    6 
    7 /******************************************************************************
    8  *
    9  * 1. Copyright Notice
   10  *
   11  * Some or all of this work - Copyright (c) 1999 - 2022, Intel Corp.
   12  * All rights reserved.
   13  *
   14  * 2. License
   15  *
   16  * 2.1. This is your license from Intel Corp. under its intellectual property
   17  * rights. You may have additional license terms from the party that provided
   18  * you this software, covering your right to use that party's intellectual
   19  * property rights.
   20  *
   21  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
   22  * copy of the source code appearing in this file ("Covered Code") an
   23  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
   24  * base code distributed originally by Intel ("Original Intel Code") to copy,
   25  * make derivatives, distribute, use and display any portion of the Covered
   26  * Code in any form, with the right to sublicense such rights; and
   27  *
   28  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
   29  * license (with the right to sublicense), under only those claims of Intel
   30  * patents that are infringed by the Original Intel Code, to make, use, sell,
   31  * offer to sell, and import the Covered Code and derivative works thereof
   32  * solely to the minimum extent necessary to exercise the above copyright
   33  * license, and in no event shall the patent license extend to any additions
   34  * to or modifications of the Original Intel Code. No other license or right
   35  * is granted directly or by implication, estoppel or otherwise;
   36  *
   37  * The above copyright and patent license is granted only if the following
   38  * conditions are met:
   39  *
   40  * 3. Conditions
   41  *
   42  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
   43  * Redistribution of source code of any substantial portion of the Covered
   44  * Code or modification with rights to further distribute source must include
   45  * the above Copyright Notice, the above License, this list of Conditions,
   46  * and the following Disclaimer and Export Compliance provision. In addition,
   47  * Licensee must cause all Covered Code to which Licensee contributes to
   48  * contain a file documenting the changes Licensee made to create that Covered
   49  * Code and the date of any change. Licensee must include in that file the
   50  * documentation of any changes made by any predecessor Licensee. Licensee
   51  * must include a prominent statement that the modification is derived,
   52  * directly or indirectly, from Original Intel Code.
   53  *
   54  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
   55  * Redistribution of source code of any substantial portion of the Covered
   56  * Code or modification without rights to further distribute source must
   57  * include the following Disclaimer and Export Compliance provision in the
   58  * documentation and/or other materials provided with distribution. In
   59  * addition, Licensee may not authorize further sublicense of source of any
   60  * portion of the Covered Code, and must include terms to the effect that the
   61  * license from Licensee to its licensee is limited to the intellectual
   62  * property embodied in the software Licensee provides to its licensee, and
   63  * not to intellectual property embodied in modifications its licensee may
   64  * make.
   65  *
   66  * 3.3. Redistribution of Executable. Redistribution in executable form of any
   67  * substantial portion of the Covered Code or modification must reproduce the
   68  * above Copyright Notice, and the following Disclaimer and Export Compliance
   69  * provision in the documentation and/or other materials provided with the
   70  * distribution.
   71  *
   72  * 3.4. Intel retains all right, title, and interest in and to the Original
   73  * Intel Code.
   74  *
   75  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
   76  * Intel shall be used in advertising or otherwise to promote the sale, use or
   77  * other dealings in products derived from or relating to the Covered Code
   78  * without prior written authorization from Intel.
   79  *
   80  * 4. Disclaimer and Export Compliance
   81  *
   82  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
   83  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
   84  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
   85  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
   86  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
   87  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
   88  * PARTICULAR PURPOSE.
   89  *
   90  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
   91  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
   92  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
   93  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
   94  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
   95  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
   96  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
   97  * LIMITED REMEDY.
   98  *
   99  * 4.3. Licensee shall not export, either directly or indirectly, any of this
  100  * software or system incorporating such software without first obtaining any
  101  * required license or other approval from the U. S. Department of Commerce or
  102  * any other agency or department of the United States Government. In the
  103  * event Licensee exports any such software from the United States or
  104  * re-exports any such software from a foreign destination, Licensee shall
  105  * ensure that the distribution and export/re-export of the software is in
  106  * compliance with all laws, regulations, orders, or other restrictions of the
  107  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
  108  * any of its subsidiaries will export/re-export any technical data, process,
  109  * software, or service, directly or indirectly, to any country for which the
  110  * United States government or any agency thereof requires an export license,
  111  * other governmental approval, or letter of assurance, without first obtaining
  112  * such license, approval or letter.
  113  *
  114  *****************************************************************************
  115  *
  116  * Alternatively, you may choose to be licensed under the terms of the
  117  * following license:
  118  *
  119  * Redistribution and use in source and binary forms, with or without
  120  * modification, are permitted provided that the following conditions
  121  * are met:
  122  * 1. Redistributions of source code must retain the above copyright
  123  *    notice, this list of conditions, and the following disclaimer,
  124  *    without modification.
  125  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  126  *    substantially similar to the "NO WARRANTY" disclaimer below
  127  *    ("Disclaimer") and any redistribution must be conditioned upon
  128  *    including a substantially similar Disclaimer requirement for further
  129  *    binary redistribution.
  130  * 3. Neither the names of the above-listed copyright holders nor the names
  131  *    of any contributors may be used to endorse or promote products derived
  132  *    from this software without specific prior written permission.
  133  *
  134  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  135  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  136  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  137  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  138  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  139  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  140  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  141  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  142  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  143  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  144  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  145  *
  146  * Alternatively, you may choose to be licensed under the terms of the
  147  * GNU General Public License ("GPL") version 2 as published by the Free
  148  * Software Foundation.
  149  *
  150  *****************************************************************************/
  151 
  152 #ifndef __ACLOCAL_H__
  153 #define __ACLOCAL_H__
  154 
  155 
  156 /* acpisrc:StructDefs -- for acpisrc conversion */
  157 
  158 #define ACPI_SERIALIZED                 0xFF
  159 
  160 typedef UINT32                          ACPI_MUTEX_HANDLE;
  161 #define ACPI_GLOBAL_LOCK                (ACPI_SEMAPHORE) (-1)
  162 
  163 /* Total number of aml opcodes defined */
  164 
  165 #define AML_NUM_OPCODES                 0x83
  166 
  167 
  168 /* Forward declarations */
  169 
  170 struct acpi_walk_state;
  171 struct acpi_obj_mutex;
  172 union acpi_parse_object;
  173 
  174 
  175 /*****************************************************************************
  176  *
  177  * Mutex typedefs and structs
  178  *
  179  ****************************************************************************/
  180 
  181 
  182 /*
  183  * Predefined handles for the mutex objects used within the subsystem
  184  * All mutex objects are automatically created by AcpiUtMutexInitialize.
  185  *
  186  * The acquire/release ordering protocol is implied via this list. Mutexes
  187  * with a lower value must be acquired before mutexes with a higher value.
  188  *
  189  * NOTE: any changes here must be reflected in the AcpiGbl_MutexNames
  190  * table below also!
  191  */
  192 #define ACPI_MTX_INTERPRETER            0   /* AML Interpreter, main lock */
  193 #define ACPI_MTX_NAMESPACE              1   /* ACPI Namespace */
  194 #define ACPI_MTX_TABLES                 2   /* Data for ACPI tables */
  195 #define ACPI_MTX_EVENTS                 3   /* Data for ACPI events */
  196 #define ACPI_MTX_CACHES                 4   /* Internal caches, general purposes */
  197 #define ACPI_MTX_MEMORY                 5   /* Debug memory tracking lists */
  198 
  199 #define ACPI_MAX_MUTEX                  5
  200 #define ACPI_NUM_MUTEX                  (ACPI_MAX_MUTEX+1)
  201 
  202 
  203 /* Lock structure for reader/writer interfaces */
  204 
  205 typedef struct acpi_rw_lock
  206 {
  207     ACPI_MUTEX              WriterMutex;
  208     ACPI_MUTEX              ReaderMutex;
  209     UINT32                  NumReaders;
  210 
  211 } ACPI_RW_LOCK;
  212 
  213 
  214 /*
  215  * Predefined handles for spinlocks used within the subsystem.
  216  * These spinlocks are created by AcpiUtMutexInitialize
  217  */
  218 #define ACPI_LOCK_GPES                  0
  219 #define ACPI_LOCK_HARDWARE              1
  220 
  221 #define ACPI_MAX_LOCK                   1
  222 #define ACPI_NUM_LOCK                   (ACPI_MAX_LOCK+1)
  223 
  224 
  225 /* This Thread ID means that the mutex is not in use (unlocked) */
  226 
  227 #define ACPI_MUTEX_NOT_ACQUIRED         ((ACPI_THREAD_ID) -1)
  228 
  229 /* This Thread ID means an invalid thread ID */
  230 
  231 #ifdef ACPI_OS_INVALID_THREAD_ID
  232 #define ACPI_INVALID_THREAD_ID          ACPI_OS_INVALID_THREAD_ID
  233 #else
  234 #define ACPI_INVALID_THREAD_ID          ((ACPI_THREAD_ID) 0xFFFFFFFF)
  235 #endif
  236 
  237 /* Table for the global mutexes */
  238 
  239 typedef struct acpi_mutex_info
  240 {
  241     ACPI_MUTEX                      Mutex;
  242     UINT32                          UseCount;
  243     ACPI_THREAD_ID                  ThreadId;
  244 
  245 } ACPI_MUTEX_INFO;
  246 
  247 
  248 /* Lock flag parameter for various interfaces */
  249 
  250 #define ACPI_MTX_DO_NOT_LOCK            0
  251 #define ACPI_MTX_LOCK                   1
  252 
  253 
  254 /* Field access granularities */
  255 
  256 #define ACPI_FIELD_BYTE_GRANULARITY     1
  257 #define ACPI_FIELD_WORD_GRANULARITY     2
  258 #define ACPI_FIELD_DWORD_GRANULARITY    4
  259 #define ACPI_FIELD_QWORD_GRANULARITY    8
  260 
  261 
  262 #define ACPI_ENTRY_NOT_FOUND            NULL
  263 
  264 
  265 /*****************************************************************************
  266  *
  267  * Namespace typedefs and structs
  268  *
  269  ****************************************************************************/
  270 
  271 /* Operational modes of the AML interpreter/scanner */
  272 
  273 typedef enum
  274 {
  275     ACPI_IMODE_LOAD_PASS1           = 0x01,
  276     ACPI_IMODE_LOAD_PASS2           = 0x02,
  277     ACPI_IMODE_EXECUTE              = 0x03
  278 
  279 } ACPI_INTERPRETER_MODE;
  280 
  281 
  282 /*
  283  * The Namespace Node describes a named object that appears in the AML.
  284  * DescriptorType is used to differentiate between internal descriptors.
  285  *
  286  * The node is optimized for both 32-bit and 64-bit platforms:
  287  * 20 bytes for the 32-bit case, 32 bytes for the 64-bit case.
  288  *
  289  * Note: The DescriptorType and Type fields must appear in the identical
  290  * position in both the ACPI_NAMESPACE_NODE and ACPI_OPERAND_OBJECT
  291  * structures.
  292  */
  293 typedef struct acpi_namespace_node
  294 {
  295     union acpi_operand_object       *Object;        /* Interpreter object */
  296     UINT8                           DescriptorType; /* Differentiate object descriptor types */
  297     UINT8                           Type;           /* ACPI Type associated with this name */
  298     UINT16                          Flags;          /* Miscellaneous flags */
  299     ACPI_NAME_UNION                 Name;           /* ACPI Name, always 4 chars per ACPI spec */
  300     struct acpi_namespace_node      *Parent;        /* Parent node */
  301     struct acpi_namespace_node      *Child;         /* First child */
  302     struct acpi_namespace_node      *Peer;          /* First peer */
  303     ACPI_OWNER_ID                   OwnerId;        /* Node creator */
  304 
  305     /*
  306      * The following fields are used by the ASL compiler and disassembler only
  307      */
  308 #ifdef ACPI_LARGE_NAMESPACE_NODE
  309     union acpi_parse_object         *Op;
  310     void                            *MethodLocals;
  311     void                            *MethodArgs;
  312     UINT32                          Value;
  313     UINT32                          Length;
  314     UINT8                           ArgCount;
  315 
  316 #endif
  317 
  318 } ACPI_NAMESPACE_NODE;
  319 
  320 
  321 /* Namespace Node flags */
  322 
  323 #define ANOBJ_RESERVED                  0x01    /* Available for use */
  324 #define ANOBJ_TEMPORARY                 0x02    /* Node is create by a method and is temporary */
  325 #define ANOBJ_METHOD_ARG                0x04    /* Node is a method argument */
  326 #define ANOBJ_METHOD_LOCAL              0x08    /* Node is a method local */
  327 #define ANOBJ_SUBTREE_HAS_INI           0x10    /* Used to optimize device initialization */
  328 #define ANOBJ_EVALUATED                 0x20    /* Set on first evaluation of node */
  329 #define ANOBJ_ALLOCATED_BUFFER          0x40    /* Method AML buffer is dynamic (InstallMethod) */
  330 #define ANOBJ_NODE_EARLY_INIT           0x80    /* AcpiExec only: Node was create via init file (-fi) */
  331 
  332 #define ANOBJ_IS_EXTERNAL               0x08    /* iASL only: This object created via External() */
  333 #define ANOBJ_METHOD_NO_RETVAL          0x10    /* iASL only: Method has no return value */
  334 #define ANOBJ_METHOD_SOME_NO_RETVAL     0x20    /* iASL only: Method has at least one return value */
  335 #define ANOBJ_IS_REFERENCED             0x80    /* iASL only: Object was referenced */
  336 
  337 
  338 /* Internal ACPI table management - master table list */
  339 
  340 typedef struct acpi_table_list
  341 {
  342     ACPI_TABLE_DESC                 *Tables;            /* Table descriptor array */
  343     UINT32                          CurrentTableCount;  /* Tables currently in the array */
  344     UINT32                          MaxTableCount;      /* Max tables array will hold */
  345     UINT8                           Flags;
  346 
  347 } ACPI_TABLE_LIST;
  348 
  349 /* Flags for above */
  350 
  351 #define ACPI_ROOT_ORIGIN_UNKNOWN        (0)     /* ~ORIGIN_ALLOCATED */
  352 #define ACPI_ROOT_ORIGIN_ALLOCATED      (1)
  353 #define ACPI_ROOT_ALLOW_RESIZE          (2)
  354 
  355 
  356 /* List to manage incoming ACPI tables */
  357 
  358 typedef struct acpi_new_table_desc
  359 {
  360     ACPI_TABLE_HEADER               *Table;
  361     struct acpi_new_table_desc      *Next;
  362 
  363 } ACPI_NEW_TABLE_DESC;
  364 
  365 
  366 /* Predefined table indexes */
  367 
  368 #define ACPI_INVALID_TABLE_INDEX        (0xFFFFFFFF)
  369 
  370 
  371 typedef struct acpi_find_context
  372 {
  373     char                            *SearchFor;
  374     ACPI_HANDLE                     *List;
  375     UINT32                          *Count;
  376 
  377 } ACPI_FIND_CONTEXT;
  378 
  379 
  380 typedef struct acpi_ns_search_data
  381 {
  382     ACPI_NAMESPACE_NODE             *Node;
  383 
  384 } ACPI_NS_SEARCH_DATA;
  385 
  386 
  387 /* Object types used during package copies */
  388 
  389 #define ACPI_COPY_TYPE_SIMPLE           0
  390 #define ACPI_COPY_TYPE_PACKAGE          1
  391 
  392 
  393 /* Info structure used to convert external<->internal namestrings */
  394 
  395 typedef struct acpi_namestring_info
  396 {
  397     const char                      *ExternalName;
  398     const char                      *NextExternalChar;
  399     char                            *InternalName;
  400     UINT32                          Length;
  401     UINT32                          NumSegments;
  402     UINT32                          NumCarats;
  403     BOOLEAN                         FullyQualified;
  404 
  405 } ACPI_NAMESTRING_INFO;
  406 
  407 
  408 /* Field creation info */
  409 
  410 typedef struct acpi_create_field_info
  411 {
  412     ACPI_NAMESPACE_NODE             *RegionNode;
  413     ACPI_NAMESPACE_NODE             *FieldNode;
  414     ACPI_NAMESPACE_NODE             *RegisterNode;
  415     ACPI_NAMESPACE_NODE             *DataRegisterNode;
  416     ACPI_NAMESPACE_NODE             *ConnectionNode;
  417     UINT8                           *ResourceBuffer;
  418     UINT32                          BankValue;
  419     UINT32                          FieldBitPosition;
  420     UINT32                          FieldBitLength;
  421     UINT16                          ResourceLength;
  422     UINT16                          PinNumberIndex;
  423     UINT8                           FieldFlags;
  424     UINT8                           Attribute;
  425     UINT8                           FieldType;
  426     UINT8                           AccessLength;
  427 
  428 } ACPI_CREATE_FIELD_INFO;
  429 
  430 
  431 typedef
  432 ACPI_STATUS (*ACPI_INTERNAL_METHOD) (
  433     struct acpi_walk_state          *WalkState);
  434 
  435 
  436 /*
  437  * Bitmapped ACPI types. Used internally only
  438  */
  439 #define ACPI_BTYPE_ANY                  0x00000000
  440 #define ACPI_BTYPE_INTEGER              0x00000001
  441 #define ACPI_BTYPE_STRING               0x00000002
  442 #define ACPI_BTYPE_BUFFER               0x00000004
  443 #define ACPI_BTYPE_PACKAGE              0x00000008
  444 #define ACPI_BTYPE_FIELD_UNIT           0x00000010
  445 #define ACPI_BTYPE_DEVICE               0x00000020
  446 #define ACPI_BTYPE_EVENT                0x00000040
  447 #define ACPI_BTYPE_METHOD               0x00000080
  448 #define ACPI_BTYPE_MUTEX                0x00000100
  449 #define ACPI_BTYPE_REGION               0x00000200
  450 #define ACPI_BTYPE_POWER                0x00000400
  451 #define ACPI_BTYPE_PROCESSOR            0x00000800
  452 #define ACPI_BTYPE_THERMAL              0x00001000
  453 #define ACPI_BTYPE_BUFFER_FIELD         0x00002000
  454 #define ACPI_BTYPE_DDB_HANDLE           0x00004000
  455 #define ACPI_BTYPE_DEBUG_OBJECT         0x00008000
  456 #define ACPI_BTYPE_REFERENCE_OBJECT     0x00010000 /* From Index(), RefOf(), etc (Type6Opcodes) */
  457 #define ACPI_BTYPE_RESOURCE             0x00020000
  458 #define ACPI_BTYPE_NAMED_REFERENCE      0x00040000 /* Generic unresolved Name or Namepath */
  459 
  460 #define ACPI_BTYPE_COMPUTE_DATA         (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER)
  461 
  462 #define ACPI_BTYPE_DATA                 (ACPI_BTYPE_COMPUTE_DATA  | ACPI_BTYPE_PACKAGE)
  463 
  464     /* Used by Copy, DeRefOf, Store, Printf, Fprintf */
  465 
  466 #define ACPI_BTYPE_DATA_REFERENCE       (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE_OBJECT | ACPI_BTYPE_DDB_HANDLE)
  467 #define ACPI_BTYPE_DEVICE_OBJECTS       (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR)
  468 #define ACPI_BTYPE_OBJECTS_AND_REFS     0x0001FFFF  /* ARG or LOCAL */
  469 #define ACPI_BTYPE_ALL_OBJECTS          0x0000FFFF
  470 
  471 #pragma pack(1)
  472 
  473 /*
  474  * Information structure for ACPI predefined names.
  475  * Each entry in the table contains the following items:
  476  *
  477  * Name                 - The ACPI reserved name
  478  * ParamCount           - Number of arguments to the method
  479  * ExpectedReturnBtypes - Allowed type(s) for the return value
  480  */
  481 typedef struct acpi_name_info
  482 {
  483     char                        Name[ACPI_NAMESEG_SIZE];
  484     UINT16                      ArgumentList;
  485     UINT8                       ExpectedBtypes;
  486 
  487 } ACPI_NAME_INFO;
  488 
  489 /*
  490  * Secondary information structures for ACPI predefined objects that return
  491  * package objects. This structure appears as the next entry in the table
  492  * after the NAME_INFO structure above.
  493  *
  494  * The reason for this is to minimize the size of the predefined name table.
  495  */
  496 
  497 /*
  498  * Used for ACPI_PTYPE1_FIXED, ACPI_PTYPE1_VAR, ACPI_PTYPE2,
  499  * ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT,
  500  * ACPI_PTYPE2_FIX_VAR
  501  */
  502 typedef struct acpi_package_info
  503 {
  504     UINT8                       Type;
  505     UINT8                       ObjectType1;
  506     UINT8                       Count1;
  507     UINT8                       ObjectType2;
  508     UINT8                       Count2;
  509     UINT16                      Reserved;
  510 
  511 } ACPI_PACKAGE_INFO;
  512 
  513 /* Used for ACPI_PTYPE2_FIXED */
  514 
  515 typedef struct acpi_package_info2
  516 {
  517     UINT8                       Type;
  518     UINT8                       Count;
  519     UINT8                       ObjectType[4];
  520     UINT8                       Reserved;
  521 
  522 } ACPI_PACKAGE_INFO2;
  523 
  524 /* Used for ACPI_PTYPE1_OPTION */
  525 
  526 typedef struct acpi_package_info3
  527 {
  528     UINT8                       Type;
  529     UINT8                       Count;
  530     UINT8                       ObjectType[2];
  531     UINT8                       TailObjectType;
  532     UINT16                      Reserved;
  533 
  534 } ACPI_PACKAGE_INFO3;
  535 
  536 typedef struct acpi_package_info4
  537 {
  538     UINT8                       Type;
  539     UINT8                       ObjectType1;
  540     UINT8                       Count1;
  541     UINT8                       SubObjectTypes;
  542     UINT8                       PkgCount;
  543     UINT16                      Reserved;
  544 
  545 } ACPI_PACKAGE_INFO4;
  546 
  547 typedef union acpi_predefined_info
  548 {
  549     ACPI_NAME_INFO              Info;
  550     ACPI_PACKAGE_INFO           RetInfo;
  551     ACPI_PACKAGE_INFO2          RetInfo2;
  552     ACPI_PACKAGE_INFO3          RetInfo3;
  553     ACPI_PACKAGE_INFO4          RetInfo4;
  554 
  555 } ACPI_PREDEFINED_INFO;
  556 
  557 /* Reset to default packing */
  558 
  559 #pragma pack()
  560 
  561 
  562 /* Return object auto-repair info */
  563 
  564 typedef ACPI_STATUS (*ACPI_OBJECT_CONVERTER) (
  565     struct acpi_namespace_node  *Scope,
  566     union acpi_operand_object   *OriginalObject,
  567     union acpi_operand_object   **ConvertedObject);
  568 
  569 typedef struct acpi_simple_repair_info
  570 {
  571     char                        Name[ACPI_NAMESEG_SIZE];
  572     UINT32                      UnexpectedBtypes;
  573     UINT32                      PackageIndex;
  574     ACPI_OBJECT_CONVERTER       ObjectConverter;
  575 
  576 } ACPI_SIMPLE_REPAIR_INFO;
  577 
  578 
  579 /*
  580  * Bitmapped return value types
  581  * Note: the actual data types must be contiguous, a loop in nspredef.c
  582  * depends on this.
  583  */
  584 #define ACPI_RTYPE_ANY                  0x00
  585 #define ACPI_RTYPE_NONE                 0x01
  586 #define ACPI_RTYPE_INTEGER              0x02
  587 #define ACPI_RTYPE_STRING               0x04
  588 #define ACPI_RTYPE_BUFFER               0x08
  589 #define ACPI_RTYPE_PACKAGE              0x10
  590 #define ACPI_RTYPE_REFERENCE            0x20
  591 #define ACPI_RTYPE_ALL                  0x3F
  592 
  593 #define ACPI_NUM_RTYPES                 5   /* Number of actual object types */
  594 
  595 
  596 /* Info for running the _REG methods */
  597 
  598 typedef struct acpi_reg_walk_info
  599 {
  600     UINT32                  Function;
  601     UINT32                  RegRunCount;
  602     ACPI_ADR_SPACE_TYPE     SpaceId;
  603 
  604 } ACPI_REG_WALK_INFO;
  605 
  606 
  607 /*****************************************************************************
  608  *
  609  * Event typedefs and structs
  610  *
  611  ****************************************************************************/
  612 
  613 /* Dispatch info for each host-installed SCI handler */
  614 
  615 typedef struct acpi_sci_handler_info
  616 {
  617     struct acpi_sci_handler_info    *Next;
  618     ACPI_SCI_HANDLER                Address;        /* Address of handler */
  619     void                            *Context;       /* Context to be passed to handler */
  620 
  621 } ACPI_SCI_HANDLER_INFO;
  622 
  623 /* Dispatch info for each GPE -- either a method or handler, cannot be both */
  624 
  625 typedef struct acpi_gpe_handler_info
  626 {
  627     ACPI_GPE_HANDLER                Address;        /* Address of handler, if any */
  628     void                            *Context;       /* Context to be passed to handler */
  629     ACPI_NAMESPACE_NODE             *MethodNode;    /* Method node for this GPE level (saved) */
  630     UINT8                           OriginalFlags;  /* Original (pre-handler) GPE info */
  631     BOOLEAN                         OriginallyEnabled; /* True if GPE was originally enabled */
  632 
  633 } ACPI_GPE_HANDLER_INFO;
  634 
  635 /* Notify info for implicit notify, multiple device objects */
  636 
  637 typedef struct acpi_gpe_notify_info
  638 {
  639     ACPI_NAMESPACE_NODE             *DeviceNode;    /* Device to be notified */
  640     struct acpi_gpe_notify_info     *Next;
  641 
  642 } ACPI_GPE_NOTIFY_INFO;
  643 
  644 /*
  645  * GPE dispatch info. At any time, the GPE can have at most one type
  646  * of dispatch - Method, Handler, or Implicit Notify.
  647  */
  648 typedef union acpi_gpe_dispatch_info
  649 {
  650     ACPI_NAMESPACE_NODE             *MethodNode;    /* Method node for this GPE level */
  651     ACPI_GPE_HANDLER_INFO           *Handler;       /* Installed GPE handler */
  652     ACPI_GPE_NOTIFY_INFO            *NotifyList;    /* List of _PRW devices for implicit notifies */
  653 
  654 } ACPI_GPE_DISPATCH_INFO;
  655 
  656 /*
  657  * Information about a GPE, one per each GPE in an array.
  658  * NOTE: Important to keep this struct as small as possible.
  659  */
  660 typedef struct acpi_gpe_event_info
  661 {
  662     union acpi_gpe_dispatch_info    Dispatch;           /* Either Method, Handler, or NotifyList */
  663     struct acpi_gpe_register_info   *RegisterInfo;      /* Backpointer to register info */
  664     UINT8                           Flags;              /* Misc info about this GPE */
  665     UINT8                           GpeNumber;          /* This GPE */
  666     UINT8                           RuntimeCount;       /* References to a run GPE */
  667     BOOLEAN                         DisableForDispatch; /* Masked during dispatching */
  668 
  669 } ACPI_GPE_EVENT_INFO;
  670 
  671 /* Information about a GPE register pair, one per each status/enable pair in an array */
  672 
  673 typedef struct acpi_gpe_register_info
  674 {
  675     ACPI_GENERIC_ADDRESS            StatusAddress;  /* Address of status reg */
  676     ACPI_GENERIC_ADDRESS            EnableAddress;  /* Address of enable reg */
  677     UINT16                          BaseGpeNumber;  /* Base GPE number for this register */
  678     UINT8                           EnableForWake;  /* GPEs to keep enabled when sleeping */
  679     UINT8                           EnableForRun;   /* GPEs to keep enabled when running */
  680     UINT8                           MaskForRun;     /* GPEs to keep masked when running */
  681     UINT8                           EnableMask;     /* Current mask of enabled GPEs */
  682 
  683 } ACPI_GPE_REGISTER_INFO;
  684 
  685 /*
  686  * Information about a GPE register block, one per each installed block --
  687  * GPE0, GPE1, and one per each installed GPE Block Device.
  688  */
  689 typedef struct acpi_gpe_block_info
  690 {
  691     ACPI_NAMESPACE_NODE             *Node;
  692     struct acpi_gpe_block_info      *Previous;
  693     struct acpi_gpe_block_info      *Next;
  694     struct acpi_gpe_xrupt_info      *XruptBlock;    /* Backpointer to interrupt block */
  695     ACPI_GPE_REGISTER_INFO          *RegisterInfo;  /* One per GPE register pair */
  696     ACPI_GPE_EVENT_INFO             *EventInfo;     /* One for each GPE */
  697     UINT64                          Address;        /* Base address of the block */
  698     UINT32                          RegisterCount;  /* Number of register pairs in block */
  699     UINT16                          GpeCount;       /* Number of individual GPEs in block */
  700     UINT16                          BlockBaseNumber;/* Base GPE number for this block */
  701     UINT8                           SpaceId;
  702     BOOLEAN                         Initialized;    /* TRUE if this block is initialized */
  703 
  704 } ACPI_GPE_BLOCK_INFO;
  705 
  706 /* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */
  707 
  708 typedef struct acpi_gpe_xrupt_info
  709 {
  710     struct acpi_gpe_xrupt_info      *Previous;
  711     struct acpi_gpe_xrupt_info      *Next;
  712     ACPI_GPE_BLOCK_INFO             *GpeBlockListHead;  /* List of GPE blocks for this xrupt */
  713     UINT32                          InterruptNumber;    /* System interrupt number */
  714 
  715 } ACPI_GPE_XRUPT_INFO;
  716 
  717 typedef struct acpi_gpe_walk_info
  718 {
  719     ACPI_NAMESPACE_NODE             *GpeDevice;
  720     ACPI_GPE_BLOCK_INFO             *GpeBlock;
  721     UINT16                          Count;
  722     ACPI_OWNER_ID                   OwnerId;
  723     BOOLEAN                         ExecuteByOwnerId;
  724 
  725 } ACPI_GPE_WALK_INFO;
  726 
  727 typedef struct acpi_gpe_device_info
  728 {
  729     UINT32                          Index;
  730     UINT32                          NextBlockBaseIndex;
  731     ACPI_STATUS                     Status;
  732     ACPI_NAMESPACE_NODE             *GpeDevice;
  733 
  734 } ACPI_GPE_DEVICE_INFO;
  735 
  736 typedef ACPI_STATUS (*ACPI_GPE_CALLBACK) (
  737     ACPI_GPE_XRUPT_INFO             *GpeXruptInfo,
  738     ACPI_GPE_BLOCK_INFO             *GpeBlock,
  739     void                            *Context);
  740 
  741 
  742 /* Information about each particular fixed event */
  743 
  744 typedef struct acpi_fixed_event_handler
  745 {
  746     ACPI_EVENT_HANDLER              Handler;        /* Address of handler. */
  747     void                            *Context;       /* Context to be passed to handler */
  748 
  749 } ACPI_FIXED_EVENT_HANDLER;
  750 
  751 typedef struct acpi_fixed_event_info
  752 {
  753     UINT8                           StatusRegisterId;
  754     UINT8                           EnableRegisterId;
  755     UINT16                          StatusBitMask;
  756     UINT16                          EnableBitMask;
  757 
  758 } ACPI_FIXED_EVENT_INFO;
  759 
  760 /* Information used during field processing */
  761 
  762 typedef struct acpi_field_info
  763 {
  764     UINT8                           SkipField;
  765     UINT8                           FieldFlag;
  766     UINT32                          PkgLength;
  767 
  768 } ACPI_FIELD_INFO;
  769 
  770 
  771 /*****************************************************************************
  772  *
  773  * Generic "state" object for stacks
  774  *
  775  ****************************************************************************/
  776 
  777 #define ACPI_CONTROL_NORMAL                  0xC0
  778 #define ACPI_CONTROL_CONDITIONAL_EXECUTING   0xC1
  779 #define ACPI_CONTROL_PREDICATE_EXECUTING     0xC2
  780 #define ACPI_CONTROL_PREDICATE_FALSE         0xC3
  781 #define ACPI_CONTROL_PREDICATE_TRUE          0xC4
  782 
  783 
  784 #define ACPI_STATE_COMMON \
  785     void                            *Next; \
  786     UINT8                           DescriptorType; /* To differentiate various internal objs */\
  787     UINT8                           Flags; \
  788     UINT16                          Value; \
  789     UINT16                          State;
  790 
  791     /* There are 2 bytes available here until the next natural alignment boundary */
  792 
  793 typedef struct acpi_common_state
  794 {
  795     ACPI_STATE_COMMON
  796 } ACPI_COMMON_STATE;
  797 
  798 
  799 /*
  800  * Update state - used to traverse complex objects such as packages
  801  */
  802 typedef struct acpi_update_state
  803 {
  804     ACPI_STATE_COMMON
  805     union acpi_operand_object       *Object;
  806 
  807 } ACPI_UPDATE_STATE;
  808 
  809 
  810 /*
  811  * Pkg state - used to traverse nested package structures
  812  */
  813 typedef struct acpi_pkg_state
  814 {
  815     ACPI_STATE_COMMON
  816     UINT32                          Index;
  817     union acpi_operand_object       *SourceObject;
  818     union acpi_operand_object       *DestObject;
  819     struct acpi_walk_state          *WalkState;
  820     void                            *ThisTargetObj;
  821     UINT32                          NumPackages;
  822 
  823 } ACPI_PKG_STATE;
  824 
  825 
  826 /*
  827  * Control state - one per if/else and while constructs.
  828  * Allows nesting of these constructs
  829  */
  830 typedef struct acpi_control_state
  831 {
  832     ACPI_STATE_COMMON
  833     UINT16                          Opcode;
  834     union acpi_parse_object         *PredicateOp;
  835     UINT8                           *AmlPredicateStart;     /* Start of if/while predicate */
  836     UINT8                           *PackageEnd;            /* End of if/while block */
  837     UINT64                          LoopTimeout;            /* While() loop timeout */
  838 
  839 } ACPI_CONTROL_STATE;
  840 
  841 
  842 /*
  843  * Scope state - current scope during namespace lookups
  844  */
  845 typedef struct acpi_scope_state
  846 {
  847     ACPI_STATE_COMMON
  848     ACPI_NAMESPACE_NODE             *Node;
  849 
  850 } ACPI_SCOPE_STATE;
  851 
  852 
  853 typedef struct acpi_pscope_state
  854 {
  855     ACPI_STATE_COMMON
  856     UINT32                          ArgCount;               /* Number of fixed arguments */
  857     union acpi_parse_object         *Op;                    /* Current op being parsed */
  858     UINT8                           *ArgEnd;                /* Current argument end */
  859     UINT8                           *PkgEnd;                /* Current package end */
  860     UINT32                          ArgList;                /* Next argument to parse */
  861 
  862 } ACPI_PSCOPE_STATE;
  863 
  864 
  865 /*
  866  * Thread state - one per thread across multiple walk states. Multiple walk
  867  * states are created when there are nested control methods executing.
  868  */
  869 typedef struct acpi_thread_state
  870 {
  871     ACPI_STATE_COMMON
  872     UINT8                           CurrentSyncLevel;       /* Mutex Sync (nested acquire) level */
  873     struct acpi_walk_state          *WalkStateList;         /* Head of list of WalkStates for this thread */
  874     union acpi_operand_object       *AcquiredMutexList;     /* List of all currently acquired mutexes */
  875     ACPI_THREAD_ID                  ThreadId;               /* Running thread ID */
  876 
  877 } ACPI_THREAD_STATE;
  878 
  879 
  880 /*
  881  * Result values - used to accumulate the results of nested
  882  * AML arguments
  883  */
  884 typedef struct acpi_result_values
  885 {
  886     ACPI_STATE_COMMON
  887     union acpi_operand_object       *ObjDesc [ACPI_RESULTS_FRAME_OBJ_NUM];
  888 
  889 } ACPI_RESULT_VALUES;
  890 
  891 
  892 typedef
  893 ACPI_STATUS (*ACPI_PARSE_DOWNWARDS) (
  894     struct acpi_walk_state          *WalkState,
  895     union acpi_parse_object         **OutOp);
  896 
  897 typedef
  898 ACPI_STATUS (*ACPI_PARSE_UPWARDS) (
  899     struct acpi_walk_state          *WalkState);
  900 
  901 
  902 /* Global handlers for AML Notifies */
  903 
  904 typedef struct acpi_global_notify_handler
  905 {
  906     ACPI_NOTIFY_HANDLER             Handler;
  907     void                            *Context;
  908 
  909 } ACPI_GLOBAL_NOTIFY_HANDLER;
  910 
  911 /*
  912  * Notify info - used to pass info to the deferred notify
  913  * handler/dispatcher.
  914  */
  915 typedef struct acpi_notify_info
  916 {
  917     ACPI_STATE_COMMON
  918     UINT8                           HandlerListId;
  919     ACPI_NAMESPACE_NODE             *Node;
  920     union acpi_operand_object       *HandlerListHead;
  921     ACPI_GLOBAL_NOTIFY_HANDLER      *Global;
  922 
  923 } ACPI_NOTIFY_INFO;
  924 
  925 
  926 /* Generic state is union of structs above */
  927 
  928 typedef union acpi_generic_state
  929 {
  930     ACPI_COMMON_STATE               Common;
  931     ACPI_CONTROL_STATE              Control;
  932     ACPI_UPDATE_STATE               Update;
  933     ACPI_SCOPE_STATE                Scope;
  934     ACPI_PSCOPE_STATE               ParseScope;
  935     ACPI_PKG_STATE                  Pkg;
  936     ACPI_THREAD_STATE               Thread;
  937     ACPI_RESULT_VALUES              Results;
  938     ACPI_NOTIFY_INFO                Notify;
  939 
  940 } ACPI_GENERIC_STATE;
  941 
  942 
  943 /*****************************************************************************
  944  *
  945  * Interpreter typedefs and structs
  946  *
  947  ****************************************************************************/
  948 
  949 typedef
  950 ACPI_STATUS (*ACPI_EXECUTE_OP) (
  951     struct acpi_walk_state          *WalkState);
  952 
  953 /* Address Range info block */
  954 
  955 typedef struct acpi_address_range
  956 {
  957     struct acpi_address_range   *Next;
  958     ACPI_NAMESPACE_NODE         *RegionNode;
  959     ACPI_PHYSICAL_ADDRESS       StartAddress;
  960     ACPI_PHYSICAL_ADDRESS       EndAddress;
  961 
  962 } ACPI_ADDRESS_RANGE;
  963 
  964 
  965 /*****************************************************************************
  966  *
  967  * Parser typedefs and structs
  968  *
  969  ****************************************************************************/
  970 
  971 /*
  972  * AML opcode, name, and argument layout
  973  */
  974 typedef struct acpi_opcode_info
  975 {
  976 #if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT)
  977     char                            *Name;          /* Opcode name (disassembler/debug only) */
  978 #endif
  979     UINT32                          ParseArgs;      /* Grammar/Parse time arguments */
  980     UINT32                          RuntimeArgs;    /* Interpret time arguments */
  981     UINT16                          Flags;          /* Misc flags */
  982     UINT8                           ObjectType;     /* Corresponding internal object type */
  983     UINT8                           Class;          /* Opcode class */
  984     UINT8                           Type;           /* Opcode type */
  985 
  986 } ACPI_OPCODE_INFO;
  987 
  988 /* Structure for Resource Tag information */
  989 
  990 typedef struct acpi_tag_info
  991 {
  992     UINT32                          BitOffset;
  993     UINT32                          BitLength;
  994 
  995 } ACPI_TAG_INFO;
  996 
  997 /* Value associated with the parse object */
  998 
  999 typedef union acpi_parse_value
 1000 {
 1001     UINT64                          Integer;        /* Integer constant (Up to 64 bits) */
 1002     UINT32                          Size;           /* bytelist or field size */
 1003     char                            *String;        /* NULL terminated string */
 1004     UINT8                           *Buffer;        /* buffer or string */
 1005     char                            *Name;          /* NULL terminated string */
 1006     union acpi_parse_object         *Arg;           /* arguments and contained ops */
 1007     ACPI_TAG_INFO                   Tag;            /* Resource descriptor tag info  */
 1008 
 1009 } ACPI_PARSE_VALUE;
 1010 
 1011 
 1012 #if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT)
 1013 #define ACPI_DISASM_ONLY_MEMBERS(a)     a;
 1014 #else
 1015 #define ACPI_DISASM_ONLY_MEMBERS(a)
 1016 #endif
 1017 
 1018 #if defined(ACPI_ASL_COMPILER)
 1019 #define ACPI_CONVERTER_ONLY_MEMBERS(a)  a;
 1020 #else
 1021 #define ACPI_CONVERTER_ONLY_MEMBERS(a)
 1022 #endif
 1023 
 1024 #define ACPI_PARSE_COMMON \
 1025     union acpi_parse_object         *Parent;            /* Parent op */\
 1026     UINT8                           DescriptorType;     /* To differentiate various internal objs */\
 1027     UINT8                           Flags;              /* Type of Op */\
 1028     UINT16                          AmlOpcode;          /* AML opcode */\
 1029     UINT8                           *Aml;               /* Address of declaration in AML */\
 1030     union acpi_parse_object         *Next;              /* Next op */\
 1031     ACPI_NAMESPACE_NODE             *Node;              /* For use by interpreter */\
 1032     ACPI_PARSE_VALUE                Value;              /* Value or args associated with the opcode */\
 1033     UINT8                           ArgListLength;      /* Number of elements in the arg list */\
 1034      ACPI_DISASM_ONLY_MEMBERS (\
 1035     UINT16                          DisasmFlags;        /* Used during AML disassembly */\
 1036     UINT8                           DisasmOpcode;       /* Subtype used for disassembly */\
 1037     char                            *OperatorSymbol;    /* Used for C-style operator name strings */\
 1038     char                            AmlOpName[16])      /* Op name (debug only) */\
 1039      ACPI_CONVERTER_ONLY_MEMBERS (\
 1040     char                            *InlineComment;     /* Inline comment */\
 1041     char                            *EndNodeComment;    /* End of node comment */\
 1042     char                            *NameComment;       /* Comment associated with the first parameter of the name node */\
 1043     char                            *CloseBraceComment; /* Comments that come after } on the same as } */\
 1044     ACPI_COMMENT_NODE               *CommentList;       /* comments that appears before this node */\
 1045     ACPI_COMMENT_NODE               *EndBlkComment;     /* comments that at the end of a block but before ) or } */\
 1046     char                            *CvFilename;        /* Filename associated with this node. Used for ASL/ASL+ converter */\
 1047     char                            *CvParentFilename)  /* Parent filename associated with this node. Used for ASL/ASL+ converter */
 1048 
 1049 
 1050 /* categories of comments */
 1051 
 1052 typedef enum
 1053 {
 1054     STANDARD_COMMENT = 1,
 1055     INLINE_COMMENT,
 1056     ENDNODE_COMMENT,
 1057     OPENBRACE_COMMENT,
 1058     CLOSE_BRACE_COMMENT,
 1059     STD_DEFBLK_COMMENT,
 1060     END_DEFBLK_COMMENT,
 1061     FILENAME_COMMENT,
 1062     PARENTFILENAME_COMMENT,
 1063     ENDBLK_COMMENT,
 1064     INCLUDE_COMMENT
 1065 
 1066 } ASL_COMMENT_TYPES;
 1067 
 1068 
 1069 /* Internal opcodes for DisasmOpcode field above */
 1070 
 1071 #define ACPI_DASM_BUFFER                0x00        /* Buffer is a simple data buffer */
 1072 #define ACPI_DASM_RESOURCE              0x01        /* Buffer is a Resource Descriptor */
 1073 #define ACPI_DASM_STRING                0x02        /* Buffer is a ASCII string */
 1074 #define ACPI_DASM_UNICODE               0x03        /* Buffer is a Unicode string */
 1075 #define ACPI_DASM_PLD_METHOD            0x04        /* Buffer is a _PLD method bit-packed buffer */
 1076 #define ACPI_DASM_UUID                  0x05        /* Buffer is a UUID/GUID */
 1077 #define ACPI_DASM_EISAID                0x06        /* Integer is an EISAID */
 1078 #define ACPI_DASM_MATCHOP               0x07        /* Parent opcode is a Match() operator */
 1079 #define ACPI_DASM_LNOT_PREFIX           0x08        /* Start of a LNotEqual (etc.) pair of opcodes */
 1080 #define ACPI_DASM_LNOT_SUFFIX           0x09        /* End  of a LNotEqual (etc.) pair of opcodes */
 1081 #define ACPI_DASM_HID_STRING            0x0A        /* String is a _HID or _CID */
 1082 #define ACPI_DASM_IGNORE_SINGLE         0x0B        /* Ignore the opcode but not it's children */
 1083 #define ACPI_DASM_SWITCH                0x0C        /* While is a Switch */
 1084 #define ACPI_DASM_SWITCH_PREDICATE      0x0D        /* Object is a predicate for a Switch or Case block */
 1085 #define ACPI_DASM_CASE                  0x0E        /* If/Else is a Case in a Switch/Case block */
 1086 #define ACPI_DASM_DEFAULT               0x0F        /* Else is a Default in a Switch/Case block */
 1087 
 1088 
 1089 /*
 1090  * List struct used in the -ca option
 1091  */
 1092 typedef struct acpi_comment_node
 1093 {
 1094   char                      *Comment;
 1095   struct acpi_comment_node  *Next;
 1096 
 1097 } ACPI_COMMENT_NODE;
 1098 
 1099 
 1100 typedef struct acpi_comment_addr_node
 1101 {
 1102   UINT8                                    *Addr;
 1103   struct acpi_comment_addr_node            *Next;
 1104 } ACPI_COMMENT_ADDR_NODE;
 1105 
 1106 /*
 1107  * File node - used for "Include" operator file stack and
 1108  * dependency tree for the -ca option
 1109  */
 1110 typedef struct acpi_file_node
 1111 {
 1112     void                    *File;
 1113     char                    *Filename;
 1114     char                    *FileStart;  /* Points to AML and indicates when the AML for this particular file starts. */
 1115     char                    *FileEnd;    /* Points to AML and indicates when the AML for this particular file ends. */
 1116     struct acpi_file_node   *Next;
 1117     struct acpi_file_node   *Parent;
 1118     BOOLEAN                 IncludeWritten;
 1119     ACPI_COMMENT_NODE       *IncludeComment;
 1120 
 1121 } ACPI_FILE_NODE;
 1122 
 1123 
 1124 /*
 1125  * Generic operation (for example:  If, While, Store)
 1126  */
 1127 typedef struct acpi_parse_obj_common
 1128 {
 1129     ACPI_PARSE_COMMON
 1130 } ACPI_PARSE_OBJ_COMMON;
 1131 
 1132 
 1133 /*
 1134  * Extended Op for named ops (Scope, Method, etc.), deferred ops (Methods and OpRegions),
 1135  * and bytelists.
 1136  */
 1137 typedef struct acpi_parse_obj_named
 1138 {
 1139     ACPI_PARSE_COMMON
 1140     char                            *Path;
 1141     UINT8                           *Data;          /* AML body or bytelist data */
 1142     UINT32                          Length;         /* AML length */
 1143     UINT32                          Name;           /* 4-byte name or zero if no name */
 1144 
 1145 } ACPI_PARSE_OBJ_NAMED;
 1146 
 1147 
 1148 /* This version is used by the iASL compiler only */
 1149 
 1150 #define ACPI_MAX_PARSEOP_NAME       20
 1151 
 1152 typedef struct acpi_parse_obj_asl
 1153 {
 1154     ACPI_PARSE_COMMON
 1155     union acpi_parse_object         *Child;
 1156     union acpi_parse_object         *ParentMethod;
 1157     char                            *Filename;
 1158     BOOLEAN                         FileChanged;
 1159     char                            *ParentFilename;
 1160     char                            *ExternalName;
 1161     char                            *Namepath;
 1162     char                            NameSeg[4];
 1163     UINT32                          ExtraValue;
 1164     UINT32                          Column;
 1165     UINT32                          LineNumber;
 1166     UINT32                          LogicalLineNumber;
 1167     UINT32                          LogicalByteOffset;
 1168     UINT32                          EndLine;
 1169     UINT32                          EndLogicalLine;
 1170     UINT32                          AcpiBtype;
 1171     UINT32                          AmlLength;
 1172     UINT32                          AmlSubtreeLength;
 1173     UINT32                          FinalAmlLength;
 1174     UINT32                          FinalAmlOffset;
 1175     UINT32                          CompileFlags;
 1176     UINT16                          ParseOpcode;
 1177     UINT8                           AmlOpcodeLength;
 1178     UINT8                           AmlPkgLenBytes;
 1179     UINT8                           Extra;
 1180     char                            ParseOpName[ACPI_MAX_PARSEOP_NAME];
 1181 
 1182 } ACPI_PARSE_OBJ_ASL;
 1183 
 1184 typedef union acpi_parse_object
 1185 {
 1186     ACPI_PARSE_OBJ_COMMON           Common;
 1187     ACPI_PARSE_OBJ_NAMED            Named;
 1188     ACPI_PARSE_OBJ_ASL              Asl;
 1189 
 1190 } ACPI_PARSE_OBJECT;
 1191 
 1192 typedef struct asl_comment_state
 1193 {
 1194     UINT8                           CommentType;
 1195     UINT32                          SpacesBefore;
 1196     ACPI_PARSE_OBJECT               *LatestParseOp;
 1197     ACPI_PARSE_OBJECT               *ParsingParenBraceNode;
 1198     BOOLEAN                         CaptureComments;
 1199 
 1200 } ASL_COMMENT_STATE;
 1201 
 1202 
 1203 /*
 1204  * Parse state - one state per parser invocation and each control
 1205  * method.
 1206  */
 1207 typedef struct acpi_parse_state
 1208 {
 1209     UINT8                           *AmlStart;      /* First AML byte */
 1210     UINT8                           *Aml;           /* Next AML byte */
 1211     UINT8                           *AmlEnd;        /* (last + 1) AML byte */
 1212     UINT8                           *PkgStart;      /* Current package begin */
 1213     UINT8                           *PkgEnd;        /* Current package end */
 1214     union acpi_parse_object         *StartOp;       /* Root of parse tree */
 1215     struct acpi_namespace_node      *StartNode;
 1216     union acpi_generic_state        *Scope;         /* Current scope */
 1217     union acpi_parse_object         *StartScope;
 1218     UINT32                          AmlSize;
 1219 
 1220 } ACPI_PARSE_STATE;
 1221 
 1222 
 1223 /* Parse object flags */
 1224 
 1225 #define ACPI_PARSEOP_GENERIC                0x01
 1226 #define ACPI_PARSEOP_NAMED_OBJECT           0x02
 1227 #define ACPI_PARSEOP_DEFERRED               0x04
 1228 #define ACPI_PARSEOP_BYTELIST               0x08
 1229 #define ACPI_PARSEOP_IN_STACK               0x10
 1230 #define ACPI_PARSEOP_TARGET                 0x20
 1231 #define ACPI_PARSEOP_IN_CACHE               0x80
 1232 
 1233 /* Parse object DisasmFlags */
 1234 
 1235 #define ACPI_PARSEOP_IGNORE                 0x0001
 1236 #define ACPI_PARSEOP_PARAMETER_LIST         0x0002
 1237 #define ACPI_PARSEOP_EMPTY_TERMLIST         0x0004
 1238 #define ACPI_PARSEOP_PREDEFINED_CHECKED     0x0008
 1239 #define ACPI_PARSEOP_CLOSING_PAREN          0x0010
 1240 #define ACPI_PARSEOP_COMPOUND_ASSIGNMENT    0x0020
 1241 #define ACPI_PARSEOP_ASSIGNMENT             0x0040
 1242 #define ACPI_PARSEOP_ELSEIF                 0x0080
 1243 #define ACPI_PARSEOP_LEGACY_ASL_ONLY        0x0100
 1244 
 1245 
 1246 /*****************************************************************************
 1247  *
 1248  * Hardware (ACPI registers) and PNP
 1249  *
 1250  ****************************************************************************/
 1251 
 1252 typedef struct acpi_bit_register_info
 1253 {
 1254     UINT8                           ParentRegister;
 1255     UINT8                           BitPosition;
 1256     UINT16                          AccessBitMask;
 1257 
 1258 } ACPI_BIT_REGISTER_INFO;
 1259 
 1260 
 1261 /*
 1262  * Some ACPI registers have bits that must be ignored -- meaning that they
 1263  * must be preserved.
 1264  */
 1265 #define ACPI_PM1_STATUS_PRESERVED_BITS          0x0800  /* Bit 11 */
 1266 
 1267 /* Write-only bits must be zeroed by software */
 1268 
 1269 #define ACPI_PM1_CONTROL_WRITEONLY_BITS         0x2004  /* Bits 13, 2 */
 1270 
 1271 /* For control registers, both ignored and reserved bits must be preserved */
 1272 
 1273 /*
 1274  * For PM1 control, the SCI enable bit (bit 0, SCI_EN) is defined by the
 1275  * ACPI specification to be a "preserved" bit - "OSPM always preserves this
 1276  * bit position", section 4.7.3.2.1. However, on some machines the OS must
 1277  * write a one to this bit after resume for the machine to work properly.
 1278  * To enable this, we no longer attempt to preserve this bit. No machines
 1279  * are known to fail if the bit is not preserved. (May 2009)
 1280  */
 1281 #define ACPI_PM1_CONTROL_IGNORED_BITS           0x0200  /* Bit 9 */
 1282 #define ACPI_PM1_CONTROL_RESERVED_BITS          0xC1F8  /* Bits 14-15, 3-8 */
 1283 #define ACPI_PM1_CONTROL_PRESERVED_BITS \
 1284          (ACPI_PM1_CONTROL_IGNORED_BITS | ACPI_PM1_CONTROL_RESERVED_BITS)
 1285 
 1286 #define ACPI_PM2_CONTROL_PRESERVED_BITS         0xFFFFFFFE /* All except bit 0 */
 1287 
 1288 /*
 1289  * Register IDs
 1290  * These are the full ACPI registers
 1291  */
 1292 #define ACPI_REGISTER_PM1_STATUS                0x01
 1293 #define ACPI_REGISTER_PM1_ENABLE                0x02
 1294 #define ACPI_REGISTER_PM1_CONTROL               0x03
 1295 #define ACPI_REGISTER_PM2_CONTROL               0x04
 1296 #define ACPI_REGISTER_PM_TIMER                  0x05
 1297 #define ACPI_REGISTER_PROCESSOR_BLOCK           0x06
 1298 #define ACPI_REGISTER_SMI_COMMAND_BLOCK         0x07
 1299 
 1300 
 1301 /* Masks used to access the BitRegisters */
 1302 
 1303 #define ACPI_BITMASK_TIMER_STATUS               0x0001
 1304 #define ACPI_BITMASK_BUS_MASTER_STATUS          0x0010
 1305 #define ACPI_BITMASK_GLOBAL_LOCK_STATUS         0x0020
 1306 #define ACPI_BITMASK_POWER_BUTTON_STATUS        0x0100
 1307 #define ACPI_BITMASK_SLEEP_BUTTON_STATUS        0x0200
 1308 #define ACPI_BITMASK_RT_CLOCK_STATUS            0x0400
 1309 #define ACPI_BITMASK_PCIEXP_WAKE_STATUS         0x4000    /* ACPI 3.0 */
 1310 #define ACPI_BITMASK_WAKE_STATUS                0x8000
 1311 
 1312 #define ACPI_BITMASK_ALL_FIXED_STATUS           (\
 1313     ACPI_BITMASK_TIMER_STATUS          | \
 1314     ACPI_BITMASK_BUS_MASTER_STATUS     | \
 1315     ACPI_BITMASK_GLOBAL_LOCK_STATUS    | \
 1316     ACPI_BITMASK_POWER_BUTTON_STATUS   | \
 1317     ACPI_BITMASK_SLEEP_BUTTON_STATUS   | \
 1318     ACPI_BITMASK_RT_CLOCK_STATUS       | \
 1319     ACPI_BITMASK_PCIEXP_WAKE_STATUS    | \
 1320     ACPI_BITMASK_WAKE_STATUS)
 1321 
 1322 #define ACPI_BITMASK_TIMER_ENABLE               0x0001
 1323 #define ACPI_BITMASK_GLOBAL_LOCK_ENABLE         0x0020
 1324 #define ACPI_BITMASK_POWER_BUTTON_ENABLE        0x0100
 1325 #define ACPI_BITMASK_SLEEP_BUTTON_ENABLE        0x0200
 1326 #define ACPI_BITMASK_RT_CLOCK_ENABLE            0x0400
 1327 #define ACPI_BITMASK_PCIEXP_WAKE_DISABLE        0x4000    /* ACPI 3.0 */
 1328 
 1329 #define ACPI_BITMASK_SCI_ENABLE                 0x0001
 1330 #define ACPI_BITMASK_BUS_MASTER_RLD             0x0002
 1331 #define ACPI_BITMASK_GLOBAL_LOCK_RELEASE        0x0004
 1332 #define ACPI_BITMASK_SLEEP_TYPE                 0x1C00
 1333 #define ACPI_BITMASK_SLEEP_ENABLE               0x2000
 1334 
 1335 #define ACPI_BITMASK_ARB_DISABLE                0x0001
 1336 
 1337 
 1338 /* Raw bit position of each BitRegister */
 1339 
 1340 #define ACPI_BITPOSITION_TIMER_STATUS           0x00
 1341 #define ACPI_BITPOSITION_BUS_MASTER_STATUS      0x04
 1342 #define ACPI_BITPOSITION_GLOBAL_LOCK_STATUS     0x05
 1343 #define ACPI_BITPOSITION_POWER_BUTTON_STATUS    0x08
 1344 #define ACPI_BITPOSITION_SLEEP_BUTTON_STATUS    0x09
 1345 #define ACPI_BITPOSITION_RT_CLOCK_STATUS        0x0A
 1346 #define ACPI_BITPOSITION_PCIEXP_WAKE_STATUS     0x0E    /* ACPI 3.0 */
 1347 #define ACPI_BITPOSITION_WAKE_STATUS            0x0F
 1348 
 1349 #define ACPI_BITPOSITION_TIMER_ENABLE           0x00
 1350 #define ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE     0x05
 1351 #define ACPI_BITPOSITION_POWER_BUTTON_ENABLE    0x08
 1352 #define ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE    0x09
 1353 #define ACPI_BITPOSITION_RT_CLOCK_ENABLE        0x0A
 1354 #define ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE    0x0E    /* ACPI 3.0 */
 1355 
 1356 #define ACPI_BITPOSITION_SCI_ENABLE             0x00
 1357 #define ACPI_BITPOSITION_BUS_MASTER_RLD         0x01
 1358 #define ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE    0x02
 1359 #define ACPI_BITPOSITION_SLEEP_TYPE             0x0A
 1360 #define ACPI_BITPOSITION_SLEEP_ENABLE           0x0D
 1361 
 1362 #define ACPI_BITPOSITION_ARB_DISABLE            0x00
 1363 
 1364 
 1365 /* Structs and definitions for _OSI support and I/O port validation */
 1366 
 1367 #define ACPI_ALWAYS_ILLEGAL             0x00
 1368 
 1369 typedef struct acpi_interface_info
 1370 {
 1371     char                        *Name;
 1372     struct acpi_interface_info  *Next;
 1373     UINT8                       Flags;
 1374     UINT8                       Value;
 1375 
 1376 } ACPI_INTERFACE_INFO;
 1377 
 1378 #define ACPI_OSI_INVALID                0x01
 1379 #define ACPI_OSI_DYNAMIC                0x02
 1380 #define ACPI_OSI_FEATURE                0x04
 1381 #define ACPI_OSI_DEFAULT_INVALID        0x08
 1382 #define ACPI_OSI_OPTIONAL_FEATURE       (ACPI_OSI_FEATURE | ACPI_OSI_DEFAULT_INVALID | ACPI_OSI_INVALID)
 1383 
 1384 typedef struct acpi_port_info
 1385 {
 1386     char                    *Name;
 1387     UINT16                  Start;
 1388     UINT16                  End;
 1389     UINT8                   OsiDependency;
 1390 
 1391 } ACPI_PORT_INFO;
 1392 
 1393 
 1394 /*****************************************************************************
 1395  *
 1396  * Resource descriptors
 1397  *
 1398  ****************************************************************************/
 1399 
 1400 /* ResourceType values */
 1401 
 1402 #define ACPI_ADDRESS_TYPE_MEMORY_RANGE          0
 1403 #define ACPI_ADDRESS_TYPE_IO_RANGE              1
 1404 #define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE      2
 1405 
 1406 /* Resource descriptor types and masks */
 1407 
 1408 #define ACPI_RESOURCE_NAME_LARGE                0x80
 1409 #define ACPI_RESOURCE_NAME_SMALL                0x00
 1410 
 1411 #define ACPI_RESOURCE_NAME_SMALL_MASK           0x78 /* Bits 6:3 contain the type */
 1412 #define ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK    0x07 /* Bits 2:0 contain the length */
 1413 #define ACPI_RESOURCE_NAME_LARGE_MASK           0x7F /* Bits 6:0 contain the type */
 1414 
 1415 
 1416 /*
 1417  * Small resource descriptor "names" as defined by the ACPI specification.
 1418  * Note: Bits 2:0 are used for the descriptor length
 1419  */
 1420 #define ACPI_RESOURCE_NAME_IRQ                  0x20
 1421 #define ACPI_RESOURCE_NAME_DMA                  0x28
 1422 #define ACPI_RESOURCE_NAME_START_DEPENDENT      0x30
 1423 #define ACPI_RESOURCE_NAME_END_DEPENDENT        0x38
 1424 #define ACPI_RESOURCE_NAME_IO                   0x40
 1425 #define ACPI_RESOURCE_NAME_FIXED_IO             0x48
 1426 #define ACPI_RESOURCE_NAME_FIXED_DMA            0x50
 1427 #define ACPI_RESOURCE_NAME_RESERVED_S2          0x58
 1428 #define ACPI_RESOURCE_NAME_RESERVED_S3          0x60
 1429 #define ACPI_RESOURCE_NAME_RESERVED_S4          0x68
 1430 #define ACPI_RESOURCE_NAME_VENDOR_SMALL         0x70
 1431 #define ACPI_RESOURCE_NAME_END_TAG              0x78
 1432 
 1433 /*
 1434  * Large resource descriptor "names" as defined by the ACPI specification.
 1435  * Note: includes the Large Descriptor bit in bit[7]
 1436  */
 1437 #define ACPI_RESOURCE_NAME_MEMORY24             0x81
 1438 #define ACPI_RESOURCE_NAME_GENERIC_REGISTER     0x82
 1439 #define ACPI_RESOURCE_NAME_RESERVED_L1          0x83
 1440 #define ACPI_RESOURCE_NAME_VENDOR_LARGE         0x84
 1441 #define ACPI_RESOURCE_NAME_MEMORY32             0x85
 1442 #define ACPI_RESOURCE_NAME_FIXED_MEMORY32       0x86
 1443 #define ACPI_RESOURCE_NAME_ADDRESS32            0x87
 1444 #define ACPI_RESOURCE_NAME_ADDRESS16            0x88
 1445 #define ACPI_RESOURCE_NAME_EXTENDED_IRQ         0x89
 1446 #define ACPI_RESOURCE_NAME_ADDRESS64            0x8A
 1447 #define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64   0x8B
 1448 #define ACPI_RESOURCE_NAME_GPIO                 0x8C
 1449 #define ACPI_RESOURCE_NAME_PIN_FUNCTION         0x8D
 1450 #define ACPI_RESOURCE_NAME_SERIAL_BUS           0x8E
 1451 #define ACPI_RESOURCE_NAME_PIN_CONFIG           0x8F
 1452 #define ACPI_RESOURCE_NAME_PIN_GROUP            0x90
 1453 #define ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION   0x91
 1454 #define ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG     0x92
 1455 #define ACPI_RESOURCE_NAME_LARGE_MAX            0x92
 1456 
 1457 
 1458 /*****************************************************************************
 1459  *
 1460  * Miscellaneous
 1461  *
 1462  ****************************************************************************/
 1463 
 1464 #define ACPI_ASCII_ZERO                 0x30
 1465 
 1466 
 1467 /*****************************************************************************
 1468  *
 1469  * Disassembler
 1470  *
 1471  ****************************************************************************/
 1472 
 1473 typedef struct acpi_external_list
 1474 {
 1475     char                        *Path;
 1476     char                        *InternalPath;
 1477     struct acpi_external_list   *Next;
 1478     UINT32                      Value;
 1479     UINT16                      Length;
 1480     UINT16                      Flags;
 1481     UINT8                       Type;
 1482 
 1483 } ACPI_EXTERNAL_LIST;
 1484 
 1485 /* Values for Flags field above */
 1486 
 1487 #define ACPI_EXT_RESOLVED_REFERENCE         0x01    /* Object was resolved during cross ref */
 1488 #define ACPI_EXT_ORIGIN_FROM_FILE           0x02    /* External came from a file */
 1489 #define ACPI_EXT_INTERNAL_PATH_ALLOCATED    0x04    /* Deallocate internal path on completion */
 1490 #define ACPI_EXT_EXTERNAL_EMITTED           0x08    /* External() statement has been emitted */
 1491 #define ACPI_EXT_ORIGIN_FROM_OPCODE         0x10    /* External came from a External() opcode */
 1492 #define ACPI_EXT_CONFLICTING_DECLARATION    0x20    /* External has a conflicting declaration within AML */
 1493 
 1494 
 1495 typedef struct acpi_external_file
 1496 {
 1497     char                        *Path;
 1498     struct acpi_external_file   *Next;
 1499 
 1500 } ACPI_EXTERNAL_FILE;
 1501 
 1502 
 1503 typedef struct acpi_parse_object_list
 1504 {
 1505     ACPI_PARSE_OBJECT               *Op;
 1506     struct acpi_parse_object_list   *Next;
 1507 
 1508 } ACPI_PARSE_OBJECT_LIST;
 1509 
 1510 /*****************************************************************************
 1511  *
 1512  * Debugger
 1513  *
 1514  ****************************************************************************/
 1515 
 1516 typedef struct acpi_db_method_info
 1517 {
 1518     ACPI_HANDLE                     Method;
 1519     ACPI_HANDLE                     MainThreadGate;
 1520     ACPI_HANDLE                     ThreadCompleteGate;
 1521     ACPI_HANDLE                     InfoGate;
 1522     ACPI_THREAD_ID                  *Threads;
 1523     UINT32                          NumThreads;
 1524     UINT32                          NumCreated;
 1525     UINT32                          NumCompleted;
 1526 
 1527     char                            *Name;
 1528     UINT32                          Flags;
 1529     UINT32                          NumLoops;
 1530     char                            Pathname[ACPI_DB_LINE_BUFFER_SIZE];
 1531     char                            **Args;
 1532     ACPI_OBJECT_TYPE                *Types;
 1533 
 1534     /*
 1535      * Arguments to be passed to method for the commands Threads and
 1536      * Background. Note, ACPI specifies a maximum of 7 arguments (0 - 6).
 1537      *
 1538      * For the Threads command, the Number of threads, ID of current
 1539      * thread and Index of current thread inside all them created.
 1540      */
 1541     char                            InitArgs;
 1542 #ifdef ACPI_DEBUGGER
 1543     ACPI_OBJECT_TYPE                ArgTypes[ACPI_METHOD_NUM_ARGS];
 1544 #endif
 1545     char                            *Arguments[ACPI_METHOD_NUM_ARGS];
 1546     char                            NumThreadsStr[11];
 1547     char                            IdOfThreadStr[11];
 1548     char                            IndexOfThreadStr[11];
 1549 
 1550 } ACPI_DB_METHOD_INFO;
 1551 
 1552 typedef struct acpi_integrity_info
 1553 {
 1554     UINT32                          Nodes;
 1555     UINT32                          Objects;
 1556 
 1557 } ACPI_INTEGRITY_INFO;
 1558 
 1559 
 1560 #define ACPI_DB_DISABLE_OUTPUT          0x00
 1561 #define ACPI_DB_REDIRECTABLE_OUTPUT     0x01
 1562 #define ACPI_DB_CONSOLE_OUTPUT          0x02
 1563 #define ACPI_DB_DUPLICATE_OUTPUT        0x03
 1564 
 1565 
 1566 typedef struct acpi_object_info
 1567 {
 1568     UINT32                  Types[ACPI_TOTAL_TYPES];
 1569 
 1570 } ACPI_OBJECT_INFO;
 1571 
 1572 
 1573 /*****************************************************************************
 1574  *
 1575  * Debug
 1576  *
 1577  ****************************************************************************/
 1578 
 1579 /* Entry for a memory allocation (debug only) */
 1580 
 1581 #define ACPI_MEM_MALLOC                 0
 1582 #define ACPI_MEM_CALLOC                 1
 1583 #define ACPI_MAX_MODULE_NAME            16
 1584 
 1585 #define ACPI_COMMON_DEBUG_MEM_HEADER \
 1586     struct acpi_debug_mem_block     *Previous; \
 1587     struct acpi_debug_mem_block     *Next; \
 1588     UINT32                          Size; \
 1589     UINT32                          Component; \
 1590     UINT32                          Line; \
 1591     char                            Module[ACPI_MAX_MODULE_NAME]; \
 1592     UINT8                           AllocType;
 1593 
 1594 typedef struct acpi_debug_mem_header
 1595 {
 1596     ACPI_COMMON_DEBUG_MEM_HEADER
 1597 
 1598 } ACPI_DEBUG_MEM_HEADER;
 1599 
 1600 typedef struct acpi_debug_mem_block
 1601 {
 1602     ACPI_COMMON_DEBUG_MEM_HEADER
 1603     UINT64                          UserSpace;
 1604 
 1605 } ACPI_DEBUG_MEM_BLOCK;
 1606 
 1607 
 1608 #define ACPI_MEM_LIST_GLOBAL            0
 1609 #define ACPI_MEM_LIST_NSNODE            1
 1610 #define ACPI_MEM_LIST_MAX               1
 1611 #define ACPI_NUM_MEM_LISTS              2
 1612 
 1613 
 1614 /*****************************************************************************
 1615  *
 1616  * Info/help support
 1617  *
 1618  ****************************************************************************/
 1619 
 1620 typedef struct ah_predefined_name
 1621 {
 1622     char            *Name;
 1623     char            *Description;
 1624 #ifndef ACPI_ASL_COMPILER
 1625     char            *Action;
 1626 #endif
 1627 
 1628 } AH_PREDEFINED_NAME;
 1629 
 1630 typedef struct ah_device_id
 1631 {
 1632     char            *Name;
 1633     char            *Description;
 1634 
 1635 } AH_DEVICE_ID;
 1636 
 1637 typedef struct ah_uuid
 1638 {
 1639     char            *Description;
 1640     char            *String;
 1641 
 1642 } AH_UUID;
 1643 
 1644 typedef struct ah_table
 1645 {
 1646     char                    *Signature;
 1647     char                    *Description;
 1648 
 1649 } AH_TABLE;
 1650 
 1651 #endif /* __ACLOCAL_H__ */

Cache object: 087d42a9332959929933ea746695b534


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.