Home | History | Annotate | Line # | Download | only in utilities
utglobal.c revision 1.14
      1   1.1    jruoho /******************************************************************************
      2   1.1    jruoho  *
      3   1.1    jruoho  * Module Name: utglobal - Global variables for the ACPI subsystem
      4   1.1    jruoho  *
      5   1.1    jruoho  *****************************************************************************/
      6   1.1    jruoho 
      7   1.3    jruoho /*
      8  1.14  christos  * Copyright (C) 2000 - 2021, Intel Corp.
      9   1.1    jruoho  * All rights reserved.
     10   1.1    jruoho  *
     11   1.3    jruoho  * Redistribution and use in source and binary forms, with or without
     12   1.3    jruoho  * modification, are permitted provided that the following conditions
     13   1.3    jruoho  * are met:
     14   1.3    jruoho  * 1. Redistributions of source code must retain the above copyright
     15   1.3    jruoho  *    notice, this list of conditions, and the following disclaimer,
     16   1.3    jruoho  *    without modification.
     17   1.3    jruoho  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18   1.3    jruoho  *    substantially similar to the "NO WARRANTY" disclaimer below
     19   1.3    jruoho  *    ("Disclaimer") and any redistribution must be conditioned upon
     20   1.3    jruoho  *    including a substantially similar Disclaimer requirement for further
     21   1.3    jruoho  *    binary redistribution.
     22   1.3    jruoho  * 3. Neither the names of the above-listed copyright holders nor the names
     23   1.3    jruoho  *    of any contributors may be used to endorse or promote products derived
     24   1.3    jruoho  *    from this software without specific prior written permission.
     25   1.3    jruoho  *
     26   1.3    jruoho  * Alternatively, this software may be distributed under the terms of the
     27   1.3    jruoho  * GNU General Public License ("GPL") version 2 as published by the Free
     28   1.3    jruoho  * Software Foundation.
     29   1.3    jruoho  *
     30   1.3    jruoho  * NO WARRANTY
     31   1.3    jruoho  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32   1.3    jruoho  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33  1.14  christos  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     34   1.3    jruoho  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35   1.3    jruoho  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36   1.3    jruoho  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37   1.3    jruoho  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38   1.3    jruoho  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39   1.3    jruoho  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40   1.3    jruoho  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41   1.3    jruoho  * POSSIBILITY OF SUCH DAMAGES.
     42   1.3    jruoho  */
     43   1.1    jruoho 
     44   1.4  christos #define EXPORT_ACPI_INTERFACES
     45   1.1    jruoho #define DEFINE_ACPI_GLOBALS
     46   1.1    jruoho 
     47   1.1    jruoho #include "acpi.h"
     48   1.1    jruoho #include "accommon.h"
     49   1.1    jruoho 
     50   1.1    jruoho #define _COMPONENT          ACPI_UTILITIES
     51   1.1    jruoho         ACPI_MODULE_NAME    ("utglobal")
     52   1.1    jruoho 
     53   1.1    jruoho 
     54   1.1    jruoho /*******************************************************************************
     55   1.1    jruoho  *
     56   1.1    jruoho  * Static global variable initialization.
     57   1.1    jruoho  *
     58   1.1    jruoho  ******************************************************************************/
     59   1.1    jruoho 
     60   1.5  christos /* Various state name strings */
     61   1.1    jruoho 
     62   1.1    jruoho const char                  *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT] =
     63   1.1    jruoho {
     64   1.1    jruoho     "\\_S0_",
     65   1.1    jruoho     "\\_S1_",
     66   1.1    jruoho     "\\_S2_",
     67   1.1    jruoho     "\\_S3_",
     68   1.1    jruoho     "\\_S4_",
     69   1.1    jruoho     "\\_S5_"
     70   1.1    jruoho };
     71   1.1    jruoho 
     72   1.1    jruoho const char                  *AcpiGbl_LowestDstateNames[ACPI_NUM_SxW_METHODS] =
     73   1.1    jruoho {
     74   1.1    jruoho     "_S0W",
     75   1.1    jruoho     "_S1W",
     76   1.1    jruoho     "_S2W",
     77   1.1    jruoho     "_S3W",
     78   1.1    jruoho     "_S4W"
     79   1.1    jruoho };
     80   1.1    jruoho 
     81   1.1    jruoho const char                  *AcpiGbl_HighestDstateNames[ACPI_NUM_SxD_METHODS] =
     82   1.1    jruoho {
     83   1.1    jruoho     "_S1D",
     84   1.1    jruoho     "_S2D",
     85   1.1    jruoho     "_S3D",
     86   1.1    jruoho     "_S4D"
     87   1.1    jruoho };
     88   1.1    jruoho 
     89   1.1    jruoho 
     90   1.8  christos /* Hex-to-ascii */
     91   1.8  christos 
     92   1.8  christos const char                  AcpiGbl_LowerHexDigits[] = "0123456789abcdef";
     93   1.8  christos const char                  AcpiGbl_UpperHexDigits[] = "0123456789ABCDEF";
     94   1.8  christos 
     95   1.8  christos 
     96   1.1    jruoho /*******************************************************************************
     97   1.1    jruoho  *
     98   1.1    jruoho  * Namespace globals
     99   1.1    jruoho  *
    100   1.1    jruoho  ******************************************************************************/
    101   1.1    jruoho 
    102   1.1    jruoho /*
    103   1.1    jruoho  * Predefined ACPI Names (Built-in to the Interpreter)
    104   1.1    jruoho  *
    105   1.1    jruoho  * NOTES:
    106   1.1    jruoho  * 1) _SB_ is defined to be a device to allow \_SB_._INI to be run
    107   1.1    jruoho  *    during the initialization sequence.
    108   1.1    jruoho  * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to
    109   1.3    jruoho  *    perform a Notify() operation on it. 09/2010: Changed to type Device.
    110   1.3    jruoho  *    This still allows notifies, but does not confuse host code that
    111   1.3    jruoho  *    searches for valid ThermalZone objects.
    112   1.1    jruoho  */
    113   1.1    jruoho const ACPI_PREDEFINED_NAMES     AcpiGbl_PreDefinedNames[] =
    114   1.1    jruoho {
    115   1.1    jruoho     {"_GPE",    ACPI_TYPE_LOCAL_SCOPE,      NULL},
    116   1.1    jruoho     {"_PR_",    ACPI_TYPE_LOCAL_SCOPE,      NULL},
    117   1.1    jruoho     {"_SB_",    ACPI_TYPE_DEVICE,           NULL},
    118   1.1    jruoho     {"_SI_",    ACPI_TYPE_LOCAL_SCOPE,      NULL},
    119   1.3    jruoho     {"_TZ_",    ACPI_TYPE_DEVICE,           NULL},
    120   1.6  christos     /*
    121   1.6  christos      * March, 2015:
    122   1.6  christos      * The _REV object is in the process of being deprecated, because
    123   1.6  christos      * other ACPI implementations permanently return 2. Thus, it
    124   1.6  christos      * has little or no value. Return 2 for compatibility with
    125   1.6  christos      * other ACPI implementations.
    126   1.6  christos      */
    127   1.6  christos     {"_REV",    ACPI_TYPE_INTEGER,          ACPI_CAST_PTR (char, 2)},
    128   1.1    jruoho     {"_OS_",    ACPI_TYPE_STRING,           ACPI_OS_NAME},
    129   1.6  christos     {"_GL_",    ACPI_TYPE_MUTEX,            ACPI_CAST_PTR (char, 1)},
    130   1.6  christos     {"_OSI",    ACPI_TYPE_METHOD,           ACPI_CAST_PTR (char, 1)},
    131   1.1    jruoho 
    132   1.1    jruoho     /* Table terminator */
    133   1.1    jruoho 
    134   1.1    jruoho     {NULL,      ACPI_TYPE_ANY,              NULL}
    135   1.1    jruoho };
    136   1.1    jruoho 
    137   1.1    jruoho 
    138   1.4  christos #if (!ACPI_REDUCED_HARDWARE)
    139   1.1    jruoho /******************************************************************************
    140   1.1    jruoho  *
    141   1.1    jruoho  * Event and Hardware globals
    142   1.1    jruoho  *
    143   1.1    jruoho  ******************************************************************************/
    144   1.1    jruoho 
    145   1.1    jruoho ACPI_BIT_REGISTER_INFO      AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG] =
    146   1.1    jruoho {
    147   1.1    jruoho     /* Name                                     Parent Register             Register Bit Position                   Register Bit Mask       */
    148   1.1    jruoho 
    149   1.1    jruoho     /* ACPI_BITREG_TIMER_STATUS         */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_TIMER_STATUS,          ACPI_BITMASK_TIMER_STATUS},
    150   1.1    jruoho     /* ACPI_BITREG_BUS_MASTER_STATUS    */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_BUS_MASTER_STATUS,     ACPI_BITMASK_BUS_MASTER_STATUS},
    151   1.1    jruoho     /* ACPI_BITREG_GLOBAL_LOCK_STATUS   */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_GLOBAL_LOCK_STATUS,    ACPI_BITMASK_GLOBAL_LOCK_STATUS},
    152   1.1    jruoho     /* ACPI_BITREG_POWER_BUTTON_STATUS  */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_POWER_BUTTON_STATUS,   ACPI_BITMASK_POWER_BUTTON_STATUS},
    153   1.1    jruoho     /* ACPI_BITREG_SLEEP_BUTTON_STATUS  */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_SLEEP_BUTTON_STATUS,   ACPI_BITMASK_SLEEP_BUTTON_STATUS},
    154   1.1    jruoho     /* ACPI_BITREG_RT_CLOCK_STATUS      */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_RT_CLOCK_STATUS,       ACPI_BITMASK_RT_CLOCK_STATUS},
    155   1.1    jruoho     /* ACPI_BITREG_WAKE_STATUS          */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_WAKE_STATUS,           ACPI_BITMASK_WAKE_STATUS},
    156   1.1    jruoho     /* ACPI_BITREG_PCIEXP_WAKE_STATUS   */   {ACPI_REGISTER_PM1_STATUS,   ACPI_BITPOSITION_PCIEXP_WAKE_STATUS,    ACPI_BITMASK_PCIEXP_WAKE_STATUS},
    157   1.1    jruoho 
    158   1.1    jruoho     /* ACPI_BITREG_TIMER_ENABLE         */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_TIMER_ENABLE,          ACPI_BITMASK_TIMER_ENABLE},
    159   1.1    jruoho     /* ACPI_BITREG_GLOBAL_LOCK_ENABLE   */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE,    ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
    160   1.1    jruoho     /* ACPI_BITREG_POWER_BUTTON_ENABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_POWER_BUTTON_ENABLE,   ACPI_BITMASK_POWER_BUTTON_ENABLE},
    161   1.1    jruoho     /* ACPI_BITREG_SLEEP_BUTTON_ENABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE,   ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
    162   1.1    jruoho     /* ACPI_BITREG_RT_CLOCK_ENABLE      */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_RT_CLOCK_ENABLE,       ACPI_BITMASK_RT_CLOCK_ENABLE},
    163   1.1    jruoho     /* ACPI_BITREG_PCIEXP_WAKE_DISABLE  */   {ACPI_REGISTER_PM1_ENABLE,   ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE,   ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
    164   1.1    jruoho 
    165   1.1    jruoho     /* ACPI_BITREG_SCI_ENABLE           */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SCI_ENABLE,            ACPI_BITMASK_SCI_ENABLE},
    166   1.1    jruoho     /* ACPI_BITREG_BUS_MASTER_RLD       */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_BUS_MASTER_RLD,        ACPI_BITMASK_BUS_MASTER_RLD},
    167   1.1    jruoho     /* ACPI_BITREG_GLOBAL_LOCK_RELEASE  */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE,   ACPI_BITMASK_GLOBAL_LOCK_RELEASE},
    168   1.1    jruoho     /* ACPI_BITREG_SLEEP_TYPE           */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SLEEP_TYPE,            ACPI_BITMASK_SLEEP_TYPE},
    169   1.1    jruoho     /* ACPI_BITREG_SLEEP_ENABLE         */   {ACPI_REGISTER_PM1_CONTROL,  ACPI_BITPOSITION_SLEEP_ENABLE,          ACPI_BITMASK_SLEEP_ENABLE},
    170   1.1    jruoho 
    171   1.1    jruoho     /* ACPI_BITREG_ARB_DIS              */   {ACPI_REGISTER_PM2_CONTROL,  ACPI_BITPOSITION_ARB_DISABLE,           ACPI_BITMASK_ARB_DISABLE}
    172   1.1    jruoho };
    173   1.1    jruoho 
    174   1.1    jruoho 
    175   1.1    jruoho ACPI_FIXED_EVENT_INFO       AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] =
    176   1.1    jruoho {
    177   1.1    jruoho     /* ACPI_EVENT_PMTIMER       */  {ACPI_BITREG_TIMER_STATUS,          ACPI_BITREG_TIMER_ENABLE,        ACPI_BITMASK_TIMER_STATUS,          ACPI_BITMASK_TIMER_ENABLE},
    178   1.1    jruoho     /* ACPI_EVENT_GLOBAL        */  {ACPI_BITREG_GLOBAL_LOCK_STATUS,    ACPI_BITREG_GLOBAL_LOCK_ENABLE,  ACPI_BITMASK_GLOBAL_LOCK_STATUS,    ACPI_BITMASK_GLOBAL_LOCK_ENABLE},
    179   1.1    jruoho     /* ACPI_EVENT_POWER_BUTTON  */  {ACPI_BITREG_POWER_BUTTON_STATUS,   ACPI_BITREG_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_STATUS,   ACPI_BITMASK_POWER_BUTTON_ENABLE},
    180   1.1    jruoho     /* ACPI_EVENT_SLEEP_BUTTON  */  {ACPI_BITREG_SLEEP_BUTTON_STATUS,   ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS,   ACPI_BITMASK_SLEEP_BUTTON_ENABLE},
    181   1.1    jruoho     /* ACPI_EVENT_RTC           */  {ACPI_BITREG_RT_CLOCK_STATUS,       ACPI_BITREG_RT_CLOCK_ENABLE,     ACPI_BITMASK_RT_CLOCK_STATUS,       ACPI_BITMASK_RT_CLOCK_ENABLE},
    182   1.1    jruoho };
    183   1.4  christos #endif /* !ACPI_REDUCED_HARDWARE */
    184   1.1    jruoho 
    185   1.8  christos 
    186   1.8  christos #if defined (ACPI_DISASSEMBLER) || defined (ACPI_ASL_COMPILER)
    187   1.8  christos 
    188   1.8  christos /* ToPld macro: compile/disassemble strings */
    189   1.8  christos 
    190   1.8  christos const char              *AcpiGbl_PldPanelList[] =
    191   1.8  christos {
    192   1.8  christos     "TOP",
    193   1.8  christos     "BOTTOM",
    194   1.8  christos     "LEFT",
    195   1.8  christos     "RIGHT",
    196   1.8  christos     "FRONT",
    197   1.8  christos     "BACK",
    198   1.8  christos     "UNKNOWN",
    199   1.8  christos     NULL
    200   1.8  christos };
    201   1.8  christos 
    202   1.8  christos const char              *AcpiGbl_PldVerticalPositionList[] =
    203   1.8  christos {
    204   1.8  christos     "UPPER",
    205   1.8  christos     "CENTER",
    206   1.8  christos     "LOWER",
    207   1.8  christos     NULL
    208   1.8  christos };
    209   1.8  christos 
    210   1.8  christos const char              *AcpiGbl_PldHorizontalPositionList[] =
    211   1.8  christos {
    212   1.8  christos     "LEFT",
    213   1.8  christos     "CENTER",
    214   1.8  christos     "RIGHT",
    215   1.8  christos     NULL
    216   1.8  christos };
    217   1.8  christos 
    218   1.8  christos const char              *AcpiGbl_PldShapeList[] =
    219   1.8  christos {
    220   1.8  christos     "ROUND",
    221   1.8  christos     "OVAL",
    222   1.8  christos     "SQUARE",
    223   1.8  christos     "VERTICALRECTANGLE",
    224   1.8  christos     "HORIZONTALRECTANGLE",
    225   1.8  christos     "VERTICALTRAPEZOID",
    226   1.8  christos     "HORIZONTALTRAPEZOID",
    227   1.8  christos     "UNKNOWN",
    228   1.8  christos     "CHAMFERED",
    229   1.8  christos     NULL
    230   1.8  christos };
    231   1.8  christos #endif
    232   1.8  christos 
    233   1.8  christos 
    234   1.1    jruoho /* Public globals */
    235   1.1    jruoho 
    236   1.1    jruoho ACPI_EXPORT_SYMBOL (AcpiGbl_FADT)
    237   1.1    jruoho ACPI_EXPORT_SYMBOL (AcpiDbgLevel)
    238   1.1    jruoho ACPI_EXPORT_SYMBOL (AcpiDbgLayer)
    239   1.1    jruoho ACPI_EXPORT_SYMBOL (AcpiGpeCount)
    240   1.1    jruoho ACPI_EXPORT_SYMBOL (AcpiCurrentGpeCount)
    241