xref: /onnv-gate/usr/src/uts/intel/io/acpica/utilities/utglobal.c (revision 11225:eb6056029d84)
13446Smrj /******************************************************************************
23446Smrj  *
33446Smrj  * Module Name: utglobal - Global variables for the ACPI subsystem
43446Smrj  *
53446Smrj  *****************************************************************************/
63446Smrj 
73446Smrj /******************************************************************************
83446Smrj  *
93446Smrj  * 1. Copyright Notice
103446Smrj  *
119980SDana.Myers@Sun.COM  * Some or all of this work - Copyright (c) 1999 - 2009, Intel Corp.
123446Smrj  * All rights reserved.
133446Smrj  *
143446Smrj  * 2. License
153446Smrj  *
163446Smrj  * 2.1. This is your license from Intel Corp. under its intellectual property
173446Smrj  * rights.  You may have additional license terms from the party that provided
183446Smrj  * you this software, covering your right to use that party's intellectual
193446Smrj  * property rights.
203446Smrj  *
213446Smrj  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
223446Smrj  * copy of the source code appearing in this file ("Covered Code") an
233446Smrj  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
243446Smrj  * base code distributed originally by Intel ("Original Intel Code") to copy,
253446Smrj  * make derivatives, distribute, use and display any portion of the Covered
263446Smrj  * Code in any form, with the right to sublicense such rights; and
273446Smrj  *
283446Smrj  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
293446Smrj  * license (with the right to sublicense), under only those claims of Intel
303446Smrj  * patents that are infringed by the Original Intel Code, to make, use, sell,
313446Smrj  * offer to sell, and import the Covered Code and derivative works thereof
323446Smrj  * solely to the minimum extent necessary to exercise the above copyright
333446Smrj  * license, and in no event shall the patent license extend to any additions
343446Smrj  * to or modifications of the Original Intel Code.  No other license or right
353446Smrj  * is granted directly or by implication, estoppel or otherwise;
363446Smrj  *
373446Smrj  * The above copyright and patent license is granted only if the following
383446Smrj  * conditions are met:
393446Smrj  *
403446Smrj  * 3. Conditions
413446Smrj  *
423446Smrj  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
433446Smrj  * Redistribution of source code of any substantial portion of the Covered
443446Smrj  * Code or modification with rights to further distribute source must include
453446Smrj  * the above Copyright Notice, the above License, this list of Conditions,
463446Smrj  * and the following Disclaimer and Export Compliance provision.  In addition,
473446Smrj  * Licensee must cause all Covered Code to which Licensee contributes to
483446Smrj  * contain a file documenting the changes Licensee made to create that Covered
493446Smrj  * Code and the date of any change.  Licensee must include in that file the
503446Smrj  * documentation of any changes made by any predecessor Licensee.  Licensee
513446Smrj  * must include a prominent statement that the modification is derived,
523446Smrj  * directly or indirectly, from Original Intel Code.
533446Smrj  *
543446Smrj  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
553446Smrj  * Redistribution of source code of any substantial portion of the Covered
563446Smrj  * Code or modification without rights to further distribute source must
573446Smrj  * include the following Disclaimer and Export Compliance provision in the
583446Smrj  * documentation and/or other materials provided with distribution.  In
593446Smrj  * addition, Licensee may not authorize further sublicense of source of any
603446Smrj  * portion of the Covered Code, and must include terms to the effect that the
613446Smrj  * license from Licensee to its licensee is limited to the intellectual
623446Smrj  * property embodied in the software Licensee provides to its licensee, and
633446Smrj  * not to intellectual property embodied in modifications its licensee may
643446Smrj  * make.
653446Smrj  *
663446Smrj  * 3.3. Redistribution of Executable. Redistribution in executable form of any
673446Smrj  * substantial portion of the Covered Code or modification must reproduce the
683446Smrj  * above Copyright Notice, and the following Disclaimer and Export Compliance
693446Smrj  * provision in the documentation and/or other materials provided with the
703446Smrj  * distribution.
713446Smrj  *
723446Smrj  * 3.4. Intel retains all right, title, and interest in and to the Original
733446Smrj  * Intel Code.
743446Smrj  *
753446Smrj  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
763446Smrj  * Intel shall be used in advertising or otherwise to promote the sale, use or
773446Smrj  * other dealings in products derived from or relating to the Covered Code
783446Smrj  * without prior written authorization from Intel.
793446Smrj  *
803446Smrj  * 4. Disclaimer and Export Compliance
813446Smrj  *
823446Smrj  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
833446Smrj  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
843446Smrj  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
853446Smrj  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
863446Smrj  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
873446Smrj  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
883446Smrj  * PARTICULAR PURPOSE.
893446Smrj  *
903446Smrj  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
913446Smrj  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
923446Smrj  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
933446Smrj  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
943446Smrj  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
953446Smrj  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
963446Smrj  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
973446Smrj  * LIMITED REMEDY.
983446Smrj  *
993446Smrj  * 4.3. Licensee shall not export, either directly or indirectly, any of this
1003446Smrj  * software or system incorporating such software without first obtaining any
1013446Smrj  * required license or other approval from the U. S. Department of Commerce or
1023446Smrj  * any other agency or department of the United States Government.  In the
1033446Smrj  * event Licensee exports any such software from the United States or
1043446Smrj  * re-exports any such software from a foreign destination, Licensee shall
1053446Smrj  * ensure that the distribution and export/re-export of the software is in
1063446Smrj  * compliance with all laws, regulations, orders, or other restrictions of the
1073446Smrj  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
1083446Smrj  * any of its subsidiaries will export/re-export any technical data, process,
1093446Smrj  * software, or service, directly or indirectly, to any country for which the
1103446Smrj  * United States government or any agency thereof requires an export license,
1113446Smrj  * other governmental approval, or letter of assurance, without first obtaining
1123446Smrj  * such license, approval or letter.
1133446Smrj  *
1143446Smrj  *****************************************************************************/
1153446Smrj 
1163446Smrj #define __UTGLOBAL_C__
1173446Smrj #define DEFINE_ACPI_GLOBALS
1183446Smrj 
1193446Smrj #include "acpi.h"
1209980SDana.Myers@Sun.COM #include "accommon.h"
1213446Smrj #include "acnamesp.h"
1223446Smrj 
1233446Smrj #define _COMPONENT          ACPI_UTILITIES
1243446Smrj         ACPI_MODULE_NAME    ("utglobal")
1253446Smrj 
1263446Smrj 
1273446Smrj /*******************************************************************************
1283446Smrj  *
1293446Smrj  * Static global variable initialization.
1303446Smrj  *
1313446Smrj  ******************************************************************************/
1323446Smrj 
1333446Smrj /*
1343446Smrj  * We want the debug switches statically initialized so they
1353446Smrj  * are already set when the debugger is entered.
1363446Smrj  */
1373446Smrj 
1383446Smrj /* Debug switch - level and trace mask */
1393446Smrj 
1403446Smrj #ifdef ACPI_DEBUG_OUTPUT
1413446Smrj UINT32                      AcpiDbgLevel = ACPI_DEBUG_DEFAULT;
1423446Smrj #else
1433446Smrj UINT32                      AcpiDbgLevel = ACPI_NORMAL_DEFAULT;
1443446Smrj #endif
1453446Smrj 
1463446Smrj /* Debug switch - layer (component) mask */
1473446Smrj 
1483446Smrj UINT32                      AcpiDbgLayer = ACPI_COMPONENT_DEFAULT;
1493446Smrj UINT32                      AcpiGbl_NestingLevel = 0;
1503446Smrj 
1513446Smrj /* Debugger globals */
1523446Smrj 
1533446Smrj BOOLEAN                     AcpiGbl_DbTerminateThreads = FALSE;
1543446Smrj BOOLEAN                     AcpiGbl_AbortMethod = FALSE;
1553446Smrj BOOLEAN                     AcpiGbl_MethodExecuting = FALSE;
1563446Smrj 
1573446Smrj /* System flags */
1583446Smrj 
1593446Smrj UINT32                      AcpiGbl_StartupFlags = 0;
1603446Smrj 
1613446Smrj /* System starts uninitialized */
1623446Smrj 
1633446Smrj BOOLEAN                     AcpiGbl_Shutdown = TRUE;
1643446Smrj 
1653446Smrj const char                  *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT] =
1663446Smrj {
1673446Smrj     "\\_S0_",
1683446Smrj     "\\_S1_",
1693446Smrj     "\\_S2_",
1703446Smrj     "\\_S3_",
1713446Smrj     "\\_S4_",
1723446Smrj     "\\_S5_"
1733446Smrj };
1743446Smrj 
175*11225SDana.Myers@Sun.COM const char                  *AcpiGbl_LowestDstateNames[ACPI_NUM_SxW_METHODS] =
176*11225SDana.Myers@Sun.COM {
177*11225SDana.Myers@Sun.COM     "_S0W",
178*11225SDana.Myers@Sun.COM     "_S1W",
179*11225SDana.Myers@Sun.COM     "_S2W",
180*11225SDana.Myers@Sun.COM     "_S3W",
181*11225SDana.Myers@Sun.COM     "_S4W"
182*11225SDana.Myers@Sun.COM };
183*11225SDana.Myers@Sun.COM 
184*11225SDana.Myers@Sun.COM const char                  *AcpiGbl_HighestDstateNames[ACPI_NUM_SxD_METHODS] =
1853446Smrj {
1863446Smrj     "_S1D",
1873446Smrj     "_S2D",
1883446Smrj     "_S3D",
1893446Smrj     "_S4D"
1903446Smrj };
1913446Smrj 
1923446Smrj 
1933446Smrj /*******************************************************************************
1943446Smrj  *
1957851SDana.Myers@Sun.COM  * FUNCTION:    AcpiFormatException
1967851SDana.Myers@Sun.COM  *
1977851SDana.Myers@Sun.COM  * PARAMETERS:  Status       - The ACPI_STATUS code to be formatted
1987851SDana.Myers@Sun.COM  *
1997851SDana.Myers@Sun.COM  * RETURN:      A string containing the exception text. A valid pointer is
2007851SDana.Myers@Sun.COM  *              always returned.
2017851SDana.Myers@Sun.COM  *
2027851SDana.Myers@Sun.COM  * DESCRIPTION: This function translates an ACPI exception into an ASCII string
2037851SDana.Myers@Sun.COM  *              It is here instead of utxface.c so it is always present.
2047851SDana.Myers@Sun.COM  *
2057851SDana.Myers@Sun.COM  ******************************************************************************/
2067851SDana.Myers@Sun.COM 
2077851SDana.Myers@Sun.COM const char *
AcpiFormatException(ACPI_STATUS Status)2087851SDana.Myers@Sun.COM AcpiFormatException (
2097851SDana.Myers@Sun.COM     ACPI_STATUS             Status)
2107851SDana.Myers@Sun.COM {
2117851SDana.Myers@Sun.COM     const char              *Exception = NULL;
2127851SDana.Myers@Sun.COM 
2137851SDana.Myers@Sun.COM 
2147851SDana.Myers@Sun.COM     ACPI_FUNCTION_ENTRY ();
2157851SDana.Myers@Sun.COM 
2167851SDana.Myers@Sun.COM 
2177851SDana.Myers@Sun.COM     Exception = AcpiUtValidateException (Status);
2187851SDana.Myers@Sun.COM     if (!Exception)
2197851SDana.Myers@Sun.COM     {
2207851SDana.Myers@Sun.COM         /* Exception code was not recognized */
2217851SDana.Myers@Sun.COM 
2227851SDana.Myers@Sun.COM         ACPI_ERROR ((AE_INFO,
2237851SDana.Myers@Sun.COM             "Unknown exception code: 0x%8.8X", Status));
2247851SDana.Myers@Sun.COM 
2257851SDana.Myers@Sun.COM         Exception = "UNKNOWN_STATUS_CODE";
2267851SDana.Myers@Sun.COM     }
2277851SDana.Myers@Sun.COM 
2287851SDana.Myers@Sun.COM     return (ACPI_CAST_PTR (const char, Exception));
2297851SDana.Myers@Sun.COM }
2307851SDana.Myers@Sun.COM 
2317851SDana.Myers@Sun.COM ACPI_EXPORT_SYMBOL (AcpiFormatException)
2327851SDana.Myers@Sun.COM 
2337851SDana.Myers@Sun.COM 
2347851SDana.Myers@Sun.COM /*******************************************************************************
2357851SDana.Myers@Sun.COM  *
2363446Smrj  * Namespace globals
2373446Smrj  *
2383446Smrj  ******************************************************************************/
2393446Smrj 
2403446Smrj /*
2413446Smrj  * Predefined ACPI Names (Built-in to the Interpreter)
2423446Smrj  *
2433446Smrj  * NOTES:
2443446Smrj  * 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
2453446Smrj  *    during the initialization sequence.
2463446Smrj  * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
2473446Smrj  *    perform a Notify() operation on it.
2483446Smrj  */
2493446Smrj const ACPI_PREDEFINED_NAMES     AcpiGbl_PreDefinedNames[] =
2503446Smrj {
2513446Smrj     {"_GPE",    ACPI_TYPE_LOCAL_SCOPE,      NULL},
2523446Smrj     {"_PR_",    ACPI_TYPE_LOCAL_SCOPE,      NULL},
2533446Smrj     {"_SB_",    ACPI_TYPE_DEVICE,           NULL},
2543446Smrj     {"_SI_",    ACPI_TYPE_LOCAL_SCOPE,      NULL},
2553446Smrj     {"_TZ_",    ACPI_TYPE_THERMAL,          NULL},
2563446Smrj     {"_REV",    ACPI_TYPE_INTEGER,          (char *) ACPI_CA_SUPPORT_LEVEL},
2573446Smrj     {"_OS_",    ACPI_TYPE_STRING,           ACPI_OS_NAME},
2583446Smrj     {"_GL_",    ACPI_TYPE_MUTEX,            (char *) 1},
2593446Smrj 
2603446Smrj #if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
2613446Smrj     {"_OSI",    ACPI_TYPE_METHOD,           (char *) 1},
2623446Smrj #endif
2633446Smrj 
2643446Smrj     /* Table terminator */
2653446Smrj 
2663446Smrj     {NULL,      ACPI_TYPE_ANY,              NULL}
2673446Smrj };
2683446Smrj 
2693446Smrj /*
2703446Smrj  * Properties of the ACPI Object Types, both internal and external.
2713446Smrj  * The table is indexed by values of ACPI_OBJECT_TYPE
2723446Smrj  */
2737851SDana.Myers@Sun.COM const UINT8                     AcpiGbl_NsProperties[ACPI_NUM_NS_TYPES] =
2743446Smrj {
2753446Smrj     ACPI_NS_NORMAL,                     /* 00 Any              */
2763446Smrj     ACPI_NS_NORMAL,                     /* 01 Number           */
2773446Smrj     ACPI_NS_NORMAL,                     /* 02 String           */
2783446Smrj     ACPI_NS_NORMAL,                     /* 03 Buffer           */
2793446Smrj     ACPI_NS_NORMAL,                     /* 04 Package          */
2803446Smrj     ACPI_NS_NORMAL,                     /* 05 FieldUnit        */
2813446Smrj     ACPI_NS_NEWSCOPE,                   /* 06 Device           */
2823446Smrj     ACPI_NS_NORMAL,                     /* 07 Event            */
2833446Smrj     ACPI_NS_NEWSCOPE,                   /* 08 Method           */
2843446Smrj     ACPI_NS_NORMAL,                     /* 09 Mutex            */
2853446Smrj     ACPI_NS_NORMAL,                     /* 10 Region           */
2863446Smrj     ACPI_NS_NEWSCOPE,                   /* 11 Power            */
2873446Smrj     ACPI_NS_NEWSCOPE,                   /* 12 Processor        */
2883446Smrj     ACPI_NS_NEWSCOPE,                   /* 13 Thermal          */
2893446Smrj     ACPI_NS_NORMAL,                     /* 14 BufferField      */
2903446Smrj     ACPI_NS_NORMAL,                     /* 15 DdbHandle        */
2913446Smrj     ACPI_NS_NORMAL,                     /* 16 Debug Object     */
2923446Smrj     ACPI_NS_NORMAL,                     /* 17 DefField         */
2933446Smrj     ACPI_NS_NORMAL,                     /* 18 BankField        */
2943446Smrj     ACPI_NS_NORMAL,                     /* 19 IndexField       */
2953446Smrj     ACPI_NS_NORMAL,                     /* 20 Reference        */
2963446Smrj     ACPI_NS_NORMAL,                     /* 21 Alias            */
2973446Smrj     ACPI_NS_NORMAL,                     /* 22 MethodAlias      */
2983446Smrj     ACPI_NS_NORMAL,                     /* 23 Notify           */
2993446Smrj     ACPI_NS_NORMAL,                     /* 24 Address Handler  */
3003446Smrj     ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL,   /* 25 Resource Desc    */
3013446Smrj     ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL,   /* 26 Resource Field   */
3023446Smrj     ACPI_NS_NEWSCOPE,                   /* 27 Scope            */
3033446Smrj     ACPI_NS_NORMAL,                     /* 28 Extra            */
3043446Smrj     ACPI_NS_NORMAL,                     /* 29 Data             */
3053446Smrj     ACPI_NS_NORMAL                      /* 30 Invalid          */
3063446Smrj };
3073446Smrj 
3083446Smrj 
3093446Smrj /* Hex to ASCII conversion table */
3103446Smrj 
3113446Smrj static const char           AcpiGbl_HexToAscii[] =
3123446Smrj {
3133446Smrj     '0','1','2','3','4','5','6','7',
3143446Smrj     '8','9','A','B','C','D','E','F'
3153446Smrj };
3163446Smrj 
3173446Smrj 
3183446Smrj /*******************************************************************************
3193446Smrj  *
3203446Smrj  * FUNCTION:    AcpiUtHexToAsciiChar
3213446Smrj  *
3223446Smrj  * PARAMETERS:  Integer             - Contains the hex digit
3233446Smrj  *              Position            - bit position of the digit within the
3243446Smrj  *                                    integer (multiple of 4)
3253446Smrj  *
3263446Smrj  * RETURN:      The converted Ascii character
3273446Smrj  *
3283446Smrj  * DESCRIPTION: Convert a hex digit to an Ascii character
3293446Smrj  *
3303446Smrj  ******************************************************************************/
3313446Smrj 
3323446Smrj char
AcpiUtHexToAsciiChar(ACPI_INTEGER Integer,UINT32 Position)3333446Smrj AcpiUtHexToAsciiChar (
3343446Smrj     ACPI_INTEGER            Integer,
3353446Smrj     UINT32                  Position)
3363446Smrj {
3373446Smrj 
3383446Smrj     return (AcpiGbl_HexToAscii[(Integer >> Position) & 0xF]);
3393446Smrj }
3403446Smrj 
3413446Smrj 
3423446Smrj /******************************************************************************
3433446Smrj  *
3443446Smrj  * Event and Hardware globals
3453446Smrj  *
3463446Smrj  ******************************************************************************/
3473446Smrj 
3483446Smrj ACPI_BIT_REGISTER_INFO      AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG] =
3493446Smrj {
3503446Smrj     /* Name                                     Parent Register             Register Bit Position                   Register Bit Mask       */
3513446Smrj 
3523446Smrj     /* ACPI_BITREG_TIMER_STATUS         */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_TIMER_STATUS,          ACPI_BITMASK_TIMER_STATUS},
3533446Smrj     /* ACPI_BITREG_BUS_MASTER_STATUS    */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_BUS_MASTER_STATUS,     ACPI_BITMASK_BUS_MASTER_STATUS},
3543446Smrj     /* ACPI_BITREG_GLOBAL_LOCK_STATUS   */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_GLOBAL_LOCK_STATUS,    ACPI_BITMASK_GLOBAL_LOCK_STATUS},
3553446Smrj     /* ACPI_BITREG_POWER_BUTTON_STATUS  */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_POWER_BUTTON_STATUS,   ACPI_BITMASK_POWER_BUTTON_STATUS},
3563446Smrj     /* ACPI_BITREG_SLEEP_BUTTON_STATUS  */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_SLEEP_BUTTON_STATUS,   ACPI_BITMASK_SLEEP_BUTTON_STATUS},
3573446Smrj     /* ACPI_BITREG_RT_CLOCK_STATUS      */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_RT_CLOCK_STATUS,       ACPI_BITMASK_RT_CLOCK_STATUS},
3583446Smrj     /* ACPI_BITREG_WAKE_STATUS          */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_WAKE_STATUS,           ACPI_BITMASK_WAKE_STATUS},
3593446Smrj     /* ACPI_BITREG_PCIEXP_WAKE_STATUS   */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_PCIEXP_WAKE_STATUS,    ACPI_BITMASK_PCIEXP_WAKE_STATUS},
3603446Smrj 
3613446Smrj     /* ACPI_BITREG_TIMER_ENABLE         */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_TIMER_ENABLE,          ACPI_BITMASK_TIMER_ENABLE},
3623446Smrj     /* ACPI_BITREG_GLOBAL_LOCK_ENABLE   */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE,    ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
3633446Smrj     /* ACPI_BITREG_POWER_BUTTON_ENABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_POWER_BUTTON_ENABLE,   ACPI_BITMASK_POWER_BUTTON_ENABLE},
3643446Smrj     /* ACPI_BITREG_SLEEP_BUTTON_ENABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE,   ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
3653446Smrj     /* ACPI_BITREG_RT_CLOCK_ENABLE      */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_RT_CLOCK_ENABLE,       ACPI_BITMASK_RT_CLOCK_ENABLE},
3663446Smrj     /* ACPI_BITREG_PCIEXP_WAKE_DISABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE,   ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
3673446Smrj 
3683446Smrj     /* ACPI_BITREG_SCI_ENABLE           */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SCI_ENABLE,            ACPI_BITMASK_SCI_ENABLE},
3693446Smrj     /* ACPI_BITREG_BUS_MASTER_RLD       */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_BUS_MASTER_RLD,        ACPI_BITMASK_BUS_MASTER_RLD},
3703446Smrj     /* ACPI_BITREG_GLOBAL_LOCK_RELEASE  */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE,   ACPI_BITMASK_GLOBAL_LOCK_RELEASE},
3719980SDana.Myers@Sun.COM     /* ACPI_BITREG_SLEEP_TYPE           */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SLEEP_TYPE,            ACPI_BITMASK_SLEEP_TYPE},
3723446Smrj     /* ACPI_BITREG_SLEEP_ENABLE         */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SLEEP_ENABLE,          ACPI_BITMASK_SLEEP_ENABLE},
3733446Smrj 
3743446Smrj     /* ACPI_BITREG_ARB_DIS              */   {ACPI_REGISTER_PM2_CONTROL,  ACPI_BITPOSITION_ARB_DISABLE,           ACPI_BITMASK_ARB_DISABLE}
3753446Smrj };
3763446Smrj 
3773446Smrj 
3783446Smrj ACPI_FIXED_EVENT_INFO       AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] =
3793446Smrj {
3803446Smrj     /* ACPI_EVENT_PMTIMER       */  {ACPI_BITREG_TIMER_STATUS,          ACPI_BITREG_TIMER_ENABLE,        ACPI_BITMASK_TIMER_STATUS,          ACPI_BITMASK_TIMER_ENABLE},
3813446Smrj     /* ACPI_EVENT_GLOBAL        */  {ACPI_BITREG_GLOBAL_LOCK_STATUS,    ACPI_BITREG_GLOBAL_LOCK_ENABLE,  ACPI_BITMASK_GLOBAL_LOCK_STATUS,    ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
3823446Smrj     /* ACPI_EVENT_POWER_BUTTON  */  {ACPI_BITREG_POWER_BUTTON_STATUS,   ACPI_BITREG_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_STATUS,   ACPI_BITMASK_POWER_BUTTON_ENABLE},
3833446Smrj     /* ACPI_EVENT_SLEEP_BUTTON  */  {ACPI_BITREG_SLEEP_BUTTON_STATUS,   ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS,   ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
3843446Smrj     /* ACPI_EVENT_RTC           */  {ACPI_BITREG_RT_CLOCK_STATUS,       ACPI_BITREG_RT_CLOCK_ENABLE,     ACPI_BITMASK_RT_CLOCK_STATUS,       ACPI_BITMASK_RT_CLOCK_ENABLE},
3853446Smrj };
3863446Smrj 
3873446Smrj /*******************************************************************************
3883446Smrj  *
3893446Smrj  * FUNCTION:    AcpiUtGetRegionName
3903446Smrj  *
3913446Smrj  * PARAMETERS:  None.
3923446Smrj  *
3933446Smrj  * RETURN:      Status
3943446Smrj  *
3953446Smrj  * DESCRIPTION: Translate a Space ID into a name string (Debug only)
3963446Smrj  *
3973446Smrj  ******************************************************************************/
3983446Smrj 
3993446Smrj /* Region type decoding */
4003446Smrj 
4013446Smrj const char        *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
4023446Smrj {
4033446Smrj     "SystemMemory",
4043446Smrj     "SystemIO",
4053446Smrj     "PCI_Config",
4063446Smrj     "EmbeddedControl",
4073446Smrj     "SMBus",
4089980SDana.Myers@Sun.COM     "SystemCMOS",
4093446Smrj     "PCIBARTarget",
410*11225SDana.Myers@Sun.COM     "IPMI",
4113446Smrj     "DataTable"
4123446Smrj };
4133446Smrj 
4143446Smrj 
4153446Smrj char *
AcpiUtGetRegionName(UINT8 SpaceId)4163446Smrj AcpiUtGetRegionName (
4173446Smrj     UINT8                   SpaceId)
4183446Smrj {
4193446Smrj 
4203446Smrj     if (SpaceId >= ACPI_USER_REGION_BEGIN)
4213446Smrj     {
4223446Smrj         return ("UserDefinedRegion");
4233446Smrj     }
4243446Smrj     else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS)
4253446Smrj     {
4263446Smrj         return ("InvalidSpaceId");
4273446Smrj     }
4283446Smrj 
4293446Smrj     return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId]));
4303446Smrj }
4313446Smrj 
4323446Smrj 
4333446Smrj /*******************************************************************************
4343446Smrj  *
4353446Smrj  * FUNCTION:    AcpiUtGetEventName
4363446Smrj  *
4373446Smrj  * PARAMETERS:  None.
4383446Smrj  *
4393446Smrj  * RETURN:      Status
4403446Smrj  *
4413446Smrj  * DESCRIPTION: Translate a Event ID into a name string (Debug only)
4423446Smrj  *
4433446Smrj  ******************************************************************************/
4443446Smrj 
4453446Smrj /* Event type decoding */
4463446Smrj 
4473446Smrj static const char        *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] =
4483446Smrj {
4493446Smrj     "PM_Timer",
4503446Smrj     "GlobalLock",
4513446Smrj     "PowerButton",
4523446Smrj     "SleepButton",
4533446Smrj     "RealTimeClock",
4543446Smrj };
4553446Smrj 
4563446Smrj 
4573446Smrj char *
AcpiUtGetEventName(UINT32 EventId)4583446Smrj AcpiUtGetEventName (
4593446Smrj     UINT32                  EventId)
4603446Smrj {
4613446Smrj 
4623446Smrj     if (EventId > ACPI_EVENT_MAX)
4633446Smrj     {
4643446Smrj         return ("InvalidEventID");
4653446Smrj     }
4663446Smrj 
4673446Smrj     return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId]));
4683446Smrj }
4693446Smrj 
4703446Smrj 
4713446Smrj /*******************************************************************************
4723446Smrj  *
4733446Smrj  * FUNCTION:    AcpiUtGetTypeName
4743446Smrj  *
4753446Smrj  * PARAMETERS:  None.
4763446Smrj  *
4773446Smrj  * RETURN:      Status
4783446Smrj  *
4793446Smrj  * DESCRIPTION: Translate a Type ID into a name string (Debug only)
4803446Smrj  *
4813446Smrj  ******************************************************************************/
4823446Smrj 
4833446Smrj /*
4843446Smrj  * Elements of AcpiGbl_NsTypeNames below must match
4853446Smrj  * one-to-one with values of ACPI_OBJECT_TYPE
4863446Smrj  *
4873446Smrj  * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching;
4883446Smrj  * when stored in a table it really means that we have thus far seen no
4893446Smrj  * evidence to indicate what type is actually going to be stored for this entry.
4903446Smrj  */
4913446Smrj static const char           AcpiGbl_BadType[] = "UNDEFINED";
4923446Smrj 
4933446Smrj /* Printable names of the ACPI object types */
4943446Smrj 
4953446Smrj static const char           *AcpiGbl_NsTypeNames[] =
4963446Smrj {
4973446Smrj     /* 00 */ "Untyped",
4983446Smrj     /* 01 */ "Integer",
4993446Smrj     /* 02 */ "String",
5003446Smrj     /* 03 */ "Buffer",
5013446Smrj     /* 04 */ "Package",
5023446Smrj     /* 05 */ "FieldUnit",
5033446Smrj     /* 06 */ "Device",
5043446Smrj     /* 07 */ "Event",
5053446Smrj     /* 08 */ "Method",
5063446Smrj     /* 09 */ "Mutex",
5073446Smrj     /* 10 */ "Region",
5083446Smrj     /* 11 */ "Power",
5093446Smrj     /* 12 */ "Processor",
5103446Smrj     /* 13 */ "Thermal",
5113446Smrj     /* 14 */ "BufferField",
5123446Smrj     /* 15 */ "DdbHandle",
5133446Smrj     /* 16 */ "DebugObject",
5143446Smrj     /* 17 */ "RegionField",
5153446Smrj     /* 18 */ "BankField",
5163446Smrj     /* 19 */ "IndexField",
5173446Smrj     /* 20 */ "Reference",
5183446Smrj     /* 21 */ "Alias",
5193446Smrj     /* 22 */ "MethodAlias",
5203446Smrj     /* 23 */ "Notify",
5213446Smrj     /* 24 */ "AddrHandler",
5223446Smrj     /* 25 */ "ResourceDesc",
5233446Smrj     /* 26 */ "ResourceFld",
5243446Smrj     /* 27 */ "Scope",
5253446Smrj     /* 28 */ "Extra",
5263446Smrj     /* 29 */ "Data",
5273446Smrj     /* 30 */ "Invalid"
5283446Smrj };
5293446Smrj 
5303446Smrj 
5313446Smrj char *
AcpiUtGetTypeName(ACPI_OBJECT_TYPE Type)5323446Smrj AcpiUtGetTypeName (
5333446Smrj     ACPI_OBJECT_TYPE        Type)
5343446Smrj {
5353446Smrj 
5363446Smrj     if (Type > ACPI_TYPE_INVALID)
5373446Smrj     {
5383446Smrj         return (ACPI_CAST_PTR (char, AcpiGbl_BadType));
5393446Smrj     }
5403446Smrj 
5413446Smrj     return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type]));
5423446Smrj }
5433446Smrj 
5443446Smrj 
5453446Smrj char *
AcpiUtGetObjectTypeName(ACPI_OPERAND_OBJECT * ObjDesc)5463446Smrj AcpiUtGetObjectTypeName (
5473446Smrj     ACPI_OPERAND_OBJECT     *ObjDesc)
5483446Smrj {
5493446Smrj 
5503446Smrj     if (!ObjDesc)
5513446Smrj     {
5523446Smrj         return ("[NULL Object Descriptor]");
5533446Smrj     }
5543446Smrj 
5559980SDana.Myers@Sun.COM     return (AcpiUtGetTypeName (ObjDesc->Common.Type));
5563446Smrj }
5573446Smrj 
5583446Smrj 
5593446Smrj /*******************************************************************************
5603446Smrj  *
5613446Smrj  * FUNCTION:    AcpiUtGetNodeName
5623446Smrj  *
5633446Smrj  * PARAMETERS:  Object               - A namespace node
5643446Smrj  *
5653446Smrj  * RETURN:      Pointer to a string
5663446Smrj  *
5673446Smrj  * DESCRIPTION: Validate the node and return the node's ACPI name.
5683446Smrj  *
5693446Smrj  ******************************************************************************/
5703446Smrj 
5713446Smrj char *
AcpiUtGetNodeName(void * Object)5723446Smrj AcpiUtGetNodeName (
5733446Smrj     void                    *Object)
5743446Smrj {
5753446Smrj     ACPI_NAMESPACE_NODE     *Node = (ACPI_NAMESPACE_NODE *) Object;
5763446Smrj 
5773446Smrj 
5783446Smrj     /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
5793446Smrj 
5803446Smrj     if (!Object)
5813446Smrj     {
5823446Smrj         return ("NULL");
5833446Smrj     }
5843446Smrj 
5853446Smrj     /* Check for Root node */
5863446Smrj 
5873446Smrj     if ((Object == ACPI_ROOT_OBJECT) ||
5883446Smrj         (Object == AcpiGbl_RootNode))
5893446Smrj     {
5903446Smrj         return ("\"\\\" ");
5913446Smrj     }
5923446Smrj 
5933446Smrj     /* Descriptor must be a namespace node */
5943446Smrj 
5953446Smrj     if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED)
5963446Smrj     {
5973446Smrj         return ("####");
5983446Smrj     }
5993446Smrj 
6007851SDana.Myers@Sun.COM     /*
6017851SDana.Myers@Sun.COM      * Ensure name is valid. The name was validated/repaired when the node
6027851SDana.Myers@Sun.COM      * was created, but make sure it has not been corrupted.
6037851SDana.Myers@Sun.COM      */
6047851SDana.Myers@Sun.COM     AcpiUtRepairName (Node->Name.Ascii);
6053446Smrj 
6063446Smrj     /* Return the name */
6073446Smrj 
6083446Smrj     return (Node->Name.Ascii);
6093446Smrj }
6103446Smrj 
6113446Smrj 
6123446Smrj /*******************************************************************************
6133446Smrj  *
6143446Smrj  * FUNCTION:    AcpiUtGetDescriptorName
6153446Smrj  *
6163446Smrj  * PARAMETERS:  Object               - An ACPI object
6173446Smrj  *
6183446Smrj  * RETURN:      Pointer to a string
6193446Smrj  *
6203446Smrj  * DESCRIPTION: Validate object and return the descriptor type
6213446Smrj  *
6223446Smrj  ******************************************************************************/
6233446Smrj 
6243446Smrj /* Printable names of object descriptor types */
6253446Smrj 
6263446Smrj static const char           *AcpiGbl_DescTypeNames[] =
6273446Smrj {
6283446Smrj     /* 00 */ "Invalid",
6293446Smrj     /* 01 */ "Cached",
6303446Smrj     /* 02 */ "State-Generic",
6313446Smrj     /* 03 */ "State-Update",
6323446Smrj     /* 04 */ "State-Package",
6333446Smrj     /* 05 */ "State-Control",
6343446Smrj     /* 06 */ "State-RootParseScope",
6353446Smrj     /* 07 */ "State-ParseScope",
6363446Smrj     /* 08 */ "State-WalkScope",
6373446Smrj     /* 09 */ "State-Result",
6383446Smrj     /* 10 */ "State-Notify",
6393446Smrj     /* 11 */ "State-Thread",
6403446Smrj     /* 12 */ "Walk",
6413446Smrj     /* 13 */ "Parser",
6423446Smrj     /* 14 */ "Operand",
6433446Smrj     /* 15 */ "Node"
6443446Smrj };
6453446Smrj 
6463446Smrj 
6473446Smrj char *
AcpiUtGetDescriptorName(void * Object)6483446Smrj AcpiUtGetDescriptorName (
6493446Smrj     void                    *Object)
6503446Smrj {
6513446Smrj 
6523446Smrj     if (!Object)
6533446Smrj     {
6543446Smrj         return ("NULL OBJECT");
6553446Smrj     }
6563446Smrj 
6573446Smrj     if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX)
6583446Smrj     {
6593446Smrj         return (ACPI_CAST_PTR (char, AcpiGbl_BadType));
6603446Smrj     }
6613446Smrj 
6623446Smrj     return (ACPI_CAST_PTR (char,
6633446Smrj         AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]));
6643446Smrj 
6653446Smrj }
6663446Smrj 
6673446Smrj 
6687851SDana.Myers@Sun.COM /*******************************************************************************
6697851SDana.Myers@Sun.COM  *
6707851SDana.Myers@Sun.COM  * FUNCTION:    AcpiUtGetReferenceName
6717851SDana.Myers@Sun.COM  *
6727851SDana.Myers@Sun.COM  * PARAMETERS:  Object               - An ACPI reference object
6737851SDana.Myers@Sun.COM  *
6747851SDana.Myers@Sun.COM  * RETURN:      Pointer to a string
6757851SDana.Myers@Sun.COM  *
6767851SDana.Myers@Sun.COM  * DESCRIPTION: Decode a reference object sub-type to a string.
6777851SDana.Myers@Sun.COM  *
6787851SDana.Myers@Sun.COM  ******************************************************************************/
6797851SDana.Myers@Sun.COM 
6807851SDana.Myers@Sun.COM /* Printable names of reference object sub-types */
6817851SDana.Myers@Sun.COM 
6827851SDana.Myers@Sun.COM static const char           *AcpiGbl_RefClassNames[] =
6837851SDana.Myers@Sun.COM {
6847851SDana.Myers@Sun.COM     /* 00 */ "Local",
6857851SDana.Myers@Sun.COM     /* 01 */ "Argument",
6867851SDana.Myers@Sun.COM     /* 02 */ "RefOf",
6877851SDana.Myers@Sun.COM     /* 03 */ "Index",
6887851SDana.Myers@Sun.COM     /* 04 */ "DdbHandle",
6897851SDana.Myers@Sun.COM     /* 05 */ "Named Object",
6907851SDana.Myers@Sun.COM     /* 06 */ "Debug"
6917851SDana.Myers@Sun.COM };
6927851SDana.Myers@Sun.COM 
6937851SDana.Myers@Sun.COM const char *
AcpiUtGetReferenceName(ACPI_OPERAND_OBJECT * Object)6947851SDana.Myers@Sun.COM AcpiUtGetReferenceName (
6957851SDana.Myers@Sun.COM     ACPI_OPERAND_OBJECT     *Object)
6967851SDana.Myers@Sun.COM {
6977851SDana.Myers@Sun.COM 
6987851SDana.Myers@Sun.COM     if (!Object)
6997851SDana.Myers@Sun.COM     {
7007851SDana.Myers@Sun.COM         return ("NULL Object");
7017851SDana.Myers@Sun.COM     }
7027851SDana.Myers@Sun.COM 
7037851SDana.Myers@Sun.COM     if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND)
7047851SDana.Myers@Sun.COM     {
7057851SDana.Myers@Sun.COM         return ("Not an Operand object");
7067851SDana.Myers@Sun.COM     }
7077851SDana.Myers@Sun.COM 
7087851SDana.Myers@Sun.COM     if (Object->Common.Type != ACPI_TYPE_LOCAL_REFERENCE)
7097851SDana.Myers@Sun.COM     {
7107851SDana.Myers@Sun.COM         return ("Not a Reference object");
7117851SDana.Myers@Sun.COM     }
7127851SDana.Myers@Sun.COM 
7137851SDana.Myers@Sun.COM     if (Object->Reference.Class > ACPI_REFCLASS_MAX)
7147851SDana.Myers@Sun.COM     {
7157851SDana.Myers@Sun.COM         return ("Unknown Reference class");
7167851SDana.Myers@Sun.COM     }
7177851SDana.Myers@Sun.COM 
7187851SDana.Myers@Sun.COM     return (AcpiGbl_RefClassNames[Object->Reference.Class]);
7197851SDana.Myers@Sun.COM }
7207851SDana.Myers@Sun.COM 
7217851SDana.Myers@Sun.COM 
7223446Smrj #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
7233446Smrj /*
7243446Smrj  * Strings and procedures used for debug only
7253446Smrj  */
7263446Smrj 
7273446Smrj /*******************************************************************************
7283446Smrj  *
7293446Smrj  * FUNCTION:    AcpiUtGetMutexName
7303446Smrj  *
7313446Smrj  * PARAMETERS:  MutexId         - The predefined ID for this mutex.
7323446Smrj  *
7333446Smrj  * RETURN:      String containing the name of the mutex. Always returns a valid
7343446Smrj  *              pointer.
7353446Smrj  *
7363446Smrj  * DESCRIPTION: Translate a mutex ID into a name string (Debug only)
7373446Smrj  *
7383446Smrj  ******************************************************************************/
7393446Smrj 
7403446Smrj char *
AcpiUtGetMutexName(UINT32 MutexId)7413446Smrj AcpiUtGetMutexName (
7423446Smrj     UINT32                  MutexId)
7433446Smrj {
7443446Smrj 
7453446Smrj     if (MutexId > ACPI_MAX_MUTEX)
7463446Smrj     {
7473446Smrj         return ("Invalid Mutex ID");
7483446Smrj     }
7493446Smrj 
7503446Smrj     return (AcpiGbl_MutexNames[MutexId]);
7513446Smrj }
7527851SDana.Myers@Sun.COM 
7537851SDana.Myers@Sun.COM 
7547851SDana.Myers@Sun.COM /*******************************************************************************
7557851SDana.Myers@Sun.COM  *
7567851SDana.Myers@Sun.COM  * FUNCTION:    AcpiUtGetNotifyName
7577851SDana.Myers@Sun.COM  *
7587851SDana.Myers@Sun.COM  * PARAMETERS:  NotifyValue     - Value from the Notify() request
7597851SDana.Myers@Sun.COM  *
7607851SDana.Myers@Sun.COM  * RETURN:      String corresponding to the Notify Value.
7617851SDana.Myers@Sun.COM  *
7627851SDana.Myers@Sun.COM  * DESCRIPTION: Translate a Notify Value to a notify namestring.
7637851SDana.Myers@Sun.COM  *
7647851SDana.Myers@Sun.COM  ******************************************************************************/
7657851SDana.Myers@Sun.COM 
7667851SDana.Myers@Sun.COM /* Names for Notify() values, used for debug output */
7677851SDana.Myers@Sun.COM 
7687851SDana.Myers@Sun.COM static const char        *AcpiGbl_NotifyValueNames[] =
7697851SDana.Myers@Sun.COM {
7707851SDana.Myers@Sun.COM     "Bus Check",
7717851SDana.Myers@Sun.COM     "Device Check",
7727851SDana.Myers@Sun.COM     "Device Wake",
7737851SDana.Myers@Sun.COM     "Eject Request",
7747851SDana.Myers@Sun.COM     "Device Check Light",
7757851SDana.Myers@Sun.COM     "Frequency Mismatch",
7767851SDana.Myers@Sun.COM     "Bus Mode Mismatch",
7777851SDana.Myers@Sun.COM     "Power Fault",
7787851SDana.Myers@Sun.COM     "Capabilities Check",
7797851SDana.Myers@Sun.COM     "Device PLD Check",
7807851SDana.Myers@Sun.COM     "Reserved",
7817851SDana.Myers@Sun.COM     "System Locality Update"
7827851SDana.Myers@Sun.COM };
7837851SDana.Myers@Sun.COM 
7847851SDana.Myers@Sun.COM const char *
AcpiUtGetNotifyName(UINT32 NotifyValue)7857851SDana.Myers@Sun.COM AcpiUtGetNotifyName (
7867851SDana.Myers@Sun.COM     UINT32                  NotifyValue)
7877851SDana.Myers@Sun.COM {
7887851SDana.Myers@Sun.COM 
7897851SDana.Myers@Sun.COM     if (NotifyValue <= ACPI_NOTIFY_MAX)
7907851SDana.Myers@Sun.COM     {
7917851SDana.Myers@Sun.COM         return (AcpiGbl_NotifyValueNames[NotifyValue]);
7927851SDana.Myers@Sun.COM     }
7937851SDana.Myers@Sun.COM     else if (NotifyValue <= ACPI_MAX_SYS_NOTIFY)
7947851SDana.Myers@Sun.COM     {
7957851SDana.Myers@Sun.COM         return ("Reserved");
7967851SDana.Myers@Sun.COM     }
7977851SDana.Myers@Sun.COM     else /* Greater or equal to 0x80 */
7987851SDana.Myers@Sun.COM     {
7997851SDana.Myers@Sun.COM         return ("**Device Specific**");
8007851SDana.Myers@Sun.COM     }
8017851SDana.Myers@Sun.COM }
8023446Smrj #endif
8033446Smrj 
8043446Smrj 
8053446Smrj /*******************************************************************************
8063446Smrj  *
8073446Smrj  * FUNCTION:    AcpiUtValidObjectType
8083446Smrj  *
8093446Smrj  * PARAMETERS:  Type            - Object type to be validated
8103446Smrj  *
8113446Smrj  * RETURN:      TRUE if valid object type, FALSE otherwise
8123446Smrj  *
8133446Smrj  * DESCRIPTION: Validate an object type
8143446Smrj  *
8153446Smrj  ******************************************************************************/
8163446Smrj 
8173446Smrj BOOLEAN
AcpiUtValidObjectType(ACPI_OBJECT_TYPE Type)8183446Smrj AcpiUtValidObjectType (
8193446Smrj     ACPI_OBJECT_TYPE        Type)
8203446Smrj {
8213446Smrj 
8223446Smrj     if (Type > ACPI_TYPE_LOCAL_MAX)
8233446Smrj     {
8243446Smrj         /* Note: Assumes all TYPEs are contiguous (external/local) */
8253446Smrj 
8263446Smrj         return (FALSE);
8273446Smrj     }
8283446Smrj 
8293446Smrj     return (TRUE);
8303446Smrj }
8313446Smrj 
8323446Smrj 
8333446Smrj /*******************************************************************************
8343446Smrj  *
8353446Smrj  * FUNCTION:    AcpiUtInitGlobals
8363446Smrj  *
8373446Smrj  * PARAMETERS:  None
8383446Smrj  *
8397851SDana.Myers@Sun.COM  * RETURN:      Status
8403446Smrj  *
8413446Smrj  * DESCRIPTION: Init library globals.  All globals that require specific
8423446Smrj  *              initialization should be initialized here!
8433446Smrj  *
8443446Smrj  ******************************************************************************/
8453446Smrj 
8467851SDana.Myers@Sun.COM ACPI_STATUS
AcpiUtInitGlobals(void)8473446Smrj AcpiUtInitGlobals (
8483446Smrj     void)
8493446Smrj {
8503446Smrj     ACPI_STATUS             Status;
8513446Smrj     UINT32                  i;
8523446Smrj 
8533446Smrj 
8543446Smrj     ACPI_FUNCTION_TRACE (UtInitGlobals);
8553446Smrj 
8563446Smrj 
8573446Smrj     /* Create all memory caches */
8583446Smrj 
8593446Smrj     Status = AcpiUtCreateCaches ();
8603446Smrj     if (ACPI_FAILURE (Status))
8613446Smrj     {
8627851SDana.Myers@Sun.COM         return_ACPI_STATUS (Status);
8633446Smrj     }
8643446Smrj 
8653446Smrj     /* Mutex locked flags */
8663446Smrj 
8673446Smrj     for (i = 0; i < ACPI_NUM_MUTEX; i++)
8683446Smrj     {
8693446Smrj         AcpiGbl_MutexInfo[i].Mutex          = NULL;
8703446Smrj         AcpiGbl_MutexInfo[i].ThreadId       = ACPI_MUTEX_NOT_ACQUIRED;
8713446Smrj         AcpiGbl_MutexInfo[i].UseCount       = 0;
8723446Smrj     }
8733446Smrj 
8743446Smrj     for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++)
8753446Smrj     {
8763446Smrj         AcpiGbl_OwnerIdMask[i]              = 0;
8773446Smrj     }
8789980SDana.Myers@Sun.COM 
8799980SDana.Myers@Sun.COM     /* Last OwnerID is never valid */
8809980SDana.Myers@Sun.COM 
8819980SDana.Myers@Sun.COM     AcpiGbl_OwnerIdMask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000;
8823446Smrj 
8837851SDana.Myers@Sun.COM     /* Event counters */
8847851SDana.Myers@Sun.COM 
8857851SDana.Myers@Sun.COM     AcpiMethodCount                     = 0;
8867851SDana.Myers@Sun.COM     AcpiSciCount                        = 0;
8877851SDana.Myers@Sun.COM     AcpiGpeCount                        = 0;
8887851SDana.Myers@Sun.COM 
8897851SDana.Myers@Sun.COM     for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++)
8907851SDana.Myers@Sun.COM     {
8917851SDana.Myers@Sun.COM         AcpiFixedEventCount[i]              = 0;
8927851SDana.Myers@Sun.COM     }
8937851SDana.Myers@Sun.COM 
8943446Smrj     /* GPE support */
8953446Smrj 
8963446Smrj     AcpiGbl_GpeXruptListHead            = NULL;
8973446Smrj     AcpiGbl_GpeFadtBlocks[0]            = NULL;
8983446Smrj     AcpiGbl_GpeFadtBlocks[1]            = NULL;
8999980SDana.Myers@Sun.COM     AcpiCurrentGpeCount                 = 0;
9003446Smrj 
9017851SDana.Myers@Sun.COM     /* Global handlers */
9023446Smrj 
9033446Smrj     AcpiGbl_SystemNotify.Handler        = NULL;
9043446Smrj     AcpiGbl_DeviceNotify.Handler        = NULL;
9053446Smrj     AcpiGbl_ExceptionHandler            = NULL;
9063446Smrj     AcpiGbl_InitHandler                 = NULL;
9077851SDana.Myers@Sun.COM     AcpiGbl_TableHandler                = NULL;
9083446Smrj 
9093446Smrj     /* Global Lock support */
9103446Smrj 
9113446Smrj     AcpiGbl_GlobalLockSemaphore         = NULL;
9123446Smrj     AcpiGbl_GlobalLockMutex             = NULL;
9133446Smrj     AcpiGbl_GlobalLockAcquired          = FALSE;
9143446Smrj     AcpiGbl_GlobalLockHandle            = 0;
9159980SDana.Myers@Sun.COM     AcpiGbl_GlobalLockPresent           = FALSE;
9163446Smrj 
9173446Smrj     /* Miscellaneous variables */
9183446Smrj 
9193446Smrj     AcpiGbl_CmSingleStep                = FALSE;
9203446Smrj     AcpiGbl_DbTerminateThreads          = FALSE;
9213446Smrj     AcpiGbl_Shutdown                    = FALSE;
9223446Smrj     AcpiGbl_NsLookupCount               = 0;
9233446Smrj     AcpiGbl_PsFindCount                 = 0;
9243446Smrj     AcpiGbl_AcpiHardwarePresent         = TRUE;
9253446Smrj     AcpiGbl_LastOwnerIdIndex            = 0;
9263446Smrj     AcpiGbl_NextOwnerIdOffset           = 0;
9273446Smrj     AcpiGbl_TraceMethodName             = 0;
9283446Smrj     AcpiGbl_TraceDbgLevel               = 0;
9293446Smrj     AcpiGbl_TraceDbgLayer               = 0;
9303446Smrj     AcpiGbl_DebuggerConfiguration       = DEBUGGER_THREADING;
9313446Smrj     AcpiGbl_DbOutputFlags               = ACPI_DB_CONSOLE_OUTPUT;
9329980SDana.Myers@Sun.COM     AcpiGbl_OsiData                     = 0;
9333446Smrj 
9343446Smrj     /* Hardware oriented */
9353446Smrj 
9363446Smrj     AcpiGbl_EventsInitialized           = FALSE;
9373446Smrj     AcpiGbl_SystemAwakeAndRunning       = TRUE;
9383446Smrj 
9393446Smrj     /* Namespace */
9403446Smrj 
941*11225SDana.Myers@Sun.COM     AcpiGbl_ModuleCodeList              = NULL;
9423446Smrj     AcpiGbl_RootNode                    = NULL;
9433446Smrj     AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME;
9443446Smrj     AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED;
9453446Smrj     AcpiGbl_RootNodeStruct.Type         = ACPI_TYPE_DEVICE;
9463446Smrj     AcpiGbl_RootNodeStruct.Child        = NULL;
9473446Smrj     AcpiGbl_RootNodeStruct.Peer         = NULL;
9483446Smrj     AcpiGbl_RootNodeStruct.Object       = NULL;
9493446Smrj     AcpiGbl_RootNodeStruct.Flags        = ANOBJ_END_OF_PEER_LIST;
9503446Smrj 
9513446Smrj 
952*11225SDana.Myers@Sun.COM #ifdef ACPI_DISASSEMBLER
953*11225SDana.Myers@Sun.COM     AcpiGbl_ExternalList                = NULL;
954*11225SDana.Myers@Sun.COM #endif
955*11225SDana.Myers@Sun.COM 
9563446Smrj #ifdef ACPI_DEBUG_OUTPUT
9577851SDana.Myers@Sun.COM     AcpiGbl_LowestStackPointer          = ACPI_CAST_PTR (ACPI_SIZE, ACPI_SIZE_MAX);
9583446Smrj #endif
9593446Smrj 
9607851SDana.Myers@Sun.COM #ifdef ACPI_DBG_TRACK_ALLOCATIONS
9617851SDana.Myers@Sun.COM     AcpiGbl_DisplayFinalMemStats        = FALSE;
9627851SDana.Myers@Sun.COM #endif
9637851SDana.Myers@Sun.COM 
9647851SDana.Myers@Sun.COM     return_ACPI_STATUS (AE_OK);
9653446Smrj }
9663446Smrj 
9673446Smrj /* Public globals */
9683446Smrj 
9699980SDana.Myers@Sun.COM ACPI_EXPORT_SYMBOL (AcpiGbl_FADT)
9703446Smrj ACPI_EXPORT_SYMBOL (AcpiDbgLevel)
9713446Smrj ACPI_EXPORT_SYMBOL (AcpiDbgLayer)
9727851SDana.Myers@Sun.COM ACPI_EXPORT_SYMBOL (AcpiGpeCount)
9739980SDana.Myers@Sun.COM ACPI_EXPORT_SYMBOL (AcpiCurrentGpeCount)
9743446Smrj 
9753446Smrj 
976