xref: /illumos-gate/usr/src/uts/intel/sys/acpi/actypes.h (revision 30082d0cc16bf5799269ca464a219de900f519cd)
17c478bd9Sstevel@tonic-gate /******************************************************************************
27c478bd9Sstevel@tonic-gate  *
37c478bd9Sstevel@tonic-gate  * Name: actypes.h - Common data types for the entire ACPI subsystem
4*30082d0cSmyers  *       $Revision: 1.301 $
57c478bd9Sstevel@tonic-gate  *
67c478bd9Sstevel@tonic-gate  *****************************************************************************/
77c478bd9Sstevel@tonic-gate 
87c478bd9Sstevel@tonic-gate /******************************************************************************
97c478bd9Sstevel@tonic-gate  *
107c478bd9Sstevel@tonic-gate  * 1. Copyright Notice
117c478bd9Sstevel@tonic-gate  *
12*30082d0cSmyers  * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp.
137c478bd9Sstevel@tonic-gate  * All rights reserved.
147c478bd9Sstevel@tonic-gate  *
157c478bd9Sstevel@tonic-gate  * 2. License
167c478bd9Sstevel@tonic-gate  *
177c478bd9Sstevel@tonic-gate  * 2.1. This is your license from Intel Corp. under its intellectual property
187c478bd9Sstevel@tonic-gate  * rights.  You may have additional license terms from the party that provided
197c478bd9Sstevel@tonic-gate  * you this software, covering your right to use that party's intellectual
207c478bd9Sstevel@tonic-gate  * property rights.
217c478bd9Sstevel@tonic-gate  *
227c478bd9Sstevel@tonic-gate  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
237c478bd9Sstevel@tonic-gate  * copy of the source code appearing in this file ("Covered Code") an
247c478bd9Sstevel@tonic-gate  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
257c478bd9Sstevel@tonic-gate  * base code distributed originally by Intel ("Original Intel Code") to copy,
267c478bd9Sstevel@tonic-gate  * make derivatives, distribute, use and display any portion of the Covered
277c478bd9Sstevel@tonic-gate  * Code in any form, with the right to sublicense such rights; and
287c478bd9Sstevel@tonic-gate  *
297c478bd9Sstevel@tonic-gate  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
307c478bd9Sstevel@tonic-gate  * license (with the right to sublicense), under only those claims of Intel
317c478bd9Sstevel@tonic-gate  * patents that are infringed by the Original Intel Code, to make, use, sell,
327c478bd9Sstevel@tonic-gate  * offer to sell, and import the Covered Code and derivative works thereof
337c478bd9Sstevel@tonic-gate  * solely to the minimum extent necessary to exercise the above copyright
347c478bd9Sstevel@tonic-gate  * license, and in no event shall the patent license extend to any additions
357c478bd9Sstevel@tonic-gate  * to or modifications of the Original Intel Code.  No other license or right
367c478bd9Sstevel@tonic-gate  * is granted directly or by implication, estoppel or otherwise;
377c478bd9Sstevel@tonic-gate  *
387c478bd9Sstevel@tonic-gate  * The above copyright and patent license is granted only if the following
397c478bd9Sstevel@tonic-gate  * conditions are met:
407c478bd9Sstevel@tonic-gate  *
417c478bd9Sstevel@tonic-gate  * 3. Conditions
427c478bd9Sstevel@tonic-gate  *
437c478bd9Sstevel@tonic-gate  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
447c478bd9Sstevel@tonic-gate  * Redistribution of source code of any substantial portion of the Covered
457c478bd9Sstevel@tonic-gate  * Code or modification with rights to further distribute source must include
467c478bd9Sstevel@tonic-gate  * the above Copyright Notice, the above License, this list of Conditions,
477c478bd9Sstevel@tonic-gate  * and the following Disclaimer and Export Compliance provision.  In addition,
487c478bd9Sstevel@tonic-gate  * Licensee must cause all Covered Code to which Licensee contributes to
497c478bd9Sstevel@tonic-gate  * contain a file documenting the changes Licensee made to create that Covered
507c478bd9Sstevel@tonic-gate  * Code and the date of any change.  Licensee must include in that file the
517c478bd9Sstevel@tonic-gate  * documentation of any changes made by any predecessor Licensee.  Licensee
527c478bd9Sstevel@tonic-gate  * must include a prominent statement that the modification is derived,
537c478bd9Sstevel@tonic-gate  * directly or indirectly, from Original Intel Code.
547c478bd9Sstevel@tonic-gate  *
557c478bd9Sstevel@tonic-gate  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
567c478bd9Sstevel@tonic-gate  * Redistribution of source code of any substantial portion of the Covered
577c478bd9Sstevel@tonic-gate  * Code or modification without rights to further distribute source must
587c478bd9Sstevel@tonic-gate  * include the following Disclaimer and Export Compliance provision in the
597c478bd9Sstevel@tonic-gate  * documentation and/or other materials provided with distribution.  In
607c478bd9Sstevel@tonic-gate  * addition, Licensee may not authorize further sublicense of source of any
617c478bd9Sstevel@tonic-gate  * portion of the Covered Code, and must include terms to the effect that the
627c478bd9Sstevel@tonic-gate  * license from Licensee to its licensee is limited to the intellectual
637c478bd9Sstevel@tonic-gate  * property embodied in the software Licensee provides to its licensee, and
647c478bd9Sstevel@tonic-gate  * not to intellectual property embodied in modifications its licensee may
657c478bd9Sstevel@tonic-gate  * make.
667c478bd9Sstevel@tonic-gate  *
677c478bd9Sstevel@tonic-gate  * 3.3. Redistribution of Executable. Redistribution in executable form of any
687c478bd9Sstevel@tonic-gate  * substantial portion of the Covered Code or modification must reproduce the
697c478bd9Sstevel@tonic-gate  * above Copyright Notice, and the following Disclaimer and Export Compliance
707c478bd9Sstevel@tonic-gate  * provision in the documentation and/or other materials provided with the
717c478bd9Sstevel@tonic-gate  * distribution.
727c478bd9Sstevel@tonic-gate  *
737c478bd9Sstevel@tonic-gate  * 3.4. Intel retains all right, title, and interest in and to the Original
747c478bd9Sstevel@tonic-gate  * Intel Code.
757c478bd9Sstevel@tonic-gate  *
767c478bd9Sstevel@tonic-gate  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
777c478bd9Sstevel@tonic-gate  * Intel shall be used in advertising or otherwise to promote the sale, use or
787c478bd9Sstevel@tonic-gate  * other dealings in products derived from or relating to the Covered Code
797c478bd9Sstevel@tonic-gate  * without prior written authorization from Intel.
807c478bd9Sstevel@tonic-gate  *
817c478bd9Sstevel@tonic-gate  * 4. Disclaimer and Export Compliance
827c478bd9Sstevel@tonic-gate  *
837c478bd9Sstevel@tonic-gate  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
847c478bd9Sstevel@tonic-gate  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
857c478bd9Sstevel@tonic-gate  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
867c478bd9Sstevel@tonic-gate  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
877c478bd9Sstevel@tonic-gate  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
887c478bd9Sstevel@tonic-gate  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
897c478bd9Sstevel@tonic-gate  * PARTICULAR PURPOSE.
907c478bd9Sstevel@tonic-gate  *
917c478bd9Sstevel@tonic-gate  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
927c478bd9Sstevel@tonic-gate  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
937c478bd9Sstevel@tonic-gate  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
947c478bd9Sstevel@tonic-gate  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
957c478bd9Sstevel@tonic-gate  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
967c478bd9Sstevel@tonic-gate  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
977c478bd9Sstevel@tonic-gate  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
987c478bd9Sstevel@tonic-gate  * LIMITED REMEDY.
997c478bd9Sstevel@tonic-gate  *
1007c478bd9Sstevel@tonic-gate  * 4.3. Licensee shall not export, either directly or indirectly, any of this
1017c478bd9Sstevel@tonic-gate  * software or system incorporating such software without first obtaining any
1027c478bd9Sstevel@tonic-gate  * required license or other approval from the U. S. Department of Commerce or
1037c478bd9Sstevel@tonic-gate  * any other agency or department of the United States Government.  In the
1047c478bd9Sstevel@tonic-gate  * event Licensee exports any such software from the United States or
1057c478bd9Sstevel@tonic-gate  * re-exports any such software from a foreign destination, Licensee shall
1067c478bd9Sstevel@tonic-gate  * ensure that the distribution and export/re-export of the software is in
1077c478bd9Sstevel@tonic-gate  * compliance with all laws, regulations, orders, or other restrictions of the
1087c478bd9Sstevel@tonic-gate  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
1097c478bd9Sstevel@tonic-gate  * any of its subsidiaries will export/re-export any technical data, process,
1107c478bd9Sstevel@tonic-gate  * software, or service, directly or indirectly, to any country for which the
1117c478bd9Sstevel@tonic-gate  * United States government or any agency thereof requires an export license,
1127c478bd9Sstevel@tonic-gate  * other governmental approval, or letter of assurance, without first obtaining
1137c478bd9Sstevel@tonic-gate  * such license, approval or letter.
1147c478bd9Sstevel@tonic-gate  *
1157c478bd9Sstevel@tonic-gate  *****************************************************************************/
1167c478bd9Sstevel@tonic-gate 
1177c478bd9Sstevel@tonic-gate #ifndef __ACTYPES_H__
1187c478bd9Sstevel@tonic-gate #define __ACTYPES_H__
1197c478bd9Sstevel@tonic-gate 
120*30082d0cSmyers /*
121*30082d0cSmyers  * ACPI_MACHINE_WIDTH must be specified in an OS- or compiler-dependent header
122*30082d0cSmyers  * and must be either 16, 32, or 64
123*30082d0cSmyers  */
124*30082d0cSmyers #ifndef ACPI_MACHINE_WIDTH
125*30082d0cSmyers #error ACPI_MACHINE_WIDTH not defined
126*30082d0cSmyers #endif
1277c478bd9Sstevel@tonic-gate 
1287c478bd9Sstevel@tonic-gate 
129*30082d0cSmyers /*! [Begin] no source code translation */
1307c478bd9Sstevel@tonic-gate 
1317c478bd9Sstevel@tonic-gate /*
1327c478bd9Sstevel@tonic-gate  * Data type ranges
1337c478bd9Sstevel@tonic-gate  * Note: These macros are designed to be compiler independent as well as
1347c478bd9Sstevel@tonic-gate  * working around problems that some 32-bit compilers have with 64-bit
1357c478bd9Sstevel@tonic-gate  * constants.
1367c478bd9Sstevel@tonic-gate  */
1377c478bd9Sstevel@tonic-gate #define ACPI_UINT8_MAX                  (UINT8) (~((UINT8)  0)) /* 0xFF               */
1387c478bd9Sstevel@tonic-gate #define ACPI_UINT16_MAX                 (UINT16)(~((UINT16) 0)) /* 0xFFFF             */
1397c478bd9Sstevel@tonic-gate #define ACPI_UINT32_MAX                 (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF         */
1407c478bd9Sstevel@tonic-gate #define ACPI_UINT64_MAX                 (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */
1417c478bd9Sstevel@tonic-gate #define ACPI_ASCII_MAX                  0x7F
1427c478bd9Sstevel@tonic-gate 
1437c478bd9Sstevel@tonic-gate 
1447c478bd9Sstevel@tonic-gate /*
145*30082d0cSmyers  * Architecture-specific ACPICA Subsystem Data Types
146*30082d0cSmyers  *
147*30082d0cSmyers  * The goal of these types is to provide source code portability across
148*30082d0cSmyers  * 16-bit, 32-bit, and 64-bit targets.
149*30082d0cSmyers  *
150*30082d0cSmyers  * 1) The following types are of fixed size for all targets (16/32/64):
151*30082d0cSmyers  *
152*30082d0cSmyers  * BOOLEAN      Logical boolean
153*30082d0cSmyers  *
154*30082d0cSmyers  * UINT8        8-bit  (1 byte) unsigned value
155*30082d0cSmyers  * UINT16       16-bit (2 byte) unsigned value
156*30082d0cSmyers  * UINT32       32-bit (4 byte) unsigned value
157*30082d0cSmyers  * UINT64       64-bit (8 byte) unsigned value
158*30082d0cSmyers  *
159*30082d0cSmyers  * INT16        16-bit (2 byte) signed value
160*30082d0cSmyers  * INT32        32-bit (4 byte) signed value
161*30082d0cSmyers  * INT64        64-bit (8 byte) signed value
162*30082d0cSmyers  *
163*30082d0cSmyers  * COMPILER_DEPENDENT_UINT64/INT64 - These types are defined in the
164*30082d0cSmyers  * compiler-dependent header(s) and were introduced because there is no common
165*30082d0cSmyers  * 64-bit integer type across the various compilation models, as shown in
166*30082d0cSmyers  * the table below.
167*30082d0cSmyers  *
168*30082d0cSmyers  * Datatype  LP64 ILP64 LLP64 ILP32 LP32 16bit
169*30082d0cSmyers  * char      8    8     8     8     8    8
170*30082d0cSmyers  * short     16   16    16    16    16   16
171*30082d0cSmyers  * _int32         32
172*30082d0cSmyers  * int       32   64    32    32    16   16
173*30082d0cSmyers  * long      64   64    32    32    32   32
174*30082d0cSmyers  * long long            64    64
175*30082d0cSmyers  * pointer   64   64    64    32    32   32
176*30082d0cSmyers  *
177*30082d0cSmyers  * Note: ILP64 and LP32 are currently not supported.
178*30082d0cSmyers  *
179*30082d0cSmyers  *
180*30082d0cSmyers  * 2) These types represent the native word size of the target mode of the
181*30082d0cSmyers  * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are
182*30082d0cSmyers  * usually used for memory allocation, efficient loop counters, and array
183*30082d0cSmyers  * indexes. The types are similar to the size_t type in the C library and are
184*30082d0cSmyers  * required because there is no C type that consistently represents the native
185*30082d0cSmyers  * data width.
186*30082d0cSmyers  *
187*30082d0cSmyers  * ACPI_SIZE        16/32/64-bit unsigned value
188*30082d0cSmyers  * ACPI_NATIVE_UINT 16/32/64-bit unsigned value
189*30082d0cSmyers  * ACPI_NATIVE_INT  16/32/64-bit signed value
190*30082d0cSmyers  *
1917c478bd9Sstevel@tonic-gate  */
1927c478bd9Sstevel@tonic-gate 
193*30082d0cSmyers /*******************************************************************************
194*30082d0cSmyers  *
195*30082d0cSmyers  * Common types for all compilers, all targets
196*30082d0cSmyers  *
197*30082d0cSmyers  ******************************************************************************/
1987c478bd9Sstevel@tonic-gate 
199*30082d0cSmyers typedef unsigned char                   BOOLEAN;
200*30082d0cSmyers typedef unsigned char                   UINT8;
201*30082d0cSmyers typedef unsigned short                  UINT16;
202*30082d0cSmyers typedef COMPILER_DEPENDENT_UINT64       UINT64;
203*30082d0cSmyers typedef COMPILER_DEPENDENT_INT64        INT64;
2047c478bd9Sstevel@tonic-gate 
205*30082d0cSmyers /*! [End] no source code translation !*/
2067c478bd9Sstevel@tonic-gate 
207*30082d0cSmyers 
208*30082d0cSmyers /*******************************************************************************
209*30082d0cSmyers  *
210*30082d0cSmyers  * Types specific to 64-bit targets
211*30082d0cSmyers  *
212*30082d0cSmyers  ******************************************************************************/
2137c478bd9Sstevel@tonic-gate 
2147c478bd9Sstevel@tonic-gate #if ACPI_MACHINE_WIDTH == 64
2157c478bd9Sstevel@tonic-gate 
216*30082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */
2177c478bd9Sstevel@tonic-gate 
2187c478bd9Sstevel@tonic-gate typedef unsigned int                    UINT32;
219*30082d0cSmyers typedef int                             INT32;
2207c478bd9Sstevel@tonic-gate 
2217c478bd9Sstevel@tonic-gate /*! [End] no source code translation !*/
2227c478bd9Sstevel@tonic-gate 
223*30082d0cSmyers 
2247c478bd9Sstevel@tonic-gate typedef UINT64                          ACPI_NATIVE_UINT;
225*30082d0cSmyers typedef INT64                           ACPI_NATIVE_INT;
2267c478bd9Sstevel@tonic-gate 
2277c478bd9Sstevel@tonic-gate typedef UINT64                          ACPI_TABLE_PTR;
2287c478bd9Sstevel@tonic-gate typedef UINT64                          ACPI_IO_ADDRESS;
2297c478bd9Sstevel@tonic-gate typedef UINT64                          ACPI_PHYSICAL_ADDRESS;
2307c478bd9Sstevel@tonic-gate 
2317c478bd9Sstevel@tonic-gate #define ACPI_MAX_PTR                    ACPI_UINT64_MAX
2327c478bd9Sstevel@tonic-gate #define ACPI_SIZE_MAX                   ACPI_UINT64_MAX
2337c478bd9Sstevel@tonic-gate 
234*30082d0cSmyers #define ACPI_USE_NATIVE_DIVIDE          /* Has native 64-bit integer support */
2357c478bd9Sstevel@tonic-gate 
2367c478bd9Sstevel@tonic-gate /*
237*30082d0cSmyers  * In the case of the Itanium Processor Family (IPF), the hardware does not
238*30082d0cSmyers  * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag
239*30082d0cSmyers  * to indicate that special precautions must be taken to avoid alignment faults.
240*30082d0cSmyers  * (IA64 or ia64 is currently used by existing compilers to indicate IPF.)
241*30082d0cSmyers  *
242*30082d0cSmyers  * Note: EM64T and other X86-64 processors support misaligned transfers,
243*30082d0cSmyers  * so there is no need to define this flag.
2447c478bd9Sstevel@tonic-gate  */
245*30082d0cSmyers #if defined (__IA64__) || defined (__ia64__)
246*30082d0cSmyers #define ACPI_MISALIGNMENT_NOT_SUPPORTED
247*30082d0cSmyers #endif
2487c478bd9Sstevel@tonic-gate 
2497c478bd9Sstevel@tonic-gate 
250*30082d0cSmyers /*******************************************************************************
251*30082d0cSmyers  *
252*30082d0cSmyers  * Types specific to 32-bit targets
253*30082d0cSmyers  *
254*30082d0cSmyers  ******************************************************************************/
255*30082d0cSmyers 
256*30082d0cSmyers #elif ACPI_MACHINE_WIDTH == 32
257*30082d0cSmyers 
258*30082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */
259*30082d0cSmyers 
260*30082d0cSmyers typedef unsigned int                    UINT32;
261*30082d0cSmyers typedef int                             INT32;
262*30082d0cSmyers 
263*30082d0cSmyers /*! [End] no source code translation !*/
264*30082d0cSmyers 
265*30082d0cSmyers 
266*30082d0cSmyers typedef UINT32                          ACPI_NATIVE_UINT;
267*30082d0cSmyers typedef INT32                           ACPI_NATIVE_INT;
268*30082d0cSmyers 
269*30082d0cSmyers typedef UINT64                          ACPI_TABLE_PTR;
270*30082d0cSmyers typedef UINT32                          ACPI_IO_ADDRESS;
271*30082d0cSmyers typedef UINT64                          ACPI_PHYSICAL_ADDRESS;
272*30082d0cSmyers 
273*30082d0cSmyers #define ACPI_MAX_PTR                    ACPI_UINT32_MAX
274*30082d0cSmyers #define ACPI_SIZE_MAX                   ACPI_UINT32_MAX
275*30082d0cSmyers 
276*30082d0cSmyers 
277*30082d0cSmyers /*******************************************************************************
278*30082d0cSmyers  *
279*30082d0cSmyers  * Types specific to 16-bit targets
280*30082d0cSmyers  *
281*30082d0cSmyers  ******************************************************************************/
282*30082d0cSmyers 
283*30082d0cSmyers #elif ACPI_MACHINE_WIDTH == 16
284*30082d0cSmyers 
285*30082d0cSmyers /*! [Begin] no source code translation (keep the typedefs as-is) */
286*30082d0cSmyers 
287*30082d0cSmyers typedef unsigned long                   UINT32;
288*30082d0cSmyers typedef short                           INT16;
289*30082d0cSmyers typedef long                            INT32;
2907c478bd9Sstevel@tonic-gate 
2917c478bd9Sstevel@tonic-gate /*! [End] no source code translation !*/
2927c478bd9Sstevel@tonic-gate 
293*30082d0cSmyers 
2947c478bd9Sstevel@tonic-gate typedef UINT16                          ACPI_NATIVE_UINT;
2957c478bd9Sstevel@tonic-gate typedef INT16                           ACPI_NATIVE_INT;
2967c478bd9Sstevel@tonic-gate 
2977c478bd9Sstevel@tonic-gate typedef UINT32                          ACPI_TABLE_PTR;
2987c478bd9Sstevel@tonic-gate typedef UINT32                          ACPI_IO_ADDRESS;
2997c478bd9Sstevel@tonic-gate typedef char                            *ACPI_PHYSICAL_ADDRESS;
3007c478bd9Sstevel@tonic-gate 
3017c478bd9Sstevel@tonic-gate #define ACPI_MAX_PTR                    ACPI_UINT16_MAX
3027c478bd9Sstevel@tonic-gate #define ACPI_SIZE_MAX                   ACPI_UINT16_MAX
3037c478bd9Sstevel@tonic-gate 
304*30082d0cSmyers #define ACPI_USE_NATIVE_DIVIDE          /* No 64-bit integers, ok to use native divide */
305*30082d0cSmyers 
306*30082d0cSmyers /* 64-bit integers cannot be supported */
307*30082d0cSmyers 
3087c478bd9Sstevel@tonic-gate #define ACPI_NO_INTEGER64_SUPPORT
3097c478bd9Sstevel@tonic-gate 
3107c478bd9Sstevel@tonic-gate 
311*30082d0cSmyers #else
3127c478bd9Sstevel@tonic-gate 
313*30082d0cSmyers /* ACPI_MACHINE_WIDTH must be either 64, 32, or 16 */
3147c478bd9Sstevel@tonic-gate 
315*30082d0cSmyers #error unknown ACPI_MACHINE_WIDTH
316*30082d0cSmyers #endif
3177c478bd9Sstevel@tonic-gate 
3187c478bd9Sstevel@tonic-gate 
319*30082d0cSmyers /* Variable-width type, used instead of clib size_t */
3207c478bd9Sstevel@tonic-gate 
321*30082d0cSmyers typedef ACPI_NATIVE_UINT                ACPI_SIZE;
3227c478bd9Sstevel@tonic-gate 
3237c478bd9Sstevel@tonic-gate 
324*30082d0cSmyers /*******************************************************************************
325*30082d0cSmyers  *
326*30082d0cSmyers  * OS- or compiler-dependent types
327*30082d0cSmyers  *
328*30082d0cSmyers  * If the defaults below are not appropriate for the host system, they can
329*30082d0cSmyers  * be defined in the compiler-specific or OS-specific header, and this will
330*30082d0cSmyers  * take precedence.
331*30082d0cSmyers  *
332*30082d0cSmyers  ******************************************************************************/
333*30082d0cSmyers 
334*30082d0cSmyers /* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */
335*30082d0cSmyers 
336*30082d0cSmyers #ifndef ACPI_UINTPTR_T
337*30082d0cSmyers #define ACPI_UINTPTR_T                  void *
3387c478bd9Sstevel@tonic-gate #endif
3397c478bd9Sstevel@tonic-gate 
340*30082d0cSmyers /*
341*30082d0cSmyers  * If ACPI_CACHE_T was not defined in the OS-dependent header,
342*30082d0cSmyers  * define it now. This is typically the case where the local cache
343*30082d0cSmyers  * manager implementation is to be used (ACPI_USE_LOCAL_CACHE)
344*30082d0cSmyers  */
345*30082d0cSmyers #ifndef ACPI_CACHE_T
346*30082d0cSmyers #define ACPI_CACHE_T                    ACPI_MEMORY_LIST
347*30082d0cSmyers #endif
3487c478bd9Sstevel@tonic-gate 
3497c478bd9Sstevel@tonic-gate /*
350*30082d0cSmyers  * Allow the CPU flags word to be defined per-OS to simplify the use of the
351*30082d0cSmyers  * lock and unlock OSL interfaces.
3527c478bd9Sstevel@tonic-gate  */
353*30082d0cSmyers #ifndef ACPI_CPU_FLAGS
354*30082d0cSmyers #define ACPI_CPU_FLAGS                  ACPI_NATIVE_UINT
355*30082d0cSmyers #endif
356*30082d0cSmyers 
357*30082d0cSmyers /*
358*30082d0cSmyers  * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because
359*30082d0cSmyers  * some compilers can catch printf format string problems
360*30082d0cSmyers  */
361*30082d0cSmyers #ifndef ACPI_PRINTF_LIKE
362*30082d0cSmyers #define ACPI_PRINTF_LIKE(c)
363*30082d0cSmyers #endif
364*30082d0cSmyers 
365*30082d0cSmyers /*
366*30082d0cSmyers  * Some compilers complain about unused variables. Sometimes we don't want to
367*30082d0cSmyers  * use all the variables (for example, _AcpiModuleName). This allows us
368*30082d0cSmyers  * to to tell the compiler in a per-variable manner that a variable
369*30082d0cSmyers  * is unused
370*30082d0cSmyers  */
371*30082d0cSmyers #ifndef ACPI_UNUSED_VAR
372*30082d0cSmyers #define ACPI_UNUSED_VAR
373*30082d0cSmyers #endif
374*30082d0cSmyers 
375*30082d0cSmyers 
376*30082d0cSmyers /*******************************************************************************
377*30082d0cSmyers  *
378*30082d0cSmyers  * Independent types
379*30082d0cSmyers  *
380*30082d0cSmyers  ******************************************************************************/
3817c478bd9Sstevel@tonic-gate 
3827c478bd9Sstevel@tonic-gate /*
3837c478bd9Sstevel@tonic-gate  * Pointer overlays to avoid lots of typecasting for
3847c478bd9Sstevel@tonic-gate  * code that accepts both physical and logical pointers.
3857c478bd9Sstevel@tonic-gate  */
3867c478bd9Sstevel@tonic-gate typedef union acpi_pointers
3877c478bd9Sstevel@tonic-gate {
3887c478bd9Sstevel@tonic-gate     ACPI_PHYSICAL_ADDRESS       Physical;
3897c478bd9Sstevel@tonic-gate     void                        *Logical;
3907c478bd9Sstevel@tonic-gate     ACPI_TABLE_PTR              Value;
3917c478bd9Sstevel@tonic-gate 
3927c478bd9Sstevel@tonic-gate } ACPI_POINTERS;
3937c478bd9Sstevel@tonic-gate 
3947c478bd9Sstevel@tonic-gate typedef struct acpi_pointer
3957c478bd9Sstevel@tonic-gate {
3967c478bd9Sstevel@tonic-gate     UINT32                      PointerType;
3977c478bd9Sstevel@tonic-gate     union acpi_pointers         Pointer;
3987c478bd9Sstevel@tonic-gate 
3997c478bd9Sstevel@tonic-gate } ACPI_POINTER;
4007c478bd9Sstevel@tonic-gate 
4017c478bd9Sstevel@tonic-gate /* PointerTypes for above */
4027c478bd9Sstevel@tonic-gate 
4037c478bd9Sstevel@tonic-gate #define ACPI_PHYSICAL_POINTER           0x01
4047c478bd9Sstevel@tonic-gate #define ACPI_LOGICAL_POINTER            0x02
4057c478bd9Sstevel@tonic-gate 
4067c478bd9Sstevel@tonic-gate /* Processor mode */
4077c478bd9Sstevel@tonic-gate 
4087c478bd9Sstevel@tonic-gate #define ACPI_PHYSICAL_ADDRESSING        0x04
4097c478bd9Sstevel@tonic-gate #define ACPI_LOGICAL_ADDRESSING         0x08
4107c478bd9Sstevel@tonic-gate #define ACPI_MEMORY_MODE                0x0C
4117c478bd9Sstevel@tonic-gate 
4127c478bd9Sstevel@tonic-gate #define ACPI_PHYSMODE_PHYSPTR           ACPI_PHYSICAL_ADDRESSING | ACPI_PHYSICAL_POINTER
4137c478bd9Sstevel@tonic-gate #define ACPI_LOGMODE_PHYSPTR            ACPI_LOGICAL_ADDRESSING  | ACPI_PHYSICAL_POINTER
4147c478bd9Sstevel@tonic-gate #define ACPI_LOGMODE_LOGPTR             ACPI_LOGICAL_ADDRESSING  | ACPI_LOGICAL_POINTER
4157c478bd9Sstevel@tonic-gate 
4167c478bd9Sstevel@tonic-gate 
417*30082d0cSmyers /* Logical defines and NULL */
418*30082d0cSmyers 
4197c478bd9Sstevel@tonic-gate #ifdef FALSE
4207c478bd9Sstevel@tonic-gate #undef FALSE
4217c478bd9Sstevel@tonic-gate #endif
4227c478bd9Sstevel@tonic-gate #define FALSE                           (1 == 0)
4237c478bd9Sstevel@tonic-gate 
4247c478bd9Sstevel@tonic-gate #ifdef TRUE
4257c478bd9Sstevel@tonic-gate #undef TRUE
4267c478bd9Sstevel@tonic-gate #endif
4277c478bd9Sstevel@tonic-gate #define TRUE                            (1 == 1)
4287c478bd9Sstevel@tonic-gate 
4297c478bd9Sstevel@tonic-gate #ifndef NULL
4307c478bd9Sstevel@tonic-gate #define NULL                            (void *) 0
4317c478bd9Sstevel@tonic-gate #endif
4327c478bd9Sstevel@tonic-gate 
4337c478bd9Sstevel@tonic-gate 
4347c478bd9Sstevel@tonic-gate /*
435*30082d0cSmyers  * Mescellaneous types
4367c478bd9Sstevel@tonic-gate  */
4377c478bd9Sstevel@tonic-gate typedef UINT32                          ACPI_STATUS;    /* All ACPI Exceptions */
4387c478bd9Sstevel@tonic-gate typedef UINT32                          ACPI_NAME;      /* 4-byte ACPI name */
4397c478bd9Sstevel@tonic-gate typedef char *                          ACPI_STRING;    /* Null terminated ASCII string */
440*30082d0cSmyers typedef void *                          ACPI_HANDLE;    /* Actually a ptr to a NS Node */
4417c478bd9Sstevel@tonic-gate 
4427c478bd9Sstevel@tonic-gate typedef struct uint64_struct
4437c478bd9Sstevel@tonic-gate {
4447c478bd9Sstevel@tonic-gate     UINT32                      Lo;
4457c478bd9Sstevel@tonic-gate     UINT32                      Hi;
4467c478bd9Sstevel@tonic-gate 
4477c478bd9Sstevel@tonic-gate } UINT64_STRUCT;
4487c478bd9Sstevel@tonic-gate 
4497c478bd9Sstevel@tonic-gate typedef union uint64_overlay
4507c478bd9Sstevel@tonic-gate {
4517c478bd9Sstevel@tonic-gate     UINT64                      Full;
4527c478bd9Sstevel@tonic-gate     UINT64_STRUCT               Part;
4537c478bd9Sstevel@tonic-gate 
4547c478bd9Sstevel@tonic-gate } UINT64_OVERLAY;
4557c478bd9Sstevel@tonic-gate 
4567c478bd9Sstevel@tonic-gate typedef struct uint32_struct
4577c478bd9Sstevel@tonic-gate {
4587c478bd9Sstevel@tonic-gate     UINT32                      Lo;
4597c478bd9Sstevel@tonic-gate     UINT32                      Hi;
4607c478bd9Sstevel@tonic-gate 
4617c478bd9Sstevel@tonic-gate } UINT32_STRUCT;
4627c478bd9Sstevel@tonic-gate 
4637c478bd9Sstevel@tonic-gate 
4647c478bd9Sstevel@tonic-gate /*
4657c478bd9Sstevel@tonic-gate  * Acpi integer width. In ACPI version 1, integers are
4667c478bd9Sstevel@tonic-gate  * 32 bits.  In ACPI version 2, integers are 64 bits.
4677c478bd9Sstevel@tonic-gate  * Note that this pertains to the ACPI integer type only, not
4687c478bd9Sstevel@tonic-gate  * other integers used in the implementation of the ACPI CA
4697c478bd9Sstevel@tonic-gate  * subsystem.
4707c478bd9Sstevel@tonic-gate  */
4717c478bd9Sstevel@tonic-gate #ifdef ACPI_NO_INTEGER64_SUPPORT
4727c478bd9Sstevel@tonic-gate 
4737c478bd9Sstevel@tonic-gate /* 32-bit integers only, no 64-bit support */
4747c478bd9Sstevel@tonic-gate 
4757c478bd9Sstevel@tonic-gate typedef UINT32                          ACPI_INTEGER;
4767c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_MAX                ACPI_UINT32_MAX
4777c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_BIT_SIZE           32
4787c478bd9Sstevel@tonic-gate #define ACPI_MAX_DECIMAL_DIGITS         10  /* 2^32 = 4,294,967,296 */
4797c478bd9Sstevel@tonic-gate 
4807c478bd9Sstevel@tonic-gate #define ACPI_USE_NATIVE_DIVIDE          /* Use compiler native 32-bit divide */
4817c478bd9Sstevel@tonic-gate 
4827c478bd9Sstevel@tonic-gate 
4837c478bd9Sstevel@tonic-gate #else
4847c478bd9Sstevel@tonic-gate 
4857c478bd9Sstevel@tonic-gate /* 64-bit integers */
4867c478bd9Sstevel@tonic-gate 
4877c478bd9Sstevel@tonic-gate typedef UINT64                          ACPI_INTEGER;
4887c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_MAX                ACPI_UINT64_MAX
4897c478bd9Sstevel@tonic-gate #define ACPI_INTEGER_BIT_SIZE           64
4907c478bd9Sstevel@tonic-gate #define ACPI_MAX_DECIMAL_DIGITS         20  /* 2^64 = 18,446,744,073,709,551,616 */
4917c478bd9Sstevel@tonic-gate 
4927c478bd9Sstevel@tonic-gate 
4937c478bd9Sstevel@tonic-gate #if ACPI_MACHINE_WIDTH == 64
4947c478bd9Sstevel@tonic-gate #define ACPI_USE_NATIVE_DIVIDE          /* Use compiler native 64-bit divide */
4957c478bd9Sstevel@tonic-gate #endif
4967c478bd9Sstevel@tonic-gate #endif
4977c478bd9Sstevel@tonic-gate 
4987c478bd9Sstevel@tonic-gate #define ACPI_MAX64_DECIMAL_DIGITS       20
4997c478bd9Sstevel@tonic-gate #define ACPI_MAX32_DECIMAL_DIGITS       10
5007c478bd9Sstevel@tonic-gate #define ACPI_MAX16_DECIMAL_DIGITS        5
5017c478bd9Sstevel@tonic-gate #define ACPI_MAX8_DECIMAL_DIGITS         3
5027c478bd9Sstevel@tonic-gate 
5037c478bd9Sstevel@tonic-gate /*
5047c478bd9Sstevel@tonic-gate  * Constants with special meanings
5057c478bd9Sstevel@tonic-gate  */
506*30082d0cSmyers #define ACPI_ROOT_OBJECT                ACPI_ADD_PTR (ACPI_HANDLE, NULL, ACPI_MAX_PTR)
5077c478bd9Sstevel@tonic-gate 
5087c478bd9Sstevel@tonic-gate 
5097c478bd9Sstevel@tonic-gate /*
5107c478bd9Sstevel@tonic-gate  * Initialization sequence
5117c478bd9Sstevel@tonic-gate  */
5127c478bd9Sstevel@tonic-gate #define ACPI_FULL_INITIALIZATION        0x00
5137c478bd9Sstevel@tonic-gate #define ACPI_NO_ADDRESS_SPACE_INIT      0x01
5147c478bd9Sstevel@tonic-gate #define ACPI_NO_HARDWARE_INIT           0x02
5157c478bd9Sstevel@tonic-gate #define ACPI_NO_EVENT_INIT              0x04
5167c478bd9Sstevel@tonic-gate #define ACPI_NO_HANDLER_INIT            0x08
5177c478bd9Sstevel@tonic-gate #define ACPI_NO_ACPI_ENABLE             0x10
5187c478bd9Sstevel@tonic-gate #define ACPI_NO_DEVICE_INIT             0x20
5197c478bd9Sstevel@tonic-gate #define ACPI_NO_OBJECT_INIT             0x40
5207c478bd9Sstevel@tonic-gate 
5217c478bd9Sstevel@tonic-gate /*
5227c478bd9Sstevel@tonic-gate  * Initialization state
5237c478bd9Sstevel@tonic-gate  */
5247c478bd9Sstevel@tonic-gate #define ACPI_INITIALIZED_OK             0x01
5257c478bd9Sstevel@tonic-gate 
5267c478bd9Sstevel@tonic-gate /*
5277c478bd9Sstevel@tonic-gate  * Power state values
5287c478bd9Sstevel@tonic-gate  */
5297c478bd9Sstevel@tonic-gate #define ACPI_STATE_UNKNOWN              (UINT8) 0xFF
5307c478bd9Sstevel@tonic-gate 
5317c478bd9Sstevel@tonic-gate #define ACPI_STATE_S0                   (UINT8) 0
5327c478bd9Sstevel@tonic-gate #define ACPI_STATE_S1                   (UINT8) 1
5337c478bd9Sstevel@tonic-gate #define ACPI_STATE_S2                   (UINT8) 2
5347c478bd9Sstevel@tonic-gate #define ACPI_STATE_S3                   (UINT8) 3
5357c478bd9Sstevel@tonic-gate #define ACPI_STATE_S4                   (UINT8) 4
5367c478bd9Sstevel@tonic-gate #define ACPI_STATE_S5                   (UINT8) 5
5377c478bd9Sstevel@tonic-gate #define ACPI_S_STATES_MAX               ACPI_STATE_S5
5387c478bd9Sstevel@tonic-gate #define ACPI_S_STATE_COUNT              6
5397c478bd9Sstevel@tonic-gate 
5407c478bd9Sstevel@tonic-gate #define ACPI_STATE_D0                   (UINT8) 0
5417c478bd9Sstevel@tonic-gate #define ACPI_STATE_D1                   (UINT8) 1
5427c478bd9Sstevel@tonic-gate #define ACPI_STATE_D2                   (UINT8) 2
5437c478bd9Sstevel@tonic-gate #define ACPI_STATE_D3                   (UINT8) 3
5447c478bd9Sstevel@tonic-gate #define ACPI_D_STATES_MAX               ACPI_STATE_D3
5457c478bd9Sstevel@tonic-gate #define ACPI_D_STATE_COUNT              4
5467c478bd9Sstevel@tonic-gate 
5477c478bd9Sstevel@tonic-gate #define ACPI_STATE_C0                   (UINT8) 0
5487c478bd9Sstevel@tonic-gate #define ACPI_STATE_C1                   (UINT8) 1
5497c478bd9Sstevel@tonic-gate #define ACPI_STATE_C2                   (UINT8) 2
5507c478bd9Sstevel@tonic-gate #define ACPI_STATE_C3                   (UINT8) 3
5517c478bd9Sstevel@tonic-gate #define ACPI_C_STATES_MAX               ACPI_STATE_C3
5527c478bd9Sstevel@tonic-gate #define ACPI_C_STATE_COUNT              4
5537c478bd9Sstevel@tonic-gate 
5547c478bd9Sstevel@tonic-gate /*
5557c478bd9Sstevel@tonic-gate  * Sleep type invalid value
5567c478bd9Sstevel@tonic-gate  */
5577c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_MAX             0x7
5587c478bd9Sstevel@tonic-gate #define ACPI_SLEEP_TYPE_INVALID         0xFF
5597c478bd9Sstevel@tonic-gate 
5607c478bd9Sstevel@tonic-gate /*
5617c478bd9Sstevel@tonic-gate  * Standard notify values
5627c478bd9Sstevel@tonic-gate  */
5637c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_BUS_CHECK           (UINT8) 0
5647c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_DEVICE_CHECK        (UINT8) 1
5657c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_DEVICE_WAKE         (UINT8) 2
5667c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_EJECT_REQUEST       (UINT8) 3
5677c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_DEVICE_CHECK_LIGHT  (UINT8) 4
5687c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_FREQUENCY_MISMATCH  (UINT8) 5
5697c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_BUS_MODE_MISMATCH   (UINT8) 6
5707c478bd9Sstevel@tonic-gate #define ACPI_NOTIFY_POWER_FAULT         (UINT8) 7
5717c478bd9Sstevel@tonic-gate 
5727c478bd9Sstevel@tonic-gate /*
5737c478bd9Sstevel@tonic-gate  *  Table types.  These values are passed to the table related APIs
5747c478bd9Sstevel@tonic-gate  */
5757c478bd9Sstevel@tonic-gate typedef UINT32                          ACPI_TABLE_TYPE;
5767c478bd9Sstevel@tonic-gate 
5777c478bd9Sstevel@tonic-gate #define ACPI_TABLE_RSDP                 (ACPI_TABLE_TYPE) 0
5787c478bd9Sstevel@tonic-gate #define ACPI_TABLE_DSDT                 (ACPI_TABLE_TYPE) 1
5797c478bd9Sstevel@tonic-gate #define ACPI_TABLE_FADT                 (ACPI_TABLE_TYPE) 2
5807c478bd9Sstevel@tonic-gate #define ACPI_TABLE_FACS                 (ACPI_TABLE_TYPE) 3
5817c478bd9Sstevel@tonic-gate #define ACPI_TABLE_PSDT                 (ACPI_TABLE_TYPE) 4
5827c478bd9Sstevel@tonic-gate #define ACPI_TABLE_SSDT                 (ACPI_TABLE_TYPE) 5
5837c478bd9Sstevel@tonic-gate #define ACPI_TABLE_XSDT                 (ACPI_TABLE_TYPE) 6
5847c478bd9Sstevel@tonic-gate #define ACPI_TABLE_MAX                  6
5857c478bd9Sstevel@tonic-gate #define NUM_ACPI_TABLE_TYPES            (ACPI_TABLE_MAX+1)
5867c478bd9Sstevel@tonic-gate 
5877c478bd9Sstevel@tonic-gate /*
5887c478bd9Sstevel@tonic-gate  * Types associated with ACPI names and objects.  The first group of
5897c478bd9Sstevel@tonic-gate  * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition
5907c478bd9Sstevel@tonic-gate  * of the ACPI ObjectType() operator (See the ACPI Spec).  Therefore,
5917c478bd9Sstevel@tonic-gate  * only add to the first group if the spec changes.
5927c478bd9Sstevel@tonic-gate  *
5937c478bd9Sstevel@tonic-gate  * NOTE: Types must be kept in sync with the global AcpiNsProperties
5947c478bd9Sstevel@tonic-gate  * and AcpiNsTypeNames arrays.
5957c478bd9Sstevel@tonic-gate  */
5967c478bd9Sstevel@tonic-gate typedef UINT32                          ACPI_OBJECT_TYPE;
5977c478bd9Sstevel@tonic-gate 
5987c478bd9Sstevel@tonic-gate #define ACPI_TYPE_ANY                   0x00
5997c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INTEGER               0x01  /* Byte/Word/Dword/Zero/One/Ones */
6007c478bd9Sstevel@tonic-gate #define ACPI_TYPE_STRING                0x02
6017c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER                0x03
6027c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PACKAGE               0x04  /* ByteConst, multiple DataTerm/Constant/SuperName */
6037c478bd9Sstevel@tonic-gate #define ACPI_TYPE_FIELD_UNIT            0x05
6047c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEVICE                0x06  /* Name, multiple Node */
6057c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EVENT                 0x07
6067c478bd9Sstevel@tonic-gate #define ACPI_TYPE_METHOD                0x08  /* Name, ByteConst, multiple Code */
6077c478bd9Sstevel@tonic-gate #define ACPI_TYPE_MUTEX                 0x09
6087c478bd9Sstevel@tonic-gate #define ACPI_TYPE_REGION                0x0A
6097c478bd9Sstevel@tonic-gate #define ACPI_TYPE_POWER                 0x0B  /* Name,ByteConst,WordConst,multi Node */
6107c478bd9Sstevel@tonic-gate #define ACPI_TYPE_PROCESSOR             0x0C  /* Name,ByteConst,DWordConst,ByteConst,multi NmO */
6117c478bd9Sstevel@tonic-gate #define ACPI_TYPE_THERMAL               0x0D  /* Name, multiple Node */
6127c478bd9Sstevel@tonic-gate #define ACPI_TYPE_BUFFER_FIELD          0x0E
6137c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DDB_HANDLE            0x0F
6147c478bd9Sstevel@tonic-gate #define ACPI_TYPE_DEBUG_OBJECT          0x10
6157c478bd9Sstevel@tonic-gate 
6167c478bd9Sstevel@tonic-gate #define ACPI_TYPE_EXTERNAL_MAX          0x10
6177c478bd9Sstevel@tonic-gate 
6187c478bd9Sstevel@tonic-gate /*
6197c478bd9Sstevel@tonic-gate  * These are object types that do not map directly to the ACPI
6207c478bd9Sstevel@tonic-gate  * ObjectType() operator. They are used for various internal purposes only.
6217c478bd9Sstevel@tonic-gate  * If new predefined ACPI_TYPEs are added (via the ACPI specification), these
6227c478bd9Sstevel@tonic-gate  * internal types must move upwards. (There is code that depends on these
6237c478bd9Sstevel@tonic-gate  * values being contiguous with the external types above.)
6247c478bd9Sstevel@tonic-gate  */
6257c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REGION_FIELD    0x11
6267c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_BANK_FIELD      0x12
6277c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_INDEX_FIELD     0x13
6287c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_REFERENCE       0x14  /* Arg#, Local#, Name, Debug, RefOf, Index */
6297c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ALIAS           0x15
6307c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_METHOD_ALIAS    0x16
6317c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_NOTIFY          0x17
6327c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18
6337c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE        0x19
6347c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_RESOURCE_FIELD  0x1A
6357c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_SCOPE           0x1B  /* 1 Name, multiple ObjectList Nodes */
6367c478bd9Sstevel@tonic-gate 
6377c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NS_NODE_MAX           0x1B  /* Last typecode used within a NS Node */
6387c478bd9Sstevel@tonic-gate 
6397c478bd9Sstevel@tonic-gate /*
6407c478bd9Sstevel@tonic-gate  * These are special object types that never appear in
6417c478bd9Sstevel@tonic-gate  * a Namespace node, only in an ACPI_OPERAND_OBJECT
6427c478bd9Sstevel@tonic-gate  */
6437c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_EXTRA           0x1C
6447c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_DATA            0x1D
6457c478bd9Sstevel@tonic-gate 
6467c478bd9Sstevel@tonic-gate #define ACPI_TYPE_LOCAL_MAX             0x1D
6477c478bd9Sstevel@tonic-gate 
6487c478bd9Sstevel@tonic-gate /* All types above here are invalid */
6497c478bd9Sstevel@tonic-gate 
6507c478bd9Sstevel@tonic-gate #define ACPI_TYPE_INVALID               0x1E
6517c478bd9Sstevel@tonic-gate #define ACPI_TYPE_NOT_FOUND             0xFF
6527c478bd9Sstevel@tonic-gate 
6537c478bd9Sstevel@tonic-gate /*
6547c478bd9Sstevel@tonic-gate  * All I/O
6557c478bd9Sstevel@tonic-gate  */
6567c478bd9Sstevel@tonic-gate #define ACPI_READ                       0
6577c478bd9Sstevel@tonic-gate #define ACPI_WRITE                      1
6587c478bd9Sstevel@tonic-gate #define ACPI_IO_MASK                    1
6597c478bd9Sstevel@tonic-gate 
6607c478bd9Sstevel@tonic-gate /*
6617c478bd9Sstevel@tonic-gate  * Event Types: Fixed & General Purpose
6627c478bd9Sstevel@tonic-gate  */
6637c478bd9Sstevel@tonic-gate typedef UINT32                          ACPI_EVENT_TYPE;
6647c478bd9Sstevel@tonic-gate 
6657c478bd9Sstevel@tonic-gate /*
6667c478bd9Sstevel@tonic-gate  * Fixed events
6677c478bd9Sstevel@tonic-gate  */
6687c478bd9Sstevel@tonic-gate #define ACPI_EVENT_PMTIMER              0
6697c478bd9Sstevel@tonic-gate #define ACPI_EVENT_GLOBAL               1
6707c478bd9Sstevel@tonic-gate #define ACPI_EVENT_POWER_BUTTON         2
6717c478bd9Sstevel@tonic-gate #define ACPI_EVENT_SLEEP_BUTTON         3
6727c478bd9Sstevel@tonic-gate #define ACPI_EVENT_RTC                  4
6737c478bd9Sstevel@tonic-gate #define ACPI_EVENT_MAX                  4
6747c478bd9Sstevel@tonic-gate #define ACPI_NUM_FIXED_EVENTS           ACPI_EVENT_MAX + 1
6757c478bd9Sstevel@tonic-gate 
6767c478bd9Sstevel@tonic-gate /*
6777c478bd9Sstevel@tonic-gate  * Event Status - Per event
6787c478bd9Sstevel@tonic-gate  * -------------
6797c478bd9Sstevel@tonic-gate  * The encoding of ACPI_EVENT_STATUS is illustrated below.
6807c478bd9Sstevel@tonic-gate  * Note that a set bit (1) indicates the property is TRUE
6817c478bd9Sstevel@tonic-gate  * (e.g. if bit 0 is set then the event is enabled).
6827c478bd9Sstevel@tonic-gate  * +-------------+-+-+-+
6837c478bd9Sstevel@tonic-gate  * |   Bits 31:3 |2|1|0|
6847c478bd9Sstevel@tonic-gate  * +-------------+-+-+-+
6857c478bd9Sstevel@tonic-gate  *          |     | | |
6867c478bd9Sstevel@tonic-gate  *          |     | | +- Enabled?
6877c478bd9Sstevel@tonic-gate  *          |     | +--- Enabled for wake?
6887c478bd9Sstevel@tonic-gate  *          |     +----- Set?
6897c478bd9Sstevel@tonic-gate  *          +----------- <Reserved>
6907c478bd9Sstevel@tonic-gate  */
6917c478bd9Sstevel@tonic-gate typedef UINT32                          ACPI_EVENT_STATUS;
6927c478bd9Sstevel@tonic-gate 
6937c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_DISABLED        (ACPI_EVENT_STATUS) 0x00
6947c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_ENABLED         (ACPI_EVENT_STATUS) 0x01
6957c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_WAKE_ENABLED    (ACPI_EVENT_STATUS) 0x02
6967c478bd9Sstevel@tonic-gate #define ACPI_EVENT_FLAG_SET             (ACPI_EVENT_STATUS) 0x04
6977c478bd9Sstevel@tonic-gate 
6987c478bd9Sstevel@tonic-gate /*
6997c478bd9Sstevel@tonic-gate  * General Purpose Events (GPE)
7007c478bd9Sstevel@tonic-gate  */
7017c478bd9Sstevel@tonic-gate #define ACPI_GPE_INVALID                0xFF
7027c478bd9Sstevel@tonic-gate #define ACPI_GPE_MAX                    0xFF
7037c478bd9Sstevel@tonic-gate #define ACPI_NUM_GPE                    256
7047c478bd9Sstevel@tonic-gate 
7057c478bd9Sstevel@tonic-gate #define ACPI_GPE_ENABLE                 0
7067c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISABLE                1
7077c478bd9Sstevel@tonic-gate 
7087c478bd9Sstevel@tonic-gate 
7097c478bd9Sstevel@tonic-gate /*
7107c478bd9Sstevel@tonic-gate  * GPE info flags - Per GPE
7117c478bd9Sstevel@tonic-gate  * +-+-+-+---+---+-+
7127c478bd9Sstevel@tonic-gate  * |7|6|5|4:3|2:1|0|
7137c478bd9Sstevel@tonic-gate  * +-+-+-+---+---+-+
7147c478bd9Sstevel@tonic-gate  *  | | |  |   |  |
7157c478bd9Sstevel@tonic-gate  *  | | |  |   |  +--- Interrupt type: Edge or Level Triggered
7167c478bd9Sstevel@tonic-gate  *  | | |  |   +--- Type: Wake-only, Runtime-only, or wake/runtime
7177c478bd9Sstevel@tonic-gate  *  | | |  +--- Type of dispatch -- to method, handler, or none
7187c478bd9Sstevel@tonic-gate  *  | | +--- Enabled for runtime?
7197c478bd9Sstevel@tonic-gate  *  | +--- Enabled for wake?
7207c478bd9Sstevel@tonic-gate  *  +--- System state when GPE ocurred (running/waking)
7217c478bd9Sstevel@tonic-gate  */
7227c478bd9Sstevel@tonic-gate #define ACPI_GPE_XRUPT_TYPE_MASK        (UINT8) 0x01
7237c478bd9Sstevel@tonic-gate #define ACPI_GPE_LEVEL_TRIGGERED        (UINT8) 0x01
7247c478bd9Sstevel@tonic-gate #define ACPI_GPE_EDGE_TRIGGERED         (UINT8) 0x00
7257c478bd9Sstevel@tonic-gate 
7267c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_MASK              (UINT8) 0x06
7277c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_WAKE_RUN          (UINT8) 0x06
7287c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_WAKE              (UINT8) 0x02
7297c478bd9Sstevel@tonic-gate #define ACPI_GPE_TYPE_RUNTIME           (UINT8) 0x04    /* Default */
7307c478bd9Sstevel@tonic-gate 
7317c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_MASK          (UINT8) 0x18
7327c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_HANDLER       (UINT8) 0x08
7337c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_METHOD        (UINT8) 0x10
7347c478bd9Sstevel@tonic-gate #define ACPI_GPE_DISPATCH_NOT_USED      (UINT8) 0x00    /* Default */
7357c478bd9Sstevel@tonic-gate 
7367c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_ENABLE_MASK        (UINT8) 0x20
7377c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_ENABLED            (UINT8) 0x20
7387c478bd9Sstevel@tonic-gate #define ACPI_GPE_RUN_DISABLED           (UINT8) 0x00    /* Default */
7397c478bd9Sstevel@tonic-gate 
7407c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_ENABLE_MASK       (UINT8) 0x40
7417c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_ENABLED           (UINT8) 0x40
7427c478bd9Sstevel@tonic-gate #define ACPI_GPE_WAKE_DISABLED          (UINT8) 0x00    /* Default */
7437c478bd9Sstevel@tonic-gate 
7447c478bd9Sstevel@tonic-gate #define ACPI_GPE_ENABLE_MASK            (UINT8) 0x60    /* Both run/wake */
7457c478bd9Sstevel@tonic-gate 
7467c478bd9Sstevel@tonic-gate #define ACPI_GPE_SYSTEM_MASK            (UINT8) 0x80
7477c478bd9Sstevel@tonic-gate #define ACPI_GPE_SYSTEM_RUNNING         (UINT8) 0x80
7487c478bd9Sstevel@tonic-gate #define ACPI_GPE_SYSTEM_WAKING          (UINT8) 0x00
7497c478bd9Sstevel@tonic-gate 
7507c478bd9Sstevel@tonic-gate /*
7517c478bd9Sstevel@tonic-gate  * Flags for GPE and Lock interfaces
7527c478bd9Sstevel@tonic-gate  */
7537c478bd9Sstevel@tonic-gate #define ACPI_EVENT_WAKE_ENABLE          0x2             /* AcpiGpeEnable */
7547c478bd9Sstevel@tonic-gate #define ACPI_EVENT_WAKE_DISABLE         0x2             /* AcpiGpeDisable */
7557c478bd9Sstevel@tonic-gate 
7567c478bd9Sstevel@tonic-gate #define ACPI_NOT_ISR                    0x1
7577c478bd9Sstevel@tonic-gate #define ACPI_ISR                        0x0
7587c478bd9Sstevel@tonic-gate 
7597c478bd9Sstevel@tonic-gate 
7607c478bd9Sstevel@tonic-gate /* Notify types */
7617c478bd9Sstevel@tonic-gate 
7627c478bd9Sstevel@tonic-gate #define ACPI_SYSTEM_NOTIFY              0x1
7637c478bd9Sstevel@tonic-gate #define ACPI_DEVICE_NOTIFY              0x2
7647c478bd9Sstevel@tonic-gate #define ACPI_ALL_NOTIFY                 0x3
7657c478bd9Sstevel@tonic-gate #define ACPI_MAX_NOTIFY_HANDLER_TYPE    0x3
7667c478bd9Sstevel@tonic-gate 
7677c478bd9Sstevel@tonic-gate #define ACPI_MAX_SYS_NOTIFY             0x7f
7687c478bd9Sstevel@tonic-gate 
7697c478bd9Sstevel@tonic-gate 
7707c478bd9Sstevel@tonic-gate /* Address Space (Operation Region) Types */
7717c478bd9Sstevel@tonic-gate 
7727c478bd9Sstevel@tonic-gate typedef UINT8                           ACPI_ADR_SPACE_TYPE;
7737c478bd9Sstevel@tonic-gate 
7747c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_MEMORY    (ACPI_ADR_SPACE_TYPE) 0
7757c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SYSTEM_IO        (ACPI_ADR_SPACE_TYPE) 1
7767c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_CONFIG       (ACPI_ADR_SPACE_TYPE) 2
7777c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_EC               (ACPI_ADR_SPACE_TYPE) 3
7787c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_SMBUS            (ACPI_ADR_SPACE_TYPE) 4
7797c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_CMOS             (ACPI_ADR_SPACE_TYPE) 5
7807c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_PCI_BAR_TARGET   (ACPI_ADR_SPACE_TYPE) 6
7817c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_DATA_TABLE       (ACPI_ADR_SPACE_TYPE) 7
7827c478bd9Sstevel@tonic-gate #define ACPI_ADR_SPACE_FIXED_HARDWARE   (ACPI_ADR_SPACE_TYPE) 127
7837c478bd9Sstevel@tonic-gate 
7847c478bd9Sstevel@tonic-gate 
7857c478bd9Sstevel@tonic-gate /*
7867c478bd9Sstevel@tonic-gate  * BitRegister IDs
7877c478bd9Sstevel@tonic-gate  * These are bitfields defined within the full ACPI registers
7887c478bd9Sstevel@tonic-gate  */
7897c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_STATUS                0x00
7907c478bd9Sstevel@tonic-gate #define ACPI_BITREG_BUS_MASTER_STATUS           0x01
7917c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_STATUS          0x02
7927c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_STATUS         0x03
7937c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_STATUS         0x04
7947c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_STATUS             0x05
7957c478bd9Sstevel@tonic-gate #define ACPI_BITREG_WAKE_STATUS                 0x06
7967c478bd9Sstevel@tonic-gate #define ACPI_BITREG_PCIEXP_WAKE_STATUS          0x07
7977c478bd9Sstevel@tonic-gate 
7987c478bd9Sstevel@tonic-gate #define ACPI_BITREG_TIMER_ENABLE                0x08
7997c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_ENABLE          0x09
8007c478bd9Sstevel@tonic-gate #define ACPI_BITREG_POWER_BUTTON_ENABLE         0x0A
8017c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_BUTTON_ENABLE         0x0B
8027c478bd9Sstevel@tonic-gate #define ACPI_BITREG_RT_CLOCK_ENABLE             0x0C
8037c478bd9Sstevel@tonic-gate #define ACPI_BITREG_WAKE_ENABLE                 0x0D
8047c478bd9Sstevel@tonic-gate #define ACPI_BITREG_PCIEXP_WAKE_DISABLE         0x0E
8057c478bd9Sstevel@tonic-gate 
8067c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SCI_ENABLE                  0x0F
8077c478bd9Sstevel@tonic-gate #define ACPI_BITREG_BUS_MASTER_RLD              0x10
8087c478bd9Sstevel@tonic-gate #define ACPI_BITREG_GLOBAL_LOCK_RELEASE         0x11
8097c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_TYPE_A                0x12
8107c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_TYPE_B                0x13
8117c478bd9Sstevel@tonic-gate #define ACPI_BITREG_SLEEP_ENABLE                0x14
8127c478bd9Sstevel@tonic-gate 
8137c478bd9Sstevel@tonic-gate #define ACPI_BITREG_ARB_DISABLE                 0x15
8147c478bd9Sstevel@tonic-gate 
8157c478bd9Sstevel@tonic-gate #define ACPI_BITREG_MAX                         0x15
8167c478bd9Sstevel@tonic-gate #define ACPI_NUM_BITREG                         ACPI_BITREG_MAX + 1
8177c478bd9Sstevel@tonic-gate 
8187c478bd9Sstevel@tonic-gate 
8197c478bd9Sstevel@tonic-gate /*
8207c478bd9Sstevel@tonic-gate  * External ACPI object definition
8217c478bd9Sstevel@tonic-gate  */
8227c478bd9Sstevel@tonic-gate typedef union acpi_object
8237c478bd9Sstevel@tonic-gate {
8247c478bd9Sstevel@tonic-gate     ACPI_OBJECT_TYPE            Type;   /* See definition of AcpiNsType for values */
8257c478bd9Sstevel@tonic-gate     struct
8267c478bd9Sstevel@tonic-gate     {
8277c478bd9Sstevel@tonic-gate         ACPI_OBJECT_TYPE            Type;
8287c478bd9Sstevel@tonic-gate         ACPI_INTEGER                Value;      /* The actual number */
8297c478bd9Sstevel@tonic-gate     } Integer;
8307c478bd9Sstevel@tonic-gate 
8317c478bd9Sstevel@tonic-gate     struct
8327c478bd9Sstevel@tonic-gate     {
8337c478bd9Sstevel@tonic-gate         ACPI_OBJECT_TYPE            Type;
8347c478bd9Sstevel@tonic-gate         UINT32                      Length;     /* # of bytes in string, excluding trailing null */
8357c478bd9Sstevel@tonic-gate         char                        *Pointer;   /* points to the string value */
8367c478bd9Sstevel@tonic-gate     } String;
8377c478bd9Sstevel@tonic-gate 
8387c478bd9Sstevel@tonic-gate     struct
8397c478bd9Sstevel@tonic-gate     {
8407c478bd9Sstevel@tonic-gate         ACPI_OBJECT_TYPE            Type;
8417c478bd9Sstevel@tonic-gate         UINT32                      Length;     /* # of bytes in buffer */
8427c478bd9Sstevel@tonic-gate         UINT8                       *Pointer;   /* points to the buffer */
8437c478bd9Sstevel@tonic-gate     } Buffer;
8447c478bd9Sstevel@tonic-gate 
8457c478bd9Sstevel@tonic-gate     struct
8467c478bd9Sstevel@tonic-gate     {
8477c478bd9Sstevel@tonic-gate         ACPI_OBJECT_TYPE            Type;
8487c478bd9Sstevel@tonic-gate         UINT32                      Fill1;
8497c478bd9Sstevel@tonic-gate         ACPI_HANDLE                 Handle;     /* object reference */
8507c478bd9Sstevel@tonic-gate     } Reference;
8517c478bd9Sstevel@tonic-gate 
8527c478bd9Sstevel@tonic-gate     struct
8537c478bd9Sstevel@tonic-gate     {
8547c478bd9Sstevel@tonic-gate         ACPI_OBJECT_TYPE            Type;
8557c478bd9Sstevel@tonic-gate         UINT32                      Count;      /* # of elements in package */
8567c478bd9Sstevel@tonic-gate         union acpi_object           *Elements;  /* Pointer to an array of ACPI_OBJECTs */
8577c478bd9Sstevel@tonic-gate     } Package;
8587c478bd9Sstevel@tonic-gate 
8597c478bd9Sstevel@tonic-gate     struct
8607c478bd9Sstevel@tonic-gate     {
8617c478bd9Sstevel@tonic-gate         ACPI_OBJECT_TYPE            Type;
8627c478bd9Sstevel@tonic-gate         UINT32                      ProcId;
8637c478bd9Sstevel@tonic-gate         ACPI_IO_ADDRESS             PblkAddress;
8647c478bd9Sstevel@tonic-gate         UINT32                      PblkLength;
8657c478bd9Sstevel@tonic-gate     } Processor;
8667c478bd9Sstevel@tonic-gate 
8677c478bd9Sstevel@tonic-gate     struct
8687c478bd9Sstevel@tonic-gate     {
8697c478bd9Sstevel@tonic-gate         ACPI_OBJECT_TYPE            Type;
8707c478bd9Sstevel@tonic-gate         UINT32                      SystemLevel;
8717c478bd9Sstevel@tonic-gate         UINT32                      ResourceOrder;
8727c478bd9Sstevel@tonic-gate     } PowerResource;
8737c478bd9Sstevel@tonic-gate 
8747c478bd9Sstevel@tonic-gate } ACPI_OBJECT;
8757c478bd9Sstevel@tonic-gate 
8767c478bd9Sstevel@tonic-gate 
8777c478bd9Sstevel@tonic-gate /*
8787c478bd9Sstevel@tonic-gate  * List of objects, used as a parameter list for control method evaluation
8797c478bd9Sstevel@tonic-gate  */
8807c478bd9Sstevel@tonic-gate typedef struct acpi_object_list
8817c478bd9Sstevel@tonic-gate {
8827c478bd9Sstevel@tonic-gate     UINT32                      Count;
8837c478bd9Sstevel@tonic-gate     ACPI_OBJECT                 *Pointer;
8847c478bd9Sstevel@tonic-gate 
8857c478bd9Sstevel@tonic-gate } ACPI_OBJECT_LIST;
8867c478bd9Sstevel@tonic-gate 
8877c478bd9Sstevel@tonic-gate 
8887c478bd9Sstevel@tonic-gate /*
8897c478bd9Sstevel@tonic-gate  * Miscellaneous common Data Structures used by the interfaces
8907c478bd9Sstevel@tonic-gate  */
8917c478bd9Sstevel@tonic-gate #define ACPI_NO_BUFFER              0
8927c478bd9Sstevel@tonic-gate #define ACPI_ALLOCATE_BUFFER        (ACPI_SIZE) (-1)
8937c478bd9Sstevel@tonic-gate #define ACPI_ALLOCATE_LOCAL_BUFFER  (ACPI_SIZE) (-2)
8947c478bd9Sstevel@tonic-gate 
8957c478bd9Sstevel@tonic-gate typedef struct acpi_buffer
8967c478bd9Sstevel@tonic-gate {
8977c478bd9Sstevel@tonic-gate     ACPI_SIZE                   Length;         /* Length in bytes of the buffer */
8987c478bd9Sstevel@tonic-gate     void                        *Pointer;       /* pointer to buffer */
8997c478bd9Sstevel@tonic-gate 
9007c478bd9Sstevel@tonic-gate } ACPI_BUFFER;
9017c478bd9Sstevel@tonic-gate 
9027c478bd9Sstevel@tonic-gate 
9037c478bd9Sstevel@tonic-gate /*
9047c478bd9Sstevel@tonic-gate  * NameType for AcpiGetName
9057c478bd9Sstevel@tonic-gate  */
9067c478bd9Sstevel@tonic-gate #define ACPI_FULL_PATHNAME              0
9077c478bd9Sstevel@tonic-gate #define ACPI_SINGLE_NAME                1
9087c478bd9Sstevel@tonic-gate #define ACPI_NAME_TYPE_MAX              1
9097c478bd9Sstevel@tonic-gate 
9107c478bd9Sstevel@tonic-gate 
9117c478bd9Sstevel@tonic-gate /*
9127c478bd9Sstevel@tonic-gate  * Structure and flags for AcpiGetSystemInfo
9137c478bd9Sstevel@tonic-gate  */
9147c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_UNKNOWN           0x0000
9157c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_ACPI              0x0001
9167c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODE_LEGACY            0x0002
9177c478bd9Sstevel@tonic-gate #define ACPI_SYS_MODES_MASK             0x0003
9187c478bd9Sstevel@tonic-gate 
9197c478bd9Sstevel@tonic-gate 
9207c478bd9Sstevel@tonic-gate /*
9217c478bd9Sstevel@tonic-gate  * ACPI Table Info.  One per ACPI table _type_
9227c478bd9Sstevel@tonic-gate  */
9237c478bd9Sstevel@tonic-gate typedef struct acpi_table_info
9247c478bd9Sstevel@tonic-gate {
9257c478bd9Sstevel@tonic-gate     UINT32                      Count;
9267c478bd9Sstevel@tonic-gate 
9277c478bd9Sstevel@tonic-gate } ACPI_TABLE_INFO;
9287c478bd9Sstevel@tonic-gate 
9297c478bd9Sstevel@tonic-gate 
9307c478bd9Sstevel@tonic-gate /*
9317c478bd9Sstevel@tonic-gate  * System info returned by AcpiGetSystemInfo()
9327c478bd9Sstevel@tonic-gate  */
9337c478bd9Sstevel@tonic-gate typedef struct acpi_system_info
9347c478bd9Sstevel@tonic-gate {
9357c478bd9Sstevel@tonic-gate     UINT32                      AcpiCaVersion;
9367c478bd9Sstevel@tonic-gate     UINT32                      Flags;
9377c478bd9Sstevel@tonic-gate     UINT32                      TimerResolution;
9387c478bd9Sstevel@tonic-gate     UINT32                      Reserved1;
9397c478bd9Sstevel@tonic-gate     UINT32                      Reserved2;
9407c478bd9Sstevel@tonic-gate     UINT32                      DebugLevel;
9417c478bd9Sstevel@tonic-gate     UINT32                      DebugLayer;
9427c478bd9Sstevel@tonic-gate     UINT32                      NumTableTypes;
9437c478bd9Sstevel@tonic-gate     ACPI_TABLE_INFO             TableInfo [NUM_ACPI_TABLE_TYPES];
9447c478bd9Sstevel@tonic-gate 
9457c478bd9Sstevel@tonic-gate } ACPI_SYSTEM_INFO;
9467c478bd9Sstevel@tonic-gate 
9477c478bd9Sstevel@tonic-gate 
9487c478bd9Sstevel@tonic-gate /*
9497c478bd9Sstevel@tonic-gate  * Types specific to the OS service interfaces
9507c478bd9Sstevel@tonic-gate  */
9517c478bd9Sstevel@tonic-gate typedef UINT32
9527c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_HANDLER) (
9537c478bd9Sstevel@tonic-gate     void                    *Context);
9547c478bd9Sstevel@tonic-gate 
9557c478bd9Sstevel@tonic-gate typedef void
9567c478bd9Sstevel@tonic-gate (ACPI_SYSTEM_XFACE *ACPI_OSD_EXEC_CALLBACK) (
9577c478bd9Sstevel@tonic-gate     void                    *Context);
9587c478bd9Sstevel@tonic-gate 
9597c478bd9Sstevel@tonic-gate /*
9607c478bd9Sstevel@tonic-gate  * Various handlers and callback procedures
9617c478bd9Sstevel@tonic-gate  */
9627c478bd9Sstevel@tonic-gate typedef
9637c478bd9Sstevel@tonic-gate UINT32 (*ACPI_EVENT_HANDLER) (
9647c478bd9Sstevel@tonic-gate     void                        *Context);
9657c478bd9Sstevel@tonic-gate 
9667c478bd9Sstevel@tonic-gate typedef
9677c478bd9Sstevel@tonic-gate void (*ACPI_NOTIFY_HANDLER) (
9687c478bd9Sstevel@tonic-gate     ACPI_HANDLE                 Device,
9697c478bd9Sstevel@tonic-gate     UINT32                      Value,
9707c478bd9Sstevel@tonic-gate     void                        *Context);
9717c478bd9Sstevel@tonic-gate 
9727c478bd9Sstevel@tonic-gate typedef
9737c478bd9Sstevel@tonic-gate void (*ACPI_OBJECT_HANDLER) (
9747c478bd9Sstevel@tonic-gate     ACPI_HANDLE                 Object,
9757c478bd9Sstevel@tonic-gate     UINT32                      Function,
9767c478bd9Sstevel@tonic-gate     void                        *Data);
9777c478bd9Sstevel@tonic-gate 
9787c478bd9Sstevel@tonic-gate typedef
9797c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_INIT_HANDLER) (
9807c478bd9Sstevel@tonic-gate     ACPI_HANDLE                 Object,
9817c478bd9Sstevel@tonic-gate     UINT32                      Function);
9827c478bd9Sstevel@tonic-gate 
9837c478bd9Sstevel@tonic-gate #define ACPI_INIT_DEVICE_INI        1
9847c478bd9Sstevel@tonic-gate 
9857c478bd9Sstevel@tonic-gate typedef
9867c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_EXCEPTION_HANDLER) (
9877c478bd9Sstevel@tonic-gate     ACPI_STATUS             AmlStatus,
9887c478bd9Sstevel@tonic-gate     ACPI_NAME               Name,
9897c478bd9Sstevel@tonic-gate     UINT16                  Opcode,
9907c478bd9Sstevel@tonic-gate     UINT32                  AmlOffset,
9917c478bd9Sstevel@tonic-gate     void                    *Context);
9927c478bd9Sstevel@tonic-gate 
9937c478bd9Sstevel@tonic-gate 
9947c478bd9Sstevel@tonic-gate /* Address Spaces (For Operation Regions) */
9957c478bd9Sstevel@tonic-gate 
9967c478bd9Sstevel@tonic-gate typedef
9977c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) (
9987c478bd9Sstevel@tonic-gate     UINT32                      Function,
9997c478bd9Sstevel@tonic-gate     ACPI_PHYSICAL_ADDRESS       Address,
10007c478bd9Sstevel@tonic-gate     UINT32                      BitWidth,
10017c478bd9Sstevel@tonic-gate     ACPI_INTEGER                *Value,
10027c478bd9Sstevel@tonic-gate     void                        *HandlerContext,
10037c478bd9Sstevel@tonic-gate     void                        *RegionContext);
10047c478bd9Sstevel@tonic-gate 
10057c478bd9Sstevel@tonic-gate #define ACPI_DEFAULT_HANDLER        NULL
10067c478bd9Sstevel@tonic-gate 
10077c478bd9Sstevel@tonic-gate 
10087c478bd9Sstevel@tonic-gate typedef
10097c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) (
10107c478bd9Sstevel@tonic-gate     ACPI_HANDLE                 RegionHandle,
10117c478bd9Sstevel@tonic-gate     UINT32                      Function,
10127c478bd9Sstevel@tonic-gate     void                        *HandlerContext,
10137c478bd9Sstevel@tonic-gate     void                        **RegionContext);
10147c478bd9Sstevel@tonic-gate 
10157c478bd9Sstevel@tonic-gate #define ACPI_REGION_ACTIVATE    0
10167c478bd9Sstevel@tonic-gate #define ACPI_REGION_DEACTIVATE  1
10177c478bd9Sstevel@tonic-gate 
10187c478bd9Sstevel@tonic-gate typedef
10197c478bd9Sstevel@tonic-gate ACPI_STATUS (*ACPI_WALK_CALLBACK) (
10207c478bd9Sstevel@tonic-gate     ACPI_HANDLE                 ObjHandle,
10217c478bd9Sstevel@tonic-gate     UINT32                      NestingLevel,
10227c478bd9Sstevel@tonic-gate     void                        *Context,
10237c478bd9Sstevel@tonic-gate     void                        **ReturnValue);
10247c478bd9Sstevel@tonic-gate 
10257c478bd9Sstevel@tonic-gate 
10267c478bd9Sstevel@tonic-gate /* Interrupt handler return values */
10277c478bd9Sstevel@tonic-gate 
10287c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_NOT_HANDLED      0x00
10297c478bd9Sstevel@tonic-gate #define ACPI_INTERRUPT_HANDLED          0x01
10307c478bd9Sstevel@tonic-gate 
10317c478bd9Sstevel@tonic-gate 
10327c478bd9Sstevel@tonic-gate /* Common string version of device HIDs and UIDs */
10337c478bd9Sstevel@tonic-gate 
10347c478bd9Sstevel@tonic-gate typedef struct acpi_device_id
10357c478bd9Sstevel@tonic-gate {
10367c478bd9Sstevel@tonic-gate     char                    Value[ACPI_DEVICE_ID_LENGTH];
10377c478bd9Sstevel@tonic-gate 
10387c478bd9Sstevel@tonic-gate } ACPI_DEVICE_ID;
10397c478bd9Sstevel@tonic-gate 
10407c478bd9Sstevel@tonic-gate /* Common string version of device CIDs */
10417c478bd9Sstevel@tonic-gate 
10427c478bd9Sstevel@tonic-gate typedef struct acpi_compatible_id
10437c478bd9Sstevel@tonic-gate {
10447c478bd9Sstevel@tonic-gate     char                    Value[ACPI_MAX_CID_LENGTH];
10457c478bd9Sstevel@tonic-gate 
10467c478bd9Sstevel@tonic-gate } ACPI_COMPATIBLE_ID;
10477c478bd9Sstevel@tonic-gate 
10487c478bd9Sstevel@tonic-gate typedef struct acpi_compatible_id_list
10497c478bd9Sstevel@tonic-gate {
10507c478bd9Sstevel@tonic-gate     UINT32                  Count;
10517c478bd9Sstevel@tonic-gate     UINT32                  Size;
10527c478bd9Sstevel@tonic-gate     ACPI_COMPATIBLE_ID      Id[1];
10537c478bd9Sstevel@tonic-gate 
10547c478bd9Sstevel@tonic-gate } ACPI_COMPATIBLE_ID_LIST;
10557c478bd9Sstevel@tonic-gate 
10567c478bd9Sstevel@tonic-gate 
10577c478bd9Sstevel@tonic-gate /* Structure and flags for AcpiGetObjectInfo */
10587c478bd9Sstevel@tonic-gate 
10597c478bd9Sstevel@tonic-gate #define ACPI_VALID_STA                  0x0001
10607c478bd9Sstevel@tonic-gate #define ACPI_VALID_ADR                  0x0002
10617c478bd9Sstevel@tonic-gate #define ACPI_VALID_HID                  0x0004
10627c478bd9Sstevel@tonic-gate #define ACPI_VALID_UID                  0x0008
10637c478bd9Sstevel@tonic-gate #define ACPI_VALID_CID                  0x0010
10647c478bd9Sstevel@tonic-gate #define ACPI_VALID_SXDS                 0x0020
10657c478bd9Sstevel@tonic-gate 
1066*30082d0cSmyers /* Flags for _STA method */
1067*30082d0cSmyers 
1068*30082d0cSmyers #define ACPI_STA_DEVICE_PRESENT         0x01
1069*30082d0cSmyers #define ACPI_STA_DEVICE_ENABLED         0x02
1070*30082d0cSmyers #define ACPI_STA_DEVICE_UI              0x04
1071*30082d0cSmyers #define ACPI_STA_DEVICE_OK              0x08
1072*30082d0cSmyers #define ACPI_STA_BATTERY_PRESENT        0x10
1073*30082d0cSmyers 
10747c478bd9Sstevel@tonic-gate 
10757c478bd9Sstevel@tonic-gate #define ACPI_COMMON_OBJ_INFO \
10767c478bd9Sstevel@tonic-gate     ACPI_OBJECT_TYPE            Type;           /* ACPI object type */ \
10777c478bd9Sstevel@tonic-gate     ACPI_NAME                   Name            /* ACPI object Name */
10787c478bd9Sstevel@tonic-gate 
10797c478bd9Sstevel@tonic-gate 
10807c478bd9Sstevel@tonic-gate typedef struct acpi_obj_info_header
10817c478bd9Sstevel@tonic-gate {
10827c478bd9Sstevel@tonic-gate     ACPI_COMMON_OBJ_INFO;
10837c478bd9Sstevel@tonic-gate 
10847c478bd9Sstevel@tonic-gate } ACPI_OBJ_INFO_HEADER;
10857c478bd9Sstevel@tonic-gate 
10867c478bd9Sstevel@tonic-gate 
10877c478bd9Sstevel@tonic-gate /* Structure returned from Get Object Info */
10887c478bd9Sstevel@tonic-gate 
10897c478bd9Sstevel@tonic-gate typedef struct acpi_device_info
10907c478bd9Sstevel@tonic-gate {
10917c478bd9Sstevel@tonic-gate     ACPI_COMMON_OBJ_INFO;
10927c478bd9Sstevel@tonic-gate 
10937c478bd9Sstevel@tonic-gate     UINT32                      Valid;              /* Indicates which fields below are valid */
10947c478bd9Sstevel@tonic-gate     UINT32                      CurrentStatus;      /* _STA value */
10957c478bd9Sstevel@tonic-gate     ACPI_INTEGER                Address;            /* _ADR value if any */
10967c478bd9Sstevel@tonic-gate     ACPI_DEVICE_ID              HardwareId;         /* _HID value if any */
10977c478bd9Sstevel@tonic-gate     ACPI_DEVICE_ID              UniqueId;           /* _UID value if any */
10987c478bd9Sstevel@tonic-gate     UINT8                       HighestDstates[4];  /* _SxD values: 0xFF indicates not valid */
10997c478bd9Sstevel@tonic-gate     ACPI_COMPATIBLE_ID_LIST     CompatibilityId;    /* List of _CIDs if any */
11007c478bd9Sstevel@tonic-gate 
11017c478bd9Sstevel@tonic-gate } ACPI_DEVICE_INFO;
11027c478bd9Sstevel@tonic-gate 
11037c478bd9Sstevel@tonic-gate 
11047c478bd9Sstevel@tonic-gate /* Context structs for address space handlers */
11057c478bd9Sstevel@tonic-gate 
11067c478bd9Sstevel@tonic-gate typedef struct acpi_pci_id
11077c478bd9Sstevel@tonic-gate {
11087c478bd9Sstevel@tonic-gate     UINT16                      Segment;
11097c478bd9Sstevel@tonic-gate     UINT16                      Bus;
11107c478bd9Sstevel@tonic-gate     UINT16                      Device;
11117c478bd9Sstevel@tonic-gate     UINT16                      Function;
11127c478bd9Sstevel@tonic-gate 
11137c478bd9Sstevel@tonic-gate } ACPI_PCI_ID;
11147c478bd9Sstevel@tonic-gate 
11157c478bd9Sstevel@tonic-gate 
11167c478bd9Sstevel@tonic-gate typedef struct acpi_mem_space_context
11177c478bd9Sstevel@tonic-gate {
11187c478bd9Sstevel@tonic-gate     UINT32                      Length;
11197c478bd9Sstevel@tonic-gate     ACPI_PHYSICAL_ADDRESS       Address;
11207c478bd9Sstevel@tonic-gate     ACPI_PHYSICAL_ADDRESS       MappedPhysicalAddress;
11217c478bd9Sstevel@tonic-gate     UINT8                       *MappedLogicalAddress;
11227c478bd9Sstevel@tonic-gate     ACPI_SIZE                   MappedLength;
11237c478bd9Sstevel@tonic-gate 
11247c478bd9Sstevel@tonic-gate } ACPI_MEM_SPACE_CONTEXT;
11257c478bd9Sstevel@tonic-gate 
11267c478bd9Sstevel@tonic-gate 
11277c478bd9Sstevel@tonic-gate /*
11287c478bd9Sstevel@tonic-gate  * Definitions for Resource Attributes
11297c478bd9Sstevel@tonic-gate  */
1130*30082d0cSmyers typedef UINT16                          ACPI_RS_LENGTH;    /* Resource Length field is fixed at 16 bits */
1131*30082d0cSmyers typedef UINT32                          ACPI_RSDESC_SIZE;  /* Max Resource Descriptor size is (Length+3) = (64K-1)+3 */
11327c478bd9Sstevel@tonic-gate 
11337c478bd9Sstevel@tonic-gate /*
11347c478bd9Sstevel@tonic-gate  *  Memory Attributes
11357c478bd9Sstevel@tonic-gate  */
11367c478bd9Sstevel@tonic-gate #define ACPI_READ_ONLY_MEMORY           (UINT8) 0x00
11377c478bd9Sstevel@tonic-gate #define ACPI_READ_WRITE_MEMORY          (UINT8) 0x01
11387c478bd9Sstevel@tonic-gate 
11397c478bd9Sstevel@tonic-gate #define ACPI_NON_CACHEABLE_MEMORY       (UINT8) 0x00
11407c478bd9Sstevel@tonic-gate #define ACPI_CACHABLE_MEMORY            (UINT8) 0x01
11417c478bd9Sstevel@tonic-gate #define ACPI_WRITE_COMBINING_MEMORY     (UINT8) 0x02
11427c478bd9Sstevel@tonic-gate #define ACPI_PREFETCHABLE_MEMORY        (UINT8) 0x03
11437c478bd9Sstevel@tonic-gate 
11447c478bd9Sstevel@tonic-gate /*
11457c478bd9Sstevel@tonic-gate  *  IO Attributes
11467c478bd9Sstevel@tonic-gate  *  The ISA IO ranges are:     n000-n0FFh,  n400-n4FFh, n800-n8FFh, nC00-nCFFh.
11477c478bd9Sstevel@tonic-gate  *  The non-ISA IO ranges are: n100-n3FFh,  n500-n7FFh, n900-nBFFh, nCD0-nFFFh.
11487c478bd9Sstevel@tonic-gate  */
11497c478bd9Sstevel@tonic-gate #define ACPI_NON_ISA_ONLY_RANGES        (UINT8) 0x01
11507c478bd9Sstevel@tonic-gate #define ACPI_ISA_ONLY_RANGES            (UINT8) 0x02
11517c478bd9Sstevel@tonic-gate #define ACPI_ENTIRE_RANGE               (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES)
11527c478bd9Sstevel@tonic-gate 
1153*30082d0cSmyers /* Type of translation - 1=Sparse, 0=Dense */
1154*30082d0cSmyers 
1155*30082d0cSmyers #define ACPI_SPARSE_TRANSLATION         (UINT8) 0x01
11567c478bd9Sstevel@tonic-gate 
11577c478bd9Sstevel@tonic-gate /*
11587c478bd9Sstevel@tonic-gate  *  IO Port Descriptor Decode
11597c478bd9Sstevel@tonic-gate  */
11607c478bd9Sstevel@tonic-gate #define ACPI_DECODE_10                  (UINT8) 0x00    /* 10-bit IO address decode */
11617c478bd9Sstevel@tonic-gate #define ACPI_DECODE_16                  (UINT8) 0x01    /* 16-bit IO address decode */
11627c478bd9Sstevel@tonic-gate 
11637c478bd9Sstevel@tonic-gate /*
11647c478bd9Sstevel@tonic-gate  *  IRQ Attributes
11657c478bd9Sstevel@tonic-gate  */
1166*30082d0cSmyers #define ACPI_LEVEL_SENSITIVE            (UINT8) 0x00
1167*30082d0cSmyers #define ACPI_EDGE_SENSITIVE             (UINT8) 0x01
11687c478bd9Sstevel@tonic-gate 
11697c478bd9Sstevel@tonic-gate #define ACPI_ACTIVE_HIGH                (UINT8) 0x00
11707c478bd9Sstevel@tonic-gate #define ACPI_ACTIVE_LOW                 (UINT8) 0x01
11717c478bd9Sstevel@tonic-gate 
11727c478bd9Sstevel@tonic-gate #define ACPI_EXCLUSIVE                  (UINT8) 0x00
11737c478bd9Sstevel@tonic-gate #define ACPI_SHARED                     (UINT8) 0x01
11747c478bd9Sstevel@tonic-gate 
11757c478bd9Sstevel@tonic-gate /*
11767c478bd9Sstevel@tonic-gate  *  DMA Attributes
11777c478bd9Sstevel@tonic-gate  */
11787c478bd9Sstevel@tonic-gate #define ACPI_COMPATIBILITY              (UINT8) 0x00
11797c478bd9Sstevel@tonic-gate #define ACPI_TYPE_A                     (UINT8) 0x01
11807c478bd9Sstevel@tonic-gate #define ACPI_TYPE_B                     (UINT8) 0x02
11817c478bd9Sstevel@tonic-gate #define ACPI_TYPE_F                     (UINT8) 0x03
11827c478bd9Sstevel@tonic-gate 
11837c478bd9Sstevel@tonic-gate #define ACPI_NOT_BUS_MASTER             (UINT8) 0x00
11847c478bd9Sstevel@tonic-gate #define ACPI_BUS_MASTER                 (UINT8) 0x01
11857c478bd9Sstevel@tonic-gate 
11867c478bd9Sstevel@tonic-gate #define ACPI_TRANSFER_8                 (UINT8) 0x00
11877c478bd9Sstevel@tonic-gate #define ACPI_TRANSFER_8_16              (UINT8) 0x01
11887c478bd9Sstevel@tonic-gate #define ACPI_TRANSFER_16                (UINT8) 0x02
11897c478bd9Sstevel@tonic-gate 
11907c478bd9Sstevel@tonic-gate /*
11917c478bd9Sstevel@tonic-gate  * Start Dependent Functions Priority definitions
11927c478bd9Sstevel@tonic-gate  */
11937c478bd9Sstevel@tonic-gate #define ACPI_GOOD_CONFIGURATION         (UINT8) 0x00
11947c478bd9Sstevel@tonic-gate #define ACPI_ACCEPTABLE_CONFIGURATION   (UINT8) 0x01
11957c478bd9Sstevel@tonic-gate #define ACPI_SUB_OPTIMAL_CONFIGURATION  (UINT8) 0x02
11967c478bd9Sstevel@tonic-gate 
11977c478bd9Sstevel@tonic-gate /*
11987c478bd9Sstevel@tonic-gate  *  16, 32 and 64-bit Address Descriptor resource types
11997c478bd9Sstevel@tonic-gate  */
12007c478bd9Sstevel@tonic-gate #define ACPI_MEMORY_RANGE               (UINT8) 0x00
12017c478bd9Sstevel@tonic-gate #define ACPI_IO_RANGE                   (UINT8) 0x01
12027c478bd9Sstevel@tonic-gate #define ACPI_BUS_NUMBER_RANGE           (UINT8) 0x02
12037c478bd9Sstevel@tonic-gate 
12047c478bd9Sstevel@tonic-gate #define ACPI_ADDRESS_NOT_FIXED          (UINT8) 0x00
12057c478bd9Sstevel@tonic-gate #define ACPI_ADDRESS_FIXED              (UINT8) 0x01
12067c478bd9Sstevel@tonic-gate 
12077c478bd9Sstevel@tonic-gate #define ACPI_POS_DECODE                 (UINT8) 0x00
12087c478bd9Sstevel@tonic-gate #define ACPI_SUB_DECODE                 (UINT8) 0x01
12097c478bd9Sstevel@tonic-gate 
12107c478bd9Sstevel@tonic-gate #define ACPI_PRODUCER                   (UINT8) 0x00
12117c478bd9Sstevel@tonic-gate #define ACPI_CONSUMER                   (UINT8) 0x01
12127c478bd9Sstevel@tonic-gate 
12137c478bd9Sstevel@tonic-gate 
1214*30082d0cSmyers /*
1215*30082d0cSmyers  * If possible, pack the following structures to byte alignment
1216*30082d0cSmyers  */
1217*30082d0cSmyers #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED
1218*30082d0cSmyers #pragma pack(1)
1219*30082d0cSmyers #endif
1220*30082d0cSmyers 
1221*30082d0cSmyers /* UUID data structures for use in vendor-defined resource descriptors */
1222*30082d0cSmyers 
1223*30082d0cSmyers typedef struct acpi_uuid
1224*30082d0cSmyers {
1225*30082d0cSmyers     UINT8                   Data[ACPI_UUID_LENGTH];
1226*30082d0cSmyers } ACPI_UUID;
1227*30082d0cSmyers 
1228*30082d0cSmyers typedef struct acpi_vendor_uuid
1229*30082d0cSmyers {
1230*30082d0cSmyers     UINT8                   Subtype;
1231*30082d0cSmyers     UINT8                   Data[ACPI_UUID_LENGTH];
1232*30082d0cSmyers 
1233*30082d0cSmyers } ACPI_VENDOR_UUID;
1234*30082d0cSmyers 
12357c478bd9Sstevel@tonic-gate /*
12367c478bd9Sstevel@tonic-gate  *  Structures used to describe device resources
12377c478bd9Sstevel@tonic-gate  */
12387c478bd9Sstevel@tonic-gate typedef struct acpi_resource_irq
12397c478bd9Sstevel@tonic-gate {
1240*30082d0cSmyers     UINT8                       Triggering;
1241*30082d0cSmyers     UINT8                       Polarity;
1242*30082d0cSmyers     UINT8                       Sharable;
1243*30082d0cSmyers     UINT8                       InterruptCount;
1244*30082d0cSmyers     UINT8                       Interrupts[1];
12457c478bd9Sstevel@tonic-gate 
12467c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_IRQ;
12477c478bd9Sstevel@tonic-gate 
1248186507a7Smyers 
12497c478bd9Sstevel@tonic-gate typedef struct ACPI_RESOURCE_DMA
12507c478bd9Sstevel@tonic-gate {
1251*30082d0cSmyers     UINT8                       Type;
1252*30082d0cSmyers     UINT8                       BusMaster;
1253*30082d0cSmyers     UINT8                       Transfer;
1254*30082d0cSmyers     UINT8                       ChannelCount;
1255*30082d0cSmyers     UINT8                       Channels[1];
12567c478bd9Sstevel@tonic-gate 
12577c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_DMA;
12587c478bd9Sstevel@tonic-gate 
1259186507a7Smyers 
1260186507a7Smyers typedef struct acpi_resource_start_dependent
12617c478bd9Sstevel@tonic-gate {
1262*30082d0cSmyers     UINT8                       CompatibilityPriority;
1263*30082d0cSmyers     UINT8                       PerformanceRobustness;
12647c478bd9Sstevel@tonic-gate 
1265186507a7Smyers } ACPI_RESOURCE_START_DEPENDENT;
1266186507a7Smyers 
12677c478bd9Sstevel@tonic-gate 
12687c478bd9Sstevel@tonic-gate /*
12697c478bd9Sstevel@tonic-gate  * END_DEPENDENT_FUNCTIONS_RESOURCE struct is not
12707c478bd9Sstevel@tonic-gate  * needed because it has no fields
12717c478bd9Sstevel@tonic-gate  */
12727c478bd9Sstevel@tonic-gate 
1273186507a7Smyers 
12747c478bd9Sstevel@tonic-gate typedef struct acpi_resource_io
12757c478bd9Sstevel@tonic-gate {
1276*30082d0cSmyers     UINT8                       IoDecode;
1277*30082d0cSmyers     UINT8                       Alignment;
1278*30082d0cSmyers     UINT8                       AddressLength;
1279*30082d0cSmyers     UINT16                      Minimum;
1280*30082d0cSmyers     UINT16                      Maximum;
12817c478bd9Sstevel@tonic-gate 
12827c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_IO;
12837c478bd9Sstevel@tonic-gate 
12847c478bd9Sstevel@tonic-gate typedef struct acpi_resource_fixed_io
12857c478bd9Sstevel@tonic-gate {
1286*30082d0cSmyers     UINT16                      Address;
1287*30082d0cSmyers     UINT8                       AddressLength;
12887c478bd9Sstevel@tonic-gate 
12897c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_FIXED_IO;
12907c478bd9Sstevel@tonic-gate 
12917c478bd9Sstevel@tonic-gate typedef struct acpi_resource_vendor
12927c478bd9Sstevel@tonic-gate {
1293*30082d0cSmyers     UINT16                      ByteLength;
1294186507a7Smyers     UINT8                       ByteData[1];
12957c478bd9Sstevel@tonic-gate 
12967c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_VENDOR;
12977c478bd9Sstevel@tonic-gate 
1298*30082d0cSmyers /* Vendor resource with UUID info (introduced in ACPI 3.0) */
1299*30082d0cSmyers 
1300*30082d0cSmyers typedef struct acpi_resource_vendor_typed
1301*30082d0cSmyers {
1302*30082d0cSmyers     UINT16                      ByteLength;
1303*30082d0cSmyers     UINT8                       UuidSubtype;
1304*30082d0cSmyers     UINT8                       Uuid[ACPI_UUID_LENGTH];
1305*30082d0cSmyers     UINT8                       ByteData[1];
1306*30082d0cSmyers 
1307*30082d0cSmyers } ACPI_RESOURCE_VENDOR_TYPED;
1308*30082d0cSmyers 
13097c478bd9Sstevel@tonic-gate typedef struct acpi_resource_end_tag
13107c478bd9Sstevel@tonic-gate {
13117c478bd9Sstevel@tonic-gate     UINT8                       Checksum;
13127c478bd9Sstevel@tonic-gate 
13137c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_END_TAG;
13147c478bd9Sstevel@tonic-gate 
1315186507a7Smyers typedef struct acpi_resource_memory24
13167c478bd9Sstevel@tonic-gate {
1317*30082d0cSmyers     UINT8                       WriteProtect;
1318*30082d0cSmyers     UINT16                      Minimum;
1319*30082d0cSmyers     UINT16                      Maximum;
1320*30082d0cSmyers     UINT16                      Alignment;
1321*30082d0cSmyers     UINT16                      AddressLength;
13227c478bd9Sstevel@tonic-gate 
1323186507a7Smyers } ACPI_RESOURCE_MEMORY24;
13247c478bd9Sstevel@tonic-gate 
1325186507a7Smyers typedef struct acpi_resource_memory32
13267c478bd9Sstevel@tonic-gate {
1327*30082d0cSmyers     UINT8                       WriteProtect;
1328186507a7Smyers     UINT32                      Minimum;
1329186507a7Smyers     UINT32                      Maximum;
13307c478bd9Sstevel@tonic-gate     UINT32                      Alignment;
1331186507a7Smyers     UINT32                      AddressLength;
13327c478bd9Sstevel@tonic-gate 
1333186507a7Smyers } ACPI_RESOURCE_MEMORY32;
13347c478bd9Sstevel@tonic-gate 
1335186507a7Smyers typedef struct acpi_resource_fixed_memory32
13367c478bd9Sstevel@tonic-gate {
1337*30082d0cSmyers     UINT8                       WriteProtect;
1338186507a7Smyers     UINT32                      Address;
1339186507a7Smyers     UINT32                      AddressLength;
13407c478bd9Sstevel@tonic-gate 
1341186507a7Smyers } ACPI_RESOURCE_FIXED_MEMORY32;
13427c478bd9Sstevel@tonic-gate 
13437c478bd9Sstevel@tonic-gate typedef struct acpi_memory_attribute
13447c478bd9Sstevel@tonic-gate {
1345*30082d0cSmyers     UINT8                       WriteProtect;
1346*30082d0cSmyers     UINT8                       Caching;
1347*30082d0cSmyers     UINT8                       RangeType;
1348*30082d0cSmyers     UINT8                       Translation;
13497c478bd9Sstevel@tonic-gate 
13507c478bd9Sstevel@tonic-gate } ACPI_MEMORY_ATTRIBUTE;
13517c478bd9Sstevel@tonic-gate 
13527c478bd9Sstevel@tonic-gate typedef struct acpi_io_attribute
13537c478bd9Sstevel@tonic-gate {
1354*30082d0cSmyers     UINT8                       RangeType;
1355*30082d0cSmyers     UINT8                       Translation;
1356*30082d0cSmyers     UINT8                       TranslationType;
1357*30082d0cSmyers     UINT8                       Reserved1;
13587c478bd9Sstevel@tonic-gate 
13597c478bd9Sstevel@tonic-gate } ACPI_IO_ATTRIBUTE;
13607c478bd9Sstevel@tonic-gate 
13617c478bd9Sstevel@tonic-gate typedef union acpi_resource_attribute
13627c478bd9Sstevel@tonic-gate {
1363*30082d0cSmyers     ACPI_MEMORY_ATTRIBUTE       Mem;
13647c478bd9Sstevel@tonic-gate     ACPI_IO_ATTRIBUTE           Io;
1365*30082d0cSmyers 
1366*30082d0cSmyers     /* Used for the *WordSpace macros */
1367*30082d0cSmyers 
1368*30082d0cSmyers     UINT8                       TypeSpecific;
13697c478bd9Sstevel@tonic-gate 
13707c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ATTRIBUTE;
13717c478bd9Sstevel@tonic-gate 
13727c478bd9Sstevel@tonic-gate typedef struct acpi_resource_source
13737c478bd9Sstevel@tonic-gate {
1374*30082d0cSmyers     UINT8                       Index;
1375*30082d0cSmyers     UINT16                      StringLength;
13767c478bd9Sstevel@tonic-gate     char                        *StringPtr;
13777c478bd9Sstevel@tonic-gate 
13787c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_SOURCE;
13797c478bd9Sstevel@tonic-gate 
1380186507a7Smyers /* Fields common to all address descriptors, 16/32/64 bit */
1381186507a7Smyers 
1382186507a7Smyers #define ACPI_RESOURCE_ADDRESS_COMMON \
1383*30082d0cSmyers     UINT8                       ResourceType; \
1384*30082d0cSmyers     UINT8                       ProducerConsumer; \
1385*30082d0cSmyers     UINT8                       Decode; \
1386*30082d0cSmyers     UINT8                       MinAddressFixed; \
1387*30082d0cSmyers     UINT8                       MaxAddressFixed; \
1388*30082d0cSmyers     ACPI_RESOURCE_ATTRIBUTE     Info;
1389186507a7Smyers 
1390186507a7Smyers typedef struct acpi_resource_address
1391186507a7Smyers {
1392186507a7Smyers     ACPI_RESOURCE_ADDRESS_COMMON
1393186507a7Smyers 
1394186507a7Smyers } ACPI_RESOURCE_ADDRESS;
1395186507a7Smyers 
13967c478bd9Sstevel@tonic-gate typedef struct acpi_resource_address16
13977c478bd9Sstevel@tonic-gate {
1398186507a7Smyers     ACPI_RESOURCE_ADDRESS_COMMON
1399*30082d0cSmyers     UINT16                      Granularity;
1400*30082d0cSmyers     UINT16                      Minimum;
1401*30082d0cSmyers     UINT16                      Maximum;
1402*30082d0cSmyers     UINT16                      TranslationOffset;
1403*30082d0cSmyers     UINT16                      AddressLength;
14047c478bd9Sstevel@tonic-gate     ACPI_RESOURCE_SOURCE        ResourceSource;
14057c478bd9Sstevel@tonic-gate 
14067c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ADDRESS16;
14077c478bd9Sstevel@tonic-gate 
14087c478bd9Sstevel@tonic-gate typedef struct acpi_resource_address32
14097c478bd9Sstevel@tonic-gate {
1410186507a7Smyers     ACPI_RESOURCE_ADDRESS_COMMON
14117c478bd9Sstevel@tonic-gate     UINT32                      Granularity;
1412186507a7Smyers     UINT32                      Minimum;
1413186507a7Smyers     UINT32                      Maximum;
1414186507a7Smyers     UINT32                      TranslationOffset;
14157c478bd9Sstevel@tonic-gate     UINT32                      AddressLength;
14167c478bd9Sstevel@tonic-gate     ACPI_RESOURCE_SOURCE        ResourceSource;
14177c478bd9Sstevel@tonic-gate 
14187c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ADDRESS32;
14197c478bd9Sstevel@tonic-gate 
14207c478bd9Sstevel@tonic-gate typedef struct acpi_resource_address64
14217c478bd9Sstevel@tonic-gate {
1422186507a7Smyers     ACPI_RESOURCE_ADDRESS_COMMON
14237c478bd9Sstevel@tonic-gate     UINT64                      Granularity;
1424186507a7Smyers     UINT64                      Minimum;
1425186507a7Smyers     UINT64                      Maximum;
1426186507a7Smyers     UINT64                      TranslationOffset;
14277c478bd9Sstevel@tonic-gate     UINT64                      AddressLength;
14287c478bd9Sstevel@tonic-gate     ACPI_RESOURCE_SOURCE        ResourceSource;
14297c478bd9Sstevel@tonic-gate 
14307c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_ADDRESS64;
14317c478bd9Sstevel@tonic-gate 
1432186507a7Smyers typedef struct acpi_resource_extended_address64
1433186507a7Smyers {
1434186507a7Smyers     ACPI_RESOURCE_ADDRESS_COMMON
1435*30082d0cSmyers     UINT8                       RevisionID;
1436186507a7Smyers     UINT64                      Granularity;
1437186507a7Smyers     UINT64                      Minimum;
1438186507a7Smyers     UINT64                      Maximum;
1439186507a7Smyers     UINT64                      TranslationOffset;
1440186507a7Smyers     UINT64                      AddressLength;
1441*30082d0cSmyers     UINT64                      TypeSpecific;
1442186507a7Smyers 
1443186507a7Smyers } ACPI_RESOURCE_EXTENDED_ADDRESS64;
1444186507a7Smyers 
1445186507a7Smyers typedef struct acpi_resource_extended_irq
14467c478bd9Sstevel@tonic-gate {
1447*30082d0cSmyers     UINT8                       ProducerConsumer;
1448*30082d0cSmyers     UINT8                       Triggering;
1449*30082d0cSmyers     UINT8                       Polarity;
1450*30082d0cSmyers     UINT8                       Sharable;
1451*30082d0cSmyers     UINT8                       InterruptCount;
14527c478bd9Sstevel@tonic-gate     ACPI_RESOURCE_SOURCE        ResourceSource;
14537c478bd9Sstevel@tonic-gate     UINT32                      Interrupts[1];
14547c478bd9Sstevel@tonic-gate 
1455186507a7Smyers } ACPI_RESOURCE_EXTENDED_IRQ;
1456186507a7Smyers 
1457186507a7Smyers typedef struct acpi_resource_generic_register
1458186507a7Smyers {
1459*30082d0cSmyers     UINT8                       SpaceId;
1460*30082d0cSmyers     UINT8                       BitWidth;
1461*30082d0cSmyers     UINT8                       BitOffset;
1462*30082d0cSmyers     UINT8                       AccessSize;
1463186507a7Smyers     UINT64                      Address;
1464186507a7Smyers 
1465186507a7Smyers } ACPI_RESOURCE_GENERIC_REGISTER;
14667c478bd9Sstevel@tonic-gate 
14677c478bd9Sstevel@tonic-gate 
14687c478bd9Sstevel@tonic-gate /* ACPI_RESOURCE_TYPEs */
14697c478bd9Sstevel@tonic-gate 
1470186507a7Smyers #define ACPI_RESOURCE_TYPE_IRQ                  0
1471186507a7Smyers #define ACPI_RESOURCE_TYPE_DMA                  1
1472186507a7Smyers #define ACPI_RESOURCE_TYPE_START_DEPENDENT      2
1473186507a7Smyers #define ACPI_RESOURCE_TYPE_END_DEPENDENT        3
1474186507a7Smyers #define ACPI_RESOURCE_TYPE_IO                   4
1475186507a7Smyers #define ACPI_RESOURCE_TYPE_FIXED_IO             5
1476186507a7Smyers #define ACPI_RESOURCE_TYPE_VENDOR               6
1477186507a7Smyers #define ACPI_RESOURCE_TYPE_END_TAG              7
1478186507a7Smyers #define ACPI_RESOURCE_TYPE_MEMORY24             8
1479186507a7Smyers #define ACPI_RESOURCE_TYPE_MEMORY32             9
1480186507a7Smyers #define ACPI_RESOURCE_TYPE_FIXED_MEMORY32       10
1481186507a7Smyers #define ACPI_RESOURCE_TYPE_ADDRESS16            11
1482186507a7Smyers #define ACPI_RESOURCE_TYPE_ADDRESS32            12
1483186507a7Smyers #define ACPI_RESOURCE_TYPE_ADDRESS64            13
1484186507a7Smyers #define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64   14  /* ACPI 3.0 */
1485186507a7Smyers #define ACPI_RESOURCE_TYPE_EXTENDED_IRQ         15
1486186507a7Smyers #define ACPI_RESOURCE_TYPE_GENERIC_REGISTER     16
1487186507a7Smyers #define ACPI_RESOURCE_TYPE_MAX                  16
1488186507a7Smyers 
14897c478bd9Sstevel@tonic-gate 
14907c478bd9Sstevel@tonic-gate typedef union acpi_resource_data
14917c478bd9Sstevel@tonic-gate {
1492186507a7Smyers     ACPI_RESOURCE_IRQ                   Irq;
1493186507a7Smyers     ACPI_RESOURCE_DMA                   Dma;
1494186507a7Smyers     ACPI_RESOURCE_START_DEPENDENT       StartDpf;
1495186507a7Smyers     ACPI_RESOURCE_IO                    Io;
1496186507a7Smyers     ACPI_RESOURCE_FIXED_IO              FixedIo;
1497186507a7Smyers     ACPI_RESOURCE_VENDOR                Vendor;
1498*30082d0cSmyers     ACPI_RESOURCE_VENDOR_TYPED          VendorTyped;
1499186507a7Smyers     ACPI_RESOURCE_END_TAG               EndTag;
1500186507a7Smyers     ACPI_RESOURCE_MEMORY24              Memory24;
1501186507a7Smyers     ACPI_RESOURCE_MEMORY32              Memory32;
1502186507a7Smyers     ACPI_RESOURCE_FIXED_MEMORY32        FixedMemory32;
1503186507a7Smyers     ACPI_RESOURCE_ADDRESS16             Address16;
1504186507a7Smyers     ACPI_RESOURCE_ADDRESS32             Address32;
1505186507a7Smyers     ACPI_RESOURCE_ADDRESS64             Address64;
1506186507a7Smyers     ACPI_RESOURCE_EXTENDED_ADDRESS64    ExtAddress64;
1507186507a7Smyers     ACPI_RESOURCE_EXTENDED_IRQ          ExtendedIrq;
1508186507a7Smyers     ACPI_RESOURCE_GENERIC_REGISTER      GenericReg;
1509186507a7Smyers 
1510186507a7Smyers     /* Common fields */
1511186507a7Smyers 
1512186507a7Smyers     ACPI_RESOURCE_ADDRESS               Address;        /* Common 16/32/64 address fields */
15137c478bd9Sstevel@tonic-gate 
15147c478bd9Sstevel@tonic-gate } ACPI_RESOURCE_DATA;
15157c478bd9Sstevel@tonic-gate 
1516186507a7Smyers 
15177c478bd9Sstevel@tonic-gate typedef struct acpi_resource
15187c478bd9Sstevel@tonic-gate {
1519186507a7Smyers     UINT32                      Type;
15207c478bd9Sstevel@tonic-gate     UINT32                      Length;
15217c478bd9Sstevel@tonic-gate     ACPI_RESOURCE_DATA          Data;
15227c478bd9Sstevel@tonic-gate 
15237c478bd9Sstevel@tonic-gate } ACPI_RESOURCE;
15247c478bd9Sstevel@tonic-gate 
1525*30082d0cSmyers /* restore default alignment */
1526186507a7Smyers 
1527*30082d0cSmyers #pragma pack()
15287c478bd9Sstevel@tonic-gate 
15297c478bd9Sstevel@tonic-gate 
1530*30082d0cSmyers #define ACPI_RS_SIZE_MIN                    12
1531*30082d0cSmyers #define ACPI_RS_SIZE_NO_DATA                8       /* Id + Length fields */
1532*30082d0cSmyers #define ACPI_RS_SIZE(Type)                  (UINT32) (ACPI_RS_SIZE_NO_DATA + sizeof (Type))
15337c478bd9Sstevel@tonic-gate 
1534*30082d0cSmyers #define ACPI_NEXT_RESOURCE(Res)             (ACPI_RESOURCE *)((UINT8 *) Res + Res->Length)
15357c478bd9Sstevel@tonic-gate 
15367c478bd9Sstevel@tonic-gate /*
15377c478bd9Sstevel@tonic-gate  * END: of definitions for Resource Attributes
15387c478bd9Sstevel@tonic-gate  */
15397c478bd9Sstevel@tonic-gate 
15407c478bd9Sstevel@tonic-gate 
15417c478bd9Sstevel@tonic-gate typedef struct acpi_pci_routing_table
15427c478bd9Sstevel@tonic-gate {
15437c478bd9Sstevel@tonic-gate     UINT32                      Length;
15447c478bd9Sstevel@tonic-gate     UINT32                      Pin;
15457c478bd9Sstevel@tonic-gate     ACPI_INTEGER                Address;        /* here for 64-bit alignment */
15467c478bd9Sstevel@tonic-gate     UINT32                      SourceIndex;
15477c478bd9Sstevel@tonic-gate     char                        Source[4];      /* pad to 64 bits so sizeof() works in all cases */
15487c478bd9Sstevel@tonic-gate 
15497c478bd9Sstevel@tonic-gate } ACPI_PCI_ROUTING_TABLE;
15507c478bd9Sstevel@tonic-gate 
15517c478bd9Sstevel@tonic-gate /*
15527c478bd9Sstevel@tonic-gate  * END: of definitions for PCI Routing tables
15537c478bd9Sstevel@tonic-gate  */
15547c478bd9Sstevel@tonic-gate 
15557c478bd9Sstevel@tonic-gate 
15567c478bd9Sstevel@tonic-gate #endif /* __ACTYPES_H__ */
1557