1*3446Smrj /****************************************************************************** 2*3446Smrj * 3*3446Smrj * Module Name: utglobal - Global variables for the ACPI subsystem 4*3446Smrj * $Revision: 1.242 $ 5*3446Smrj * 6*3446Smrj *****************************************************************************/ 7*3446Smrj 8*3446Smrj /****************************************************************************** 9*3446Smrj * 10*3446Smrj * 1. Copyright Notice 11*3446Smrj * 12*3446Smrj * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. 13*3446Smrj * All rights reserved. 14*3446Smrj * 15*3446Smrj * 2. License 16*3446Smrj * 17*3446Smrj * 2.1. This is your license from Intel Corp. under its intellectual property 18*3446Smrj * rights. You may have additional license terms from the party that provided 19*3446Smrj * you this software, covering your right to use that party's intellectual 20*3446Smrj * property rights. 21*3446Smrj * 22*3446Smrj * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 23*3446Smrj * copy of the source code appearing in this file ("Covered Code") an 24*3446Smrj * irrevocable, perpetual, worldwide license under Intel's copyrights in the 25*3446Smrj * base code distributed originally by Intel ("Original Intel Code") to copy, 26*3446Smrj * make derivatives, distribute, use and display any portion of the Covered 27*3446Smrj * Code in any form, with the right to sublicense such rights; and 28*3446Smrj * 29*3446Smrj * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 30*3446Smrj * license (with the right to sublicense), under only those claims of Intel 31*3446Smrj * patents that are infringed by the Original Intel Code, to make, use, sell, 32*3446Smrj * offer to sell, and import the Covered Code and derivative works thereof 33*3446Smrj * solely to the minimum extent necessary to exercise the above copyright 34*3446Smrj * license, and in no event shall the patent license extend to any additions 35*3446Smrj * to or modifications of the Original Intel Code. No other license or right 36*3446Smrj * is granted directly or by implication, estoppel or otherwise; 37*3446Smrj * 38*3446Smrj * The above copyright and patent license is granted only if the following 39*3446Smrj * conditions are met: 40*3446Smrj * 41*3446Smrj * 3. Conditions 42*3446Smrj * 43*3446Smrj * 3.1. Redistribution of Source with Rights to Further Distribute Source. 44*3446Smrj * Redistribution of source code of any substantial portion of the Covered 45*3446Smrj * Code or modification with rights to further distribute source must include 46*3446Smrj * the above Copyright Notice, the above License, this list of Conditions, 47*3446Smrj * and the following Disclaimer and Export Compliance provision. In addition, 48*3446Smrj * Licensee must cause all Covered Code to which Licensee contributes to 49*3446Smrj * contain a file documenting the changes Licensee made to create that Covered 50*3446Smrj * Code and the date of any change. Licensee must include in that file the 51*3446Smrj * documentation of any changes made by any predecessor Licensee. Licensee 52*3446Smrj * must include a prominent statement that the modification is derived, 53*3446Smrj * directly or indirectly, from Original Intel Code. 54*3446Smrj * 55*3446Smrj * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 56*3446Smrj * Redistribution of source code of any substantial portion of the Covered 57*3446Smrj * Code or modification without rights to further distribute source must 58*3446Smrj * include the following Disclaimer and Export Compliance provision in the 59*3446Smrj * documentation and/or other materials provided with distribution. In 60*3446Smrj * addition, Licensee may not authorize further sublicense of source of any 61*3446Smrj * portion of the Covered Code, and must include terms to the effect that the 62*3446Smrj * license from Licensee to its licensee is limited to the intellectual 63*3446Smrj * property embodied in the software Licensee provides to its licensee, and 64*3446Smrj * not to intellectual property embodied in modifications its licensee may 65*3446Smrj * make. 66*3446Smrj * 67*3446Smrj * 3.3. Redistribution of Executable. Redistribution in executable form of any 68*3446Smrj * substantial portion of the Covered Code or modification must reproduce the 69*3446Smrj * above Copyright Notice, and the following Disclaimer and Export Compliance 70*3446Smrj * provision in the documentation and/or other materials provided with the 71*3446Smrj * distribution. 72*3446Smrj * 73*3446Smrj * 3.4. Intel retains all right, title, and interest in and to the Original 74*3446Smrj * Intel Code. 75*3446Smrj * 76*3446Smrj * 3.5. Neither the name Intel nor any other trademark owned or controlled by 77*3446Smrj * Intel shall be used in advertising or otherwise to promote the sale, use or 78*3446Smrj * other dealings in products derived from or relating to the Covered Code 79*3446Smrj * without prior written authorization from Intel. 80*3446Smrj * 81*3446Smrj * 4. Disclaimer and Export Compliance 82*3446Smrj * 83*3446Smrj * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 84*3446Smrj * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 85*3446Smrj * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 86*3446Smrj * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 87*3446Smrj * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 88*3446Smrj * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 89*3446Smrj * PARTICULAR PURPOSE. 90*3446Smrj * 91*3446Smrj * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 92*3446Smrj * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 93*3446Smrj * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 94*3446Smrj * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 95*3446Smrj * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 96*3446Smrj * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 97*3446Smrj * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 98*3446Smrj * LIMITED REMEDY. 99*3446Smrj * 100*3446Smrj * 4.3. Licensee shall not export, either directly or indirectly, any of this 101*3446Smrj * software or system incorporating such software without first obtaining any 102*3446Smrj * required license or other approval from the U. S. Department of Commerce or 103*3446Smrj * any other agency or department of the United States Government. In the 104*3446Smrj * event Licensee exports any such software from the United States or 105*3446Smrj * re-exports any such software from a foreign destination, Licensee shall 106*3446Smrj * ensure that the distribution and export/re-export of the software is in 107*3446Smrj * compliance with all laws, regulations, orders, or other restrictions of the 108*3446Smrj * U.S. Export Administration Regulations. Licensee agrees that neither it nor 109*3446Smrj * any of its subsidiaries will export/re-export any technical data, process, 110*3446Smrj * software, or service, directly or indirectly, to any country for which the 111*3446Smrj * United States government or any agency thereof requires an export license, 112*3446Smrj * other governmental approval, or letter of assurance, without first obtaining 113*3446Smrj * such license, approval or letter. 114*3446Smrj * 115*3446Smrj *****************************************************************************/ 116*3446Smrj 117*3446Smrj #define __UTGLOBAL_C__ 118*3446Smrj #define DEFINE_ACPI_GLOBALS 119*3446Smrj 120*3446Smrj #include "acpi.h" 121*3446Smrj #include "acnamesp.h" 122*3446Smrj 123*3446Smrj #define _COMPONENT ACPI_UTILITIES 124*3446Smrj ACPI_MODULE_NAME ("utglobal") 125*3446Smrj 126*3446Smrj 127*3446Smrj /******************************************************************************* 128*3446Smrj * 129*3446Smrj * FUNCTION: AcpiFormatException 130*3446Smrj * 131*3446Smrj * PARAMETERS: Status - The ACPI_STATUS code to be formatted 132*3446Smrj * 133*3446Smrj * RETURN: A string containing the exception text. A valid pointer is 134*3446Smrj * always returned. 135*3446Smrj * 136*3446Smrj * DESCRIPTION: This function translates an ACPI exception into an ASCII string. 137*3446Smrj * 138*3446Smrj ******************************************************************************/ 139*3446Smrj 140*3446Smrj const char * 141*3446Smrj AcpiFormatException ( 142*3446Smrj ACPI_STATUS Status) 143*3446Smrj { 144*3446Smrj ACPI_STATUS SubStatus; 145*3446Smrj const char *Exception = NULL; 146*3446Smrj 147*3446Smrj 148*3446Smrj ACPI_FUNCTION_ENTRY (); 149*3446Smrj 150*3446Smrj 151*3446Smrj /* 152*3446Smrj * Status is composed of two parts, a "type" and an actual code 153*3446Smrj */ 154*3446Smrj SubStatus = (Status & ~AE_CODE_MASK); 155*3446Smrj 156*3446Smrj switch (Status & AE_CODE_MASK) 157*3446Smrj { 158*3446Smrj case AE_CODE_ENVIRONMENTAL: 159*3446Smrj 160*3446Smrj if (SubStatus <= AE_CODE_ENV_MAX) 161*3446Smrj { 162*3446Smrj Exception = AcpiGbl_ExceptionNames_Env [SubStatus]; 163*3446Smrj } 164*3446Smrj break; 165*3446Smrj 166*3446Smrj case AE_CODE_PROGRAMMER: 167*3446Smrj 168*3446Smrj if (SubStatus <= AE_CODE_PGM_MAX) 169*3446Smrj { 170*3446Smrj Exception = AcpiGbl_ExceptionNames_Pgm [SubStatus -1]; 171*3446Smrj } 172*3446Smrj break; 173*3446Smrj 174*3446Smrj case AE_CODE_ACPI_TABLES: 175*3446Smrj 176*3446Smrj if (SubStatus <= AE_CODE_TBL_MAX) 177*3446Smrj { 178*3446Smrj Exception = AcpiGbl_ExceptionNames_Tbl [SubStatus -1]; 179*3446Smrj } 180*3446Smrj break; 181*3446Smrj 182*3446Smrj case AE_CODE_AML: 183*3446Smrj 184*3446Smrj if (SubStatus <= AE_CODE_AML_MAX) 185*3446Smrj { 186*3446Smrj Exception = AcpiGbl_ExceptionNames_Aml [SubStatus -1]; 187*3446Smrj } 188*3446Smrj break; 189*3446Smrj 190*3446Smrj case AE_CODE_CONTROL: 191*3446Smrj 192*3446Smrj if (SubStatus <= AE_CODE_CTRL_MAX) 193*3446Smrj { 194*3446Smrj Exception = AcpiGbl_ExceptionNames_Ctrl [SubStatus -1]; 195*3446Smrj } 196*3446Smrj break; 197*3446Smrj 198*3446Smrj default: 199*3446Smrj break; 200*3446Smrj } 201*3446Smrj 202*3446Smrj if (!Exception) 203*3446Smrj { 204*3446Smrj /* Exception code was not recognized */ 205*3446Smrj 206*3446Smrj ACPI_ERROR ((AE_INFO, 207*3446Smrj "Unknown exception code: 0x%8.8X", Status)); 208*3446Smrj 209*3446Smrj Exception = "UNKNOWN_STATUS_CODE"; 210*3446Smrj } 211*3446Smrj 212*3446Smrj return (ACPI_CAST_PTR (const char, Exception)); 213*3446Smrj } 214*3446Smrj 215*3446Smrj 216*3446Smrj /******************************************************************************* 217*3446Smrj * 218*3446Smrj * Static global variable initialization. 219*3446Smrj * 220*3446Smrj ******************************************************************************/ 221*3446Smrj 222*3446Smrj /* 223*3446Smrj * We want the debug switches statically initialized so they 224*3446Smrj * are already set when the debugger is entered. 225*3446Smrj */ 226*3446Smrj 227*3446Smrj /* Debug switch - level and trace mask */ 228*3446Smrj 229*3446Smrj #ifdef ACPI_DEBUG_OUTPUT 230*3446Smrj UINT32 AcpiDbgLevel = ACPI_DEBUG_DEFAULT; 231*3446Smrj #else 232*3446Smrj UINT32 AcpiDbgLevel = ACPI_NORMAL_DEFAULT; 233*3446Smrj #endif 234*3446Smrj 235*3446Smrj /* Debug switch - layer (component) mask */ 236*3446Smrj 237*3446Smrj UINT32 AcpiDbgLayer = ACPI_COMPONENT_DEFAULT; 238*3446Smrj UINT32 AcpiGbl_NestingLevel = 0; 239*3446Smrj 240*3446Smrj /* Debugger globals */ 241*3446Smrj 242*3446Smrj BOOLEAN AcpiGbl_DbTerminateThreads = FALSE; 243*3446Smrj BOOLEAN AcpiGbl_AbortMethod = FALSE; 244*3446Smrj BOOLEAN AcpiGbl_MethodExecuting = FALSE; 245*3446Smrj 246*3446Smrj /* System flags */ 247*3446Smrj 248*3446Smrj UINT32 AcpiGbl_StartupFlags = 0; 249*3446Smrj 250*3446Smrj /* System starts uninitialized */ 251*3446Smrj 252*3446Smrj BOOLEAN AcpiGbl_Shutdown = TRUE; 253*3446Smrj 254*3446Smrj const UINT8 AcpiGbl_DecodeTo8bit [8] = {1,2,4,8,16,32,64,128}; 255*3446Smrj 256*3446Smrj const char *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT] = 257*3446Smrj { 258*3446Smrj "\\_S0_", 259*3446Smrj "\\_S1_", 260*3446Smrj "\\_S2_", 261*3446Smrj "\\_S3_", 262*3446Smrj "\\_S4_", 263*3446Smrj "\\_S5_" 264*3446Smrj }; 265*3446Smrj 266*3446Smrj const char *AcpiGbl_HighestDstateNames[4] = 267*3446Smrj { 268*3446Smrj "_S1D", 269*3446Smrj "_S2D", 270*3446Smrj "_S3D", 271*3446Smrj "_S4D" 272*3446Smrj }; 273*3446Smrj 274*3446Smrj 275*3446Smrj /******************************************************************************* 276*3446Smrj * 277*3446Smrj * Namespace globals 278*3446Smrj * 279*3446Smrj ******************************************************************************/ 280*3446Smrj 281*3446Smrj /* 282*3446Smrj * Predefined ACPI Names (Built-in to the Interpreter) 283*3446Smrj * 284*3446Smrj * NOTES: 285*3446Smrj * 1) _SB_ is defined to be a device to allow \_SB_._INI to be run 286*3446Smrj * during the initialization sequence. 287*3446Smrj * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to 288*3446Smrj * perform a Notify() operation on it. 289*3446Smrj */ 290*3446Smrj const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] = 291*3446Smrj { 292*3446Smrj {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL}, 293*3446Smrj {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL}, 294*3446Smrj {"_SB_", ACPI_TYPE_DEVICE, NULL}, 295*3446Smrj {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL}, 296*3446Smrj {"_TZ_", ACPI_TYPE_THERMAL, NULL}, 297*3446Smrj {"_REV", ACPI_TYPE_INTEGER, (char *) ACPI_CA_SUPPORT_LEVEL}, 298*3446Smrj {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, 299*3446Smrj {"_GL_", ACPI_TYPE_MUTEX, (char *) 1}, 300*3446Smrj 301*3446Smrj #if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) 302*3446Smrj {"_OSI", ACPI_TYPE_METHOD, (char *) 1}, 303*3446Smrj #endif 304*3446Smrj 305*3446Smrj /* Table terminator */ 306*3446Smrj 307*3446Smrj {NULL, ACPI_TYPE_ANY, NULL} 308*3446Smrj }; 309*3446Smrj 310*3446Smrj /* 311*3446Smrj * Properties of the ACPI Object Types, both internal and external. 312*3446Smrj * The table is indexed by values of ACPI_OBJECT_TYPE 313*3446Smrj */ 314*3446Smrj const UINT8 AcpiGbl_NsProperties[] = 315*3446Smrj { 316*3446Smrj ACPI_NS_NORMAL, /* 00 Any */ 317*3446Smrj ACPI_NS_NORMAL, /* 01 Number */ 318*3446Smrj ACPI_NS_NORMAL, /* 02 String */ 319*3446Smrj ACPI_NS_NORMAL, /* 03 Buffer */ 320*3446Smrj ACPI_NS_NORMAL, /* 04 Package */ 321*3446Smrj ACPI_NS_NORMAL, /* 05 FieldUnit */ 322*3446Smrj ACPI_NS_NEWSCOPE, /* 06 Device */ 323*3446Smrj ACPI_NS_NORMAL, /* 07 Event */ 324*3446Smrj ACPI_NS_NEWSCOPE, /* 08 Method */ 325*3446Smrj ACPI_NS_NORMAL, /* 09 Mutex */ 326*3446Smrj ACPI_NS_NORMAL, /* 10 Region */ 327*3446Smrj ACPI_NS_NEWSCOPE, /* 11 Power */ 328*3446Smrj ACPI_NS_NEWSCOPE, /* 12 Processor */ 329*3446Smrj ACPI_NS_NEWSCOPE, /* 13 Thermal */ 330*3446Smrj ACPI_NS_NORMAL, /* 14 BufferField */ 331*3446Smrj ACPI_NS_NORMAL, /* 15 DdbHandle */ 332*3446Smrj ACPI_NS_NORMAL, /* 16 Debug Object */ 333*3446Smrj ACPI_NS_NORMAL, /* 17 DefField */ 334*3446Smrj ACPI_NS_NORMAL, /* 18 BankField */ 335*3446Smrj ACPI_NS_NORMAL, /* 19 IndexField */ 336*3446Smrj ACPI_NS_NORMAL, /* 20 Reference */ 337*3446Smrj ACPI_NS_NORMAL, /* 21 Alias */ 338*3446Smrj ACPI_NS_NORMAL, /* 22 MethodAlias */ 339*3446Smrj ACPI_NS_NORMAL, /* 23 Notify */ 340*3446Smrj ACPI_NS_NORMAL, /* 24 Address Handler */ 341*3446Smrj ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Desc */ 342*3446Smrj ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 26 Resource Field */ 343*3446Smrj ACPI_NS_NEWSCOPE, /* 27 Scope */ 344*3446Smrj ACPI_NS_NORMAL, /* 28 Extra */ 345*3446Smrj ACPI_NS_NORMAL, /* 29 Data */ 346*3446Smrj ACPI_NS_NORMAL /* 30 Invalid */ 347*3446Smrj }; 348*3446Smrj 349*3446Smrj 350*3446Smrj /* Hex to ASCII conversion table */ 351*3446Smrj 352*3446Smrj static const char AcpiGbl_HexToAscii[] = 353*3446Smrj { 354*3446Smrj '0','1','2','3','4','5','6','7', 355*3446Smrj '8','9','A','B','C','D','E','F' 356*3446Smrj }; 357*3446Smrj 358*3446Smrj 359*3446Smrj /******************************************************************************* 360*3446Smrj * 361*3446Smrj * FUNCTION: AcpiUtHexToAsciiChar 362*3446Smrj * 363*3446Smrj * PARAMETERS: Integer - Contains the hex digit 364*3446Smrj * Position - bit position of the digit within the 365*3446Smrj * integer (multiple of 4) 366*3446Smrj * 367*3446Smrj * RETURN: The converted Ascii character 368*3446Smrj * 369*3446Smrj * DESCRIPTION: Convert a hex digit to an Ascii character 370*3446Smrj * 371*3446Smrj ******************************************************************************/ 372*3446Smrj 373*3446Smrj char 374*3446Smrj AcpiUtHexToAsciiChar ( 375*3446Smrj ACPI_INTEGER Integer, 376*3446Smrj UINT32 Position) 377*3446Smrj { 378*3446Smrj 379*3446Smrj return (AcpiGbl_HexToAscii[(Integer >> Position) & 0xF]); 380*3446Smrj } 381*3446Smrj 382*3446Smrj 383*3446Smrj /******************************************************************************* 384*3446Smrj * 385*3446Smrj * Table name globals 386*3446Smrj * 387*3446Smrj * NOTE: This table includes ONLY the ACPI tables that the subsystem consumes. 388*3446Smrj * it is NOT an exhaustive list of all possible ACPI tables. All ACPI tables 389*3446Smrj * that are not used by the subsystem are simply ignored. 390*3446Smrj * 391*3446Smrj * Do NOT add any table to this list that is not consumed directly by this 392*3446Smrj * subsystem (No MADT, ECDT, SBST, etc.) 393*3446Smrj * 394*3446Smrj ******************************************************************************/ 395*3446Smrj 396*3446Smrj ACPI_TABLE_LIST AcpiGbl_TableLists[ACPI_TABLE_ID_MAX+1]; 397*3446Smrj 398*3446Smrj ACPI_TABLE_SUPPORT AcpiGbl_TableData[ACPI_TABLE_ID_MAX+1] = 399*3446Smrj { 400*3446Smrj /*********** Name, Signature, Global typed pointer Signature size, Type How many allowed?, Contains valid AML? */ 401*3446Smrj 402*3446Smrj /* RSDP 0 */ {RSDP_NAME, RSDP_SIG, NULL, sizeof (RSDP_SIG)-1, ACPI_TABLE_ROOT | ACPI_TABLE_SINGLE}, 403*3446Smrj /* DSDT 1 */ {DSDT_SIG, DSDT_SIG, (void *) &AcpiGbl_DSDT, sizeof (DSDT_SIG)-1, ACPI_TABLE_SECONDARY| ACPI_TABLE_SINGLE | ACPI_TABLE_EXECUTABLE}, 404*3446Smrj /* FADT 2 */ {FADT_SIG, FADT_SIG, (void *) &AcpiGbl_FADT, sizeof (FADT_SIG)-1, ACPI_TABLE_PRIMARY | ACPI_TABLE_SINGLE}, 405*3446Smrj /* FACS 3 */ {FACS_SIG, FACS_SIG, (void *) &AcpiGbl_FACS, sizeof (FACS_SIG)-1, ACPI_TABLE_SECONDARY| ACPI_TABLE_SINGLE}, 406*3446Smrj /* PSDT 4 */ {PSDT_SIG, PSDT_SIG, NULL, sizeof (PSDT_SIG)-1, ACPI_TABLE_PRIMARY | ACPI_TABLE_MULTIPLE | ACPI_TABLE_EXECUTABLE}, 407*3446Smrj /* SSDT 5 */ {SSDT_SIG, SSDT_SIG, NULL, sizeof (SSDT_SIG)-1, ACPI_TABLE_PRIMARY | ACPI_TABLE_MULTIPLE | ACPI_TABLE_EXECUTABLE}, 408*3446Smrj /* XSDT 6 */ {XSDT_SIG, XSDT_SIG, NULL, sizeof (RSDT_SIG)-1, ACPI_TABLE_ROOT | ACPI_TABLE_SINGLE}, 409*3446Smrj }; 410*3446Smrj 411*3446Smrj 412*3446Smrj /****************************************************************************** 413*3446Smrj * 414*3446Smrj * Event and Hardware globals 415*3446Smrj * 416*3446Smrj ******************************************************************************/ 417*3446Smrj 418*3446Smrj ACPI_BIT_REGISTER_INFO AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG] = 419*3446Smrj { 420*3446Smrj /* Name Parent Register Register Bit Position Register Bit Mask */ 421*3446Smrj 422*3446Smrj /* ACPI_BITREG_TIMER_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_TIMER_STATUS, ACPI_BITMASK_TIMER_STATUS}, 423*3446Smrj /* ACPI_BITREG_BUS_MASTER_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_BUS_MASTER_STATUS, ACPI_BITMASK_BUS_MASTER_STATUS}, 424*3446Smrj /* ACPI_BITREG_GLOBAL_LOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_GLOBAL_LOCK_STATUS, ACPI_BITMASK_GLOBAL_LOCK_STATUS}, 425*3446Smrj /* ACPI_BITREG_POWER_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_POWER_BUTTON_STATUS, ACPI_BITMASK_POWER_BUTTON_STATUS}, 426*3446Smrj /* ACPI_BITREG_SLEEP_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_STATUS}, 427*3446Smrj /* ACPI_BITREG_RT_CLOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_RT_CLOCK_STATUS, ACPI_BITMASK_RT_CLOCK_STATUS}, 428*3446Smrj /* ACPI_BITREG_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_WAKE_STATUS, ACPI_BITMASK_WAKE_STATUS}, 429*3446Smrj /* ACPI_BITREG_PCIEXP_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_PCIEXP_WAKE_STATUS, ACPI_BITMASK_PCIEXP_WAKE_STATUS}, 430*3446Smrj 431*3446Smrj /* ACPI_BITREG_TIMER_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_TIMER_ENABLE, ACPI_BITMASK_TIMER_ENABLE}, 432*3446Smrj /* ACPI_BITREG_GLOBAL_LOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE, ACPI_BITMASK_GLOBAL_LOCK_ENABLE}, 433*3446Smrj /* ACPI_BITREG_POWER_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_ENABLE}, 434*3446Smrj /* ACPI_BITREG_SLEEP_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_ENABLE}, 435*3446Smrj /* ACPI_BITREG_RT_CLOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_RT_CLOCK_ENABLE, ACPI_BITMASK_RT_CLOCK_ENABLE}, 436*3446Smrj /* ACPI_BITREG_WAKE_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, 0, 0}, 437*3446Smrj /* ACPI_BITREG_PCIEXP_WAKE_DISABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE, ACPI_BITMASK_PCIEXP_WAKE_DISABLE}, 438*3446Smrj 439*3446Smrj /* ACPI_BITREG_SCI_ENABLE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SCI_ENABLE, ACPI_BITMASK_SCI_ENABLE}, 440*3446Smrj /* ACPI_BITREG_BUS_MASTER_RLD */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_BUS_MASTER_RLD, ACPI_BITMASK_BUS_MASTER_RLD}, 441*3446Smrj /* ACPI_BITREG_GLOBAL_LOCK_RELEASE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE, ACPI_BITMASK_GLOBAL_LOCK_RELEASE}, 442*3446Smrj /* ACPI_BITREG_SLEEP_TYPE_A */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_TYPE_X, ACPI_BITMASK_SLEEP_TYPE_X}, 443*3446Smrj /* ACPI_BITREG_SLEEP_TYPE_B */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_TYPE_X, ACPI_BITMASK_SLEEP_TYPE_X}, 444*3446Smrj /* ACPI_BITREG_SLEEP_ENABLE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_ENABLE, ACPI_BITMASK_SLEEP_ENABLE}, 445*3446Smrj 446*3446Smrj /* ACPI_BITREG_ARB_DIS */ {ACPI_REGISTER_PM2_CONTROL, ACPI_BITPOSITION_ARB_DISABLE, ACPI_BITMASK_ARB_DISABLE} 447*3446Smrj }; 448*3446Smrj 449*3446Smrj 450*3446Smrj ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] = 451*3446Smrj { 452*3446Smrj /* ACPI_EVENT_PMTIMER */ {ACPI_BITREG_TIMER_STATUS, ACPI_BITREG_TIMER_ENABLE, ACPI_BITMASK_TIMER_STATUS, ACPI_BITMASK_TIMER_ENABLE}, 453*3446Smrj /* ACPI_EVENT_GLOBAL */ {ACPI_BITREG_GLOBAL_LOCK_STATUS, ACPI_BITREG_GLOBAL_LOCK_ENABLE, ACPI_BITMASK_GLOBAL_LOCK_STATUS, ACPI_BITMASK_GLOBAL_LOCK_ENABLE}, 454*3446Smrj /* ACPI_EVENT_POWER_BUTTON */ {ACPI_BITREG_POWER_BUTTON_STATUS, ACPI_BITREG_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_STATUS, ACPI_BITMASK_POWER_BUTTON_ENABLE}, 455*3446Smrj /* ACPI_EVENT_SLEEP_BUTTON */ {ACPI_BITREG_SLEEP_BUTTON_STATUS, ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_ENABLE}, 456*3446Smrj /* ACPI_EVENT_RTC */ {ACPI_BITREG_RT_CLOCK_STATUS, ACPI_BITREG_RT_CLOCK_ENABLE, ACPI_BITMASK_RT_CLOCK_STATUS, ACPI_BITMASK_RT_CLOCK_ENABLE}, 457*3446Smrj }; 458*3446Smrj 459*3446Smrj /******************************************************************************* 460*3446Smrj * 461*3446Smrj * FUNCTION: AcpiUtGetRegionName 462*3446Smrj * 463*3446Smrj * PARAMETERS: None. 464*3446Smrj * 465*3446Smrj * RETURN: Status 466*3446Smrj * 467*3446Smrj * DESCRIPTION: Translate a Space ID into a name string (Debug only) 468*3446Smrj * 469*3446Smrj ******************************************************************************/ 470*3446Smrj 471*3446Smrj /* Region type decoding */ 472*3446Smrj 473*3446Smrj const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = 474*3446Smrj { 475*3446Smrj "SystemMemory", 476*3446Smrj "SystemIO", 477*3446Smrj "PCI_Config", 478*3446Smrj "EmbeddedControl", 479*3446Smrj "SMBus", 480*3446Smrj "CMOS", 481*3446Smrj "PCIBARTarget", 482*3446Smrj "DataTable" 483*3446Smrj }; 484*3446Smrj 485*3446Smrj 486*3446Smrj char * 487*3446Smrj AcpiUtGetRegionName ( 488*3446Smrj UINT8 SpaceId) 489*3446Smrj { 490*3446Smrj 491*3446Smrj if (SpaceId >= ACPI_USER_REGION_BEGIN) 492*3446Smrj { 493*3446Smrj return ("UserDefinedRegion"); 494*3446Smrj } 495*3446Smrj else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS) 496*3446Smrj { 497*3446Smrj return ("InvalidSpaceId"); 498*3446Smrj } 499*3446Smrj 500*3446Smrj return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId])); 501*3446Smrj } 502*3446Smrj 503*3446Smrj 504*3446Smrj /******************************************************************************* 505*3446Smrj * 506*3446Smrj * FUNCTION: AcpiUtGetEventName 507*3446Smrj * 508*3446Smrj * PARAMETERS: None. 509*3446Smrj * 510*3446Smrj * RETURN: Status 511*3446Smrj * 512*3446Smrj * DESCRIPTION: Translate a Event ID into a name string (Debug only) 513*3446Smrj * 514*3446Smrj ******************************************************************************/ 515*3446Smrj 516*3446Smrj /* Event type decoding */ 517*3446Smrj 518*3446Smrj static const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] = 519*3446Smrj { 520*3446Smrj "PM_Timer", 521*3446Smrj "GlobalLock", 522*3446Smrj "PowerButton", 523*3446Smrj "SleepButton", 524*3446Smrj "RealTimeClock", 525*3446Smrj }; 526*3446Smrj 527*3446Smrj 528*3446Smrj char * 529*3446Smrj AcpiUtGetEventName ( 530*3446Smrj UINT32 EventId) 531*3446Smrj { 532*3446Smrj 533*3446Smrj if (EventId > ACPI_EVENT_MAX) 534*3446Smrj { 535*3446Smrj return ("InvalidEventID"); 536*3446Smrj } 537*3446Smrj 538*3446Smrj return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId])); 539*3446Smrj } 540*3446Smrj 541*3446Smrj 542*3446Smrj /******************************************************************************* 543*3446Smrj * 544*3446Smrj * FUNCTION: AcpiUtGetTypeName 545*3446Smrj * 546*3446Smrj * PARAMETERS: None. 547*3446Smrj * 548*3446Smrj * RETURN: Status 549*3446Smrj * 550*3446Smrj * DESCRIPTION: Translate a Type ID into a name string (Debug only) 551*3446Smrj * 552*3446Smrj ******************************************************************************/ 553*3446Smrj 554*3446Smrj /* 555*3446Smrj * Elements of AcpiGbl_NsTypeNames below must match 556*3446Smrj * one-to-one with values of ACPI_OBJECT_TYPE 557*3446Smrj * 558*3446Smrj * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching; 559*3446Smrj * when stored in a table it really means that we have thus far seen no 560*3446Smrj * evidence to indicate what type is actually going to be stored for this entry. 561*3446Smrj */ 562*3446Smrj static const char AcpiGbl_BadType[] = "UNDEFINED"; 563*3446Smrj 564*3446Smrj /* Printable names of the ACPI object types */ 565*3446Smrj 566*3446Smrj static const char *AcpiGbl_NsTypeNames[] = 567*3446Smrj { 568*3446Smrj /* 00 */ "Untyped", 569*3446Smrj /* 01 */ "Integer", 570*3446Smrj /* 02 */ "String", 571*3446Smrj /* 03 */ "Buffer", 572*3446Smrj /* 04 */ "Package", 573*3446Smrj /* 05 */ "FieldUnit", 574*3446Smrj /* 06 */ "Device", 575*3446Smrj /* 07 */ "Event", 576*3446Smrj /* 08 */ "Method", 577*3446Smrj /* 09 */ "Mutex", 578*3446Smrj /* 10 */ "Region", 579*3446Smrj /* 11 */ "Power", 580*3446Smrj /* 12 */ "Processor", 581*3446Smrj /* 13 */ "Thermal", 582*3446Smrj /* 14 */ "BufferField", 583*3446Smrj /* 15 */ "DdbHandle", 584*3446Smrj /* 16 */ "DebugObject", 585*3446Smrj /* 17 */ "RegionField", 586*3446Smrj /* 18 */ "BankField", 587*3446Smrj /* 19 */ "IndexField", 588*3446Smrj /* 20 */ "Reference", 589*3446Smrj /* 21 */ "Alias", 590*3446Smrj /* 22 */ "MethodAlias", 591*3446Smrj /* 23 */ "Notify", 592*3446Smrj /* 24 */ "AddrHandler", 593*3446Smrj /* 25 */ "ResourceDesc", 594*3446Smrj /* 26 */ "ResourceFld", 595*3446Smrj /* 27 */ "Scope", 596*3446Smrj /* 28 */ "Extra", 597*3446Smrj /* 29 */ "Data", 598*3446Smrj /* 30 */ "Invalid" 599*3446Smrj }; 600*3446Smrj 601*3446Smrj 602*3446Smrj char * 603*3446Smrj AcpiUtGetTypeName ( 604*3446Smrj ACPI_OBJECT_TYPE Type) 605*3446Smrj { 606*3446Smrj 607*3446Smrj if (Type > ACPI_TYPE_INVALID) 608*3446Smrj { 609*3446Smrj return (ACPI_CAST_PTR (char, AcpiGbl_BadType)); 610*3446Smrj } 611*3446Smrj 612*3446Smrj return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type])); 613*3446Smrj } 614*3446Smrj 615*3446Smrj 616*3446Smrj char * 617*3446Smrj AcpiUtGetObjectTypeName ( 618*3446Smrj ACPI_OPERAND_OBJECT *ObjDesc) 619*3446Smrj { 620*3446Smrj 621*3446Smrj if (!ObjDesc) 622*3446Smrj { 623*3446Smrj return ("[NULL Object Descriptor]"); 624*3446Smrj } 625*3446Smrj 626*3446Smrj return (AcpiUtGetTypeName (ACPI_GET_OBJECT_TYPE (ObjDesc))); 627*3446Smrj } 628*3446Smrj 629*3446Smrj 630*3446Smrj /******************************************************************************* 631*3446Smrj * 632*3446Smrj * FUNCTION: AcpiUtGetNodeName 633*3446Smrj * 634*3446Smrj * PARAMETERS: Object - A namespace node 635*3446Smrj * 636*3446Smrj * RETURN: Pointer to a string 637*3446Smrj * 638*3446Smrj * DESCRIPTION: Validate the node and return the node's ACPI name. 639*3446Smrj * 640*3446Smrj ******************************************************************************/ 641*3446Smrj 642*3446Smrj char * 643*3446Smrj AcpiUtGetNodeName ( 644*3446Smrj void *Object) 645*3446Smrj { 646*3446Smrj ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) Object; 647*3446Smrj 648*3446Smrj 649*3446Smrj /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */ 650*3446Smrj 651*3446Smrj if (!Object) 652*3446Smrj { 653*3446Smrj return ("NULL"); 654*3446Smrj } 655*3446Smrj 656*3446Smrj /* Check for Root node */ 657*3446Smrj 658*3446Smrj if ((Object == ACPI_ROOT_OBJECT) || 659*3446Smrj (Object == AcpiGbl_RootNode)) 660*3446Smrj { 661*3446Smrj return ("\"\\\" "); 662*3446Smrj } 663*3446Smrj 664*3446Smrj /* Descriptor must be a namespace node */ 665*3446Smrj 666*3446Smrj if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) 667*3446Smrj { 668*3446Smrj return ("####"); 669*3446Smrj } 670*3446Smrj 671*3446Smrj /* Name must be a valid ACPI name */ 672*3446Smrj 673*3446Smrj if (!AcpiUtValidAcpiName (Node->Name.Integer)) 674*3446Smrj { 675*3446Smrj Node->Name.Integer = AcpiUtRepairName (Node->Name.Integer); 676*3446Smrj } 677*3446Smrj 678*3446Smrj /* Return the name */ 679*3446Smrj 680*3446Smrj return (Node->Name.Ascii); 681*3446Smrj } 682*3446Smrj 683*3446Smrj 684*3446Smrj /******************************************************************************* 685*3446Smrj * 686*3446Smrj * FUNCTION: AcpiUtGetDescriptorName 687*3446Smrj * 688*3446Smrj * PARAMETERS: Object - An ACPI object 689*3446Smrj * 690*3446Smrj * RETURN: Pointer to a string 691*3446Smrj * 692*3446Smrj * DESCRIPTION: Validate object and return the descriptor type 693*3446Smrj * 694*3446Smrj ******************************************************************************/ 695*3446Smrj 696*3446Smrj /* Printable names of object descriptor types */ 697*3446Smrj 698*3446Smrj static const char *AcpiGbl_DescTypeNames[] = 699*3446Smrj { 700*3446Smrj /* 00 */ "Invalid", 701*3446Smrj /* 01 */ "Cached", 702*3446Smrj /* 02 */ "State-Generic", 703*3446Smrj /* 03 */ "State-Update", 704*3446Smrj /* 04 */ "State-Package", 705*3446Smrj /* 05 */ "State-Control", 706*3446Smrj /* 06 */ "State-RootParseScope", 707*3446Smrj /* 07 */ "State-ParseScope", 708*3446Smrj /* 08 */ "State-WalkScope", 709*3446Smrj /* 09 */ "State-Result", 710*3446Smrj /* 10 */ "State-Notify", 711*3446Smrj /* 11 */ "State-Thread", 712*3446Smrj /* 12 */ "Walk", 713*3446Smrj /* 13 */ "Parser", 714*3446Smrj /* 14 */ "Operand", 715*3446Smrj /* 15 */ "Node" 716*3446Smrj }; 717*3446Smrj 718*3446Smrj 719*3446Smrj char * 720*3446Smrj AcpiUtGetDescriptorName ( 721*3446Smrj void *Object) 722*3446Smrj { 723*3446Smrj 724*3446Smrj if (!Object) 725*3446Smrj { 726*3446Smrj return ("NULL OBJECT"); 727*3446Smrj } 728*3446Smrj 729*3446Smrj if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX) 730*3446Smrj { 731*3446Smrj return (ACPI_CAST_PTR (char, AcpiGbl_BadType)); 732*3446Smrj } 733*3446Smrj 734*3446Smrj return (ACPI_CAST_PTR (char, 735*3446Smrj AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)])); 736*3446Smrj 737*3446Smrj } 738*3446Smrj 739*3446Smrj 740*3446Smrj #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 741*3446Smrj /* 742*3446Smrj * Strings and procedures used for debug only 743*3446Smrj */ 744*3446Smrj 745*3446Smrj /******************************************************************************* 746*3446Smrj * 747*3446Smrj * FUNCTION: AcpiUtGetMutexName 748*3446Smrj * 749*3446Smrj * PARAMETERS: MutexId - The predefined ID for this mutex. 750*3446Smrj * 751*3446Smrj * RETURN: String containing the name of the mutex. Always returns a valid 752*3446Smrj * pointer. 753*3446Smrj * 754*3446Smrj * DESCRIPTION: Translate a mutex ID into a name string (Debug only) 755*3446Smrj * 756*3446Smrj ******************************************************************************/ 757*3446Smrj 758*3446Smrj char * 759*3446Smrj AcpiUtGetMutexName ( 760*3446Smrj UINT32 MutexId) 761*3446Smrj { 762*3446Smrj 763*3446Smrj if (MutexId > ACPI_MAX_MUTEX) 764*3446Smrj { 765*3446Smrj return ("Invalid Mutex ID"); 766*3446Smrj } 767*3446Smrj 768*3446Smrj return (AcpiGbl_MutexNames[MutexId]); 769*3446Smrj } 770*3446Smrj #endif 771*3446Smrj 772*3446Smrj 773*3446Smrj /******************************************************************************* 774*3446Smrj * 775*3446Smrj * FUNCTION: AcpiUtValidObjectType 776*3446Smrj * 777*3446Smrj * PARAMETERS: Type - Object type to be validated 778*3446Smrj * 779*3446Smrj * RETURN: TRUE if valid object type, FALSE otherwise 780*3446Smrj * 781*3446Smrj * DESCRIPTION: Validate an object type 782*3446Smrj * 783*3446Smrj ******************************************************************************/ 784*3446Smrj 785*3446Smrj BOOLEAN 786*3446Smrj AcpiUtValidObjectType ( 787*3446Smrj ACPI_OBJECT_TYPE Type) 788*3446Smrj { 789*3446Smrj 790*3446Smrj if (Type > ACPI_TYPE_LOCAL_MAX) 791*3446Smrj { 792*3446Smrj /* Note: Assumes all TYPEs are contiguous (external/local) */ 793*3446Smrj 794*3446Smrj return (FALSE); 795*3446Smrj } 796*3446Smrj 797*3446Smrj return (TRUE); 798*3446Smrj } 799*3446Smrj 800*3446Smrj 801*3446Smrj /******************************************************************************* 802*3446Smrj * 803*3446Smrj * FUNCTION: AcpiUtInitGlobals 804*3446Smrj * 805*3446Smrj * PARAMETERS: None 806*3446Smrj * 807*3446Smrj * RETURN: None 808*3446Smrj * 809*3446Smrj * DESCRIPTION: Init library globals. All globals that require specific 810*3446Smrj * initialization should be initialized here! 811*3446Smrj * 812*3446Smrj ******************************************************************************/ 813*3446Smrj 814*3446Smrj void 815*3446Smrj AcpiUtInitGlobals ( 816*3446Smrj void) 817*3446Smrj { 818*3446Smrj ACPI_STATUS Status; 819*3446Smrj UINT32 i; 820*3446Smrj 821*3446Smrj 822*3446Smrj ACPI_FUNCTION_TRACE (UtInitGlobals); 823*3446Smrj 824*3446Smrj 825*3446Smrj /* Create all memory caches */ 826*3446Smrj 827*3446Smrj Status = AcpiUtCreateCaches (); 828*3446Smrj if (ACPI_FAILURE (Status)) 829*3446Smrj { 830*3446Smrj return; 831*3446Smrj } 832*3446Smrj 833*3446Smrj /* ACPI table structure */ 834*3446Smrj 835*3446Smrj for (i = 0; i < (ACPI_TABLE_ID_MAX+1); i++) 836*3446Smrj { 837*3446Smrj AcpiGbl_TableLists[i].Next = NULL; 838*3446Smrj AcpiGbl_TableLists[i].Count = 0; 839*3446Smrj } 840*3446Smrj 841*3446Smrj /* Mutex locked flags */ 842*3446Smrj 843*3446Smrj for (i = 0; i < ACPI_NUM_MUTEX; i++) 844*3446Smrj { 845*3446Smrj AcpiGbl_MutexInfo[i].Mutex = NULL; 846*3446Smrj AcpiGbl_MutexInfo[i].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; 847*3446Smrj AcpiGbl_MutexInfo[i].UseCount = 0; 848*3446Smrj } 849*3446Smrj 850*3446Smrj for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++) 851*3446Smrj { 852*3446Smrj AcpiGbl_OwnerIdMask[i] = 0; 853*3446Smrj } 854*3446Smrj AcpiGbl_OwnerIdMask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000; /* Last ID is never valid */ 855*3446Smrj 856*3446Smrj /* GPE support */ 857*3446Smrj 858*3446Smrj AcpiGbl_GpeXruptListHead = NULL; 859*3446Smrj AcpiGbl_GpeFadtBlocks[0] = NULL; 860*3446Smrj AcpiGbl_GpeFadtBlocks[1] = NULL; 861*3446Smrj 862*3446Smrj /* Global notify handlers */ 863*3446Smrj 864*3446Smrj AcpiGbl_SystemNotify.Handler = NULL; 865*3446Smrj AcpiGbl_DeviceNotify.Handler = NULL; 866*3446Smrj AcpiGbl_ExceptionHandler = NULL; 867*3446Smrj AcpiGbl_InitHandler = NULL; 868*3446Smrj 869*3446Smrj /* Global "typed" ACPI table pointers */ 870*3446Smrj 871*3446Smrj AcpiGbl_RSDP = NULL; 872*3446Smrj AcpiGbl_XSDT = NULL; 873*3446Smrj AcpiGbl_FACS = NULL; 874*3446Smrj AcpiGbl_FADT = NULL; 875*3446Smrj AcpiGbl_DSDT = NULL; 876*3446Smrj 877*3446Smrj /* Global Lock support */ 878*3446Smrj 879*3446Smrj AcpiGbl_GlobalLockSemaphore = NULL; 880*3446Smrj AcpiGbl_GlobalLockMutex = NULL; 881*3446Smrj AcpiGbl_GlobalLockAcquired = FALSE; 882*3446Smrj AcpiGbl_GlobalLockHandle = 0; 883*3446Smrj 884*3446Smrj /* Miscellaneous variables */ 885*3446Smrj 886*3446Smrj AcpiGbl_TableFlags = ACPI_PHYSICAL_POINTER; 887*3446Smrj AcpiGbl_RsdpOriginalLocation = 0; 888*3446Smrj AcpiGbl_CmSingleStep = FALSE; 889*3446Smrj AcpiGbl_DbTerminateThreads = FALSE; 890*3446Smrj AcpiGbl_Shutdown = FALSE; 891*3446Smrj AcpiGbl_NsLookupCount = 0; 892*3446Smrj AcpiGbl_PsFindCount = 0; 893*3446Smrj AcpiGbl_AcpiHardwarePresent = TRUE; 894*3446Smrj AcpiGbl_LastOwnerIdIndex = 0; 895*3446Smrj AcpiGbl_NextOwnerIdOffset = 0; 896*3446Smrj AcpiGbl_TraceMethodName = 0; 897*3446Smrj AcpiGbl_TraceDbgLevel = 0; 898*3446Smrj AcpiGbl_TraceDbgLayer = 0; 899*3446Smrj AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING; 900*3446Smrj AcpiGbl_DbOutputFlags = ACPI_DB_CONSOLE_OUTPUT; 901*3446Smrj 902*3446Smrj /* Hardware oriented */ 903*3446Smrj 904*3446Smrj AcpiGbl_EventsInitialized = FALSE; 905*3446Smrj AcpiGbl_SystemAwakeAndRunning = TRUE; 906*3446Smrj 907*3446Smrj /* Namespace */ 908*3446Smrj 909*3446Smrj AcpiGbl_RootNode = NULL; 910*3446Smrj AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; 911*3446Smrj AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; 912*3446Smrj AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; 913*3446Smrj AcpiGbl_RootNodeStruct.Child = NULL; 914*3446Smrj AcpiGbl_RootNodeStruct.Peer = NULL; 915*3446Smrj AcpiGbl_RootNodeStruct.Object = NULL; 916*3446Smrj AcpiGbl_RootNodeStruct.Flags = ANOBJ_END_OF_PEER_LIST; 917*3446Smrj 918*3446Smrj 919*3446Smrj #ifdef ACPI_DEBUG_OUTPUT 920*3446Smrj AcpiGbl_LowestStackPointer = ACPI_SIZE_MAX; 921*3446Smrj #endif 922*3446Smrj 923*3446Smrj return_VOID; 924*3446Smrj } 925*3446Smrj 926*3446Smrj /* Public globals */ 927*3446Smrj 928*3446Smrj ACPI_EXPORT_SYMBOL (AcpiDbgLevel) 929*3446Smrj ACPI_EXPORT_SYMBOL (AcpiDbgLayer) 930*3446Smrj 931*3446Smrj 932