Home | History | Annotate | Line # | Download | only in utilities
utdecode.c revision 1.4
      1  1.1  jruoho /******************************************************************************
      2  1.1  jruoho  *
      3  1.1  jruoho  * Module Name: utdecode - Utility decoding routines (value-to-string)
      4  1.1  jruoho  *
      5  1.1  jruoho  *****************************************************************************/
      6  1.1  jruoho 
      7  1.1  jruoho /*
      8  1.1  jruoho  * Copyright (C) 2000 - 2011, Intel Corp.
      9  1.1  jruoho  * All rights reserved.
     10  1.1  jruoho  *
     11  1.1  jruoho  * Redistribution and use in source and binary forms, with or without
     12  1.1  jruoho  * modification, are permitted provided that the following conditions
     13  1.1  jruoho  * are met:
     14  1.1  jruoho  * 1. Redistributions of source code must retain the above copyright
     15  1.1  jruoho  *    notice, this list of conditions, and the following disclaimer,
     16  1.1  jruoho  *    without modification.
     17  1.1  jruoho  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18  1.1  jruoho  *    substantially similar to the "NO WARRANTY" disclaimer below
     19  1.1  jruoho  *    ("Disclaimer") and any redistribution must be conditioned upon
     20  1.1  jruoho  *    including a substantially similar Disclaimer requirement for further
     21  1.1  jruoho  *    binary redistribution.
     22  1.1  jruoho  * 3. Neither the names of the above-listed copyright holders nor the names
     23  1.1  jruoho  *    of any contributors may be used to endorse or promote products derived
     24  1.1  jruoho  *    from this software without specific prior written permission.
     25  1.1  jruoho  *
     26  1.1  jruoho  * Alternatively, this software may be distributed under the terms of the
     27  1.1  jruoho  * GNU General Public License ("GPL") version 2 as published by the Free
     28  1.1  jruoho  * Software Foundation.
     29  1.1  jruoho  *
     30  1.1  jruoho  * NO WARRANTY
     31  1.1  jruoho  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32  1.1  jruoho  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33  1.1  jruoho  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     34  1.1  jruoho  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35  1.1  jruoho  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36  1.1  jruoho  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37  1.1  jruoho  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38  1.1  jruoho  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39  1.1  jruoho  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40  1.1  jruoho  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41  1.1  jruoho  * POSSIBILITY OF SUCH DAMAGES.
     42  1.1  jruoho  */
     43  1.1  jruoho 
     44  1.1  jruoho #define __UTDECODE_C__
     45  1.1  jruoho 
     46  1.1  jruoho #include "acpi.h"
     47  1.1  jruoho #include "accommon.h"
     48  1.1  jruoho #include "acnamesp.h"
     49  1.1  jruoho 
     50  1.1  jruoho #define _COMPONENT          ACPI_UTILITIES
     51  1.1  jruoho         ACPI_MODULE_NAME    ("utdecode")
     52  1.1  jruoho 
     53  1.1  jruoho 
     54  1.1  jruoho /*******************************************************************************
     55  1.1  jruoho  *
     56  1.1  jruoho  * FUNCTION:    AcpiFormatException
     57  1.1  jruoho  *
     58  1.1  jruoho  * PARAMETERS:  Status       - The ACPI_STATUS code to be formatted
     59  1.1  jruoho  *
     60  1.1  jruoho  * RETURN:      A string containing the exception text. A valid pointer is
     61  1.1  jruoho  *              always returned.
     62  1.1  jruoho  *
     63  1.1  jruoho  * DESCRIPTION: This function translates an ACPI exception into an ASCII string
     64  1.1  jruoho  *              It is here instead of utxface.c so it is always present.
     65  1.1  jruoho  *
     66  1.1  jruoho  ******************************************************************************/
     67  1.1  jruoho 
     68  1.1  jruoho const char *
     69  1.1  jruoho AcpiFormatException (
     70  1.1  jruoho     ACPI_STATUS             Status)
     71  1.1  jruoho {
     72  1.1  jruoho     const char              *Exception = NULL;
     73  1.1  jruoho 
     74  1.1  jruoho 
     75  1.1  jruoho     ACPI_FUNCTION_ENTRY ();
     76  1.1  jruoho 
     77  1.1  jruoho 
     78  1.1  jruoho     Exception = AcpiUtValidateException (Status);
     79  1.1  jruoho     if (!Exception)
     80  1.1  jruoho     {
     81  1.1  jruoho         /* Exception code was not recognized */
     82  1.1  jruoho 
     83  1.1  jruoho         ACPI_ERROR ((AE_INFO,
     84  1.1  jruoho             "Unknown exception code: 0x%8.8X", Status));
     85  1.1  jruoho 
     86  1.1  jruoho         Exception = "UNKNOWN_STATUS_CODE";
     87  1.1  jruoho     }
     88  1.1  jruoho 
     89  1.1  jruoho     return (ACPI_CAST_PTR (const char, Exception));
     90  1.1  jruoho }
     91  1.1  jruoho 
     92  1.1  jruoho ACPI_EXPORT_SYMBOL (AcpiFormatException)
     93  1.1  jruoho 
     94  1.1  jruoho 
     95  1.1  jruoho /*
     96  1.1  jruoho  * Properties of the ACPI Object Types, both internal and external.
     97  1.1  jruoho  * The table is indexed by values of ACPI_OBJECT_TYPE
     98  1.1  jruoho  */
     99  1.1  jruoho const UINT8                     AcpiGbl_NsProperties[ACPI_NUM_NS_TYPES] =
    100  1.1  jruoho {
    101  1.1  jruoho     ACPI_NS_NORMAL,                     /* 00 Any              */
    102  1.1  jruoho     ACPI_NS_NORMAL,                     /* 01 Number           */
    103  1.1  jruoho     ACPI_NS_NORMAL,                     /* 02 String           */
    104  1.1  jruoho     ACPI_NS_NORMAL,                     /* 03 Buffer           */
    105  1.1  jruoho     ACPI_NS_NORMAL,                     /* 04 Package          */
    106  1.1  jruoho     ACPI_NS_NORMAL,                     /* 05 FieldUnit        */
    107  1.1  jruoho     ACPI_NS_NEWSCOPE,                   /* 06 Device           */
    108  1.1  jruoho     ACPI_NS_NORMAL,                     /* 07 Event            */
    109  1.1  jruoho     ACPI_NS_NEWSCOPE,                   /* 08 Method           */
    110  1.1  jruoho     ACPI_NS_NORMAL,                     /* 09 Mutex            */
    111  1.1  jruoho     ACPI_NS_NORMAL,                     /* 10 Region           */
    112  1.1  jruoho     ACPI_NS_NEWSCOPE,                   /* 11 Power            */
    113  1.1  jruoho     ACPI_NS_NEWSCOPE,                   /* 12 Processor        */
    114  1.1  jruoho     ACPI_NS_NEWSCOPE,                   /* 13 Thermal          */
    115  1.1  jruoho     ACPI_NS_NORMAL,                     /* 14 BufferField      */
    116  1.1  jruoho     ACPI_NS_NORMAL,                     /* 15 DdbHandle        */
    117  1.1  jruoho     ACPI_NS_NORMAL,                     /* 16 Debug Object     */
    118  1.1  jruoho     ACPI_NS_NORMAL,                     /* 17 DefField         */
    119  1.1  jruoho     ACPI_NS_NORMAL,                     /* 18 BankField        */
    120  1.1  jruoho     ACPI_NS_NORMAL,                     /* 19 IndexField       */
    121  1.1  jruoho     ACPI_NS_NORMAL,                     /* 20 Reference        */
    122  1.1  jruoho     ACPI_NS_NORMAL,                     /* 21 Alias            */
    123  1.1  jruoho     ACPI_NS_NORMAL,                     /* 22 MethodAlias      */
    124  1.1  jruoho     ACPI_NS_NORMAL,                     /* 23 Notify           */
    125  1.1  jruoho     ACPI_NS_NORMAL,                     /* 24 Address Handler  */
    126  1.1  jruoho     ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL,   /* 25 Resource Desc    */
    127  1.1  jruoho     ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL,   /* 26 Resource Field   */
    128  1.1  jruoho     ACPI_NS_NEWSCOPE,                   /* 27 Scope            */
    129  1.1  jruoho     ACPI_NS_NORMAL,                     /* 28 Extra            */
    130  1.1  jruoho     ACPI_NS_NORMAL,                     /* 29 Data             */
    131  1.1  jruoho     ACPI_NS_NORMAL                      /* 30 Invalid          */
    132  1.1  jruoho };
    133  1.1  jruoho 
    134  1.1  jruoho 
    135  1.1  jruoho /*******************************************************************************
    136  1.1  jruoho  *
    137  1.1  jruoho  * FUNCTION:    AcpiUtHexToAsciiChar
    138  1.1  jruoho  *
    139  1.1  jruoho  * PARAMETERS:  Integer             - Contains the hex digit
    140  1.1  jruoho  *              Position            - bit position of the digit within the
    141  1.1  jruoho  *                                    integer (multiple of 4)
    142  1.1  jruoho  *
    143  1.1  jruoho  * RETURN:      The converted Ascii character
    144  1.1  jruoho  *
    145  1.1  jruoho  * DESCRIPTION: Convert a hex digit to an Ascii character
    146  1.1  jruoho  *
    147  1.1  jruoho  ******************************************************************************/
    148  1.1  jruoho 
    149  1.1  jruoho /* Hex to ASCII conversion table */
    150  1.1  jruoho 
    151  1.1  jruoho static const char           AcpiGbl_HexToAscii[] =
    152  1.1  jruoho {
    153  1.1  jruoho     '0','1','2','3','4','5','6','7',
    154  1.1  jruoho     '8','9','A','B','C','D','E','F'
    155  1.1  jruoho };
    156  1.1  jruoho 
    157  1.1  jruoho char
    158  1.1  jruoho AcpiUtHexToAsciiChar (
    159  1.1  jruoho     UINT64                  Integer,
    160  1.1  jruoho     UINT32                  Position)
    161  1.1  jruoho {
    162  1.1  jruoho 
    163  1.1  jruoho     return (AcpiGbl_HexToAscii[(Integer >> Position) & 0xF]);
    164  1.1  jruoho }
    165  1.1  jruoho 
    166  1.1  jruoho 
    167  1.1  jruoho /*******************************************************************************
    168  1.1  jruoho  *
    169  1.1  jruoho  * FUNCTION:    AcpiUtGetRegionName
    170  1.1  jruoho  *
    171  1.1  jruoho  * PARAMETERS:  Space ID            - ID for the region
    172  1.1  jruoho  *
    173  1.1  jruoho  * RETURN:      Decoded region SpaceId name
    174  1.1  jruoho  *
    175  1.1  jruoho  * DESCRIPTION: Translate a Space ID into a name string (Debug only)
    176  1.1  jruoho  *
    177  1.1  jruoho  ******************************************************************************/
    178  1.1  jruoho 
    179  1.1  jruoho /* Region type decoding */
    180  1.1  jruoho 
    181  1.1  jruoho const char        *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] =
    182  1.1  jruoho {
    183  1.1  jruoho     "SystemMemory",
    184  1.1  jruoho     "SystemIO",
    185  1.1  jruoho     "PCI_Config",
    186  1.1  jruoho     "EmbeddedControl",
    187  1.1  jruoho     "SMBus",
    188  1.1  jruoho     "SystemCMOS",
    189  1.1  jruoho     "PCIBARTarget",
    190  1.4  jruoho     "IPMI"
    191  1.1  jruoho };
    192  1.1  jruoho 
    193  1.1  jruoho 
    194  1.2  jruoho const char *
    195  1.1  jruoho AcpiUtGetRegionName (
    196  1.1  jruoho     UINT8                   SpaceId)
    197  1.1  jruoho {
    198  1.1  jruoho 
    199  1.1  jruoho     if (SpaceId >= ACPI_USER_REGION_BEGIN)
    200  1.1  jruoho     {
    201  1.1  jruoho         return ("UserDefinedRegion");
    202  1.1  jruoho     }
    203  1.4  jruoho     else if (SpaceId == ACPI_ADR_SPACE_DATA_TABLE)
    204  1.4  jruoho     {
    205  1.4  jruoho         return ("DataTable");
    206  1.4  jruoho     }
    207  1.1  jruoho     else if (SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE)
    208  1.1  jruoho     {
    209  1.1  jruoho         return ("FunctionalFixedHW");
    210  1.1  jruoho     }
    211  1.1  jruoho     else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS)
    212  1.1  jruoho     {
    213  1.1  jruoho         return ("InvalidSpaceId");
    214  1.1  jruoho     }
    215  1.1  jruoho 
    216  1.1  jruoho     return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId]));
    217  1.1  jruoho }
    218  1.1  jruoho 
    219  1.1  jruoho 
    220  1.1  jruoho /*******************************************************************************
    221  1.1  jruoho  *
    222  1.1  jruoho  * FUNCTION:    AcpiUtGetEventName
    223  1.1  jruoho  *
    224  1.1  jruoho  * PARAMETERS:  EventId             - Fixed event ID
    225  1.1  jruoho  *
    226  1.1  jruoho  * RETURN:      Decoded event ID name
    227  1.1  jruoho  *
    228  1.1  jruoho  * DESCRIPTION: Translate a Event ID into a name string (Debug only)
    229  1.1  jruoho  *
    230  1.1  jruoho  ******************************************************************************/
    231  1.1  jruoho 
    232  1.1  jruoho /* Event type decoding */
    233  1.1  jruoho 
    234  1.1  jruoho static const char        *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] =
    235  1.1  jruoho {
    236  1.1  jruoho     "PM_Timer",
    237  1.1  jruoho     "GlobalLock",
    238  1.1  jruoho     "PowerButton",
    239  1.1  jruoho     "SleepButton",
    240  1.1  jruoho     "RealTimeClock",
    241  1.1  jruoho };
    242  1.1  jruoho 
    243  1.1  jruoho 
    244  1.2  jruoho const char *
    245  1.1  jruoho AcpiUtGetEventName (
    246  1.1  jruoho     UINT32                  EventId)
    247  1.1  jruoho {
    248  1.1  jruoho 
    249  1.1  jruoho     if (EventId > ACPI_EVENT_MAX)
    250  1.1  jruoho     {
    251  1.1  jruoho         return ("InvalidEventID");
    252  1.1  jruoho     }
    253  1.1  jruoho 
    254  1.1  jruoho     return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId]));
    255  1.1  jruoho }
    256  1.1  jruoho 
    257  1.1  jruoho 
    258  1.1  jruoho /*******************************************************************************
    259  1.1  jruoho  *
    260  1.1  jruoho  * FUNCTION:    AcpiUtGetTypeName
    261  1.1  jruoho  *
    262  1.1  jruoho  * PARAMETERS:  Type                - An ACPI object type
    263  1.1  jruoho  *
    264  1.1  jruoho  * RETURN:      Decoded ACPI object type name
    265  1.1  jruoho  *
    266  1.1  jruoho  * DESCRIPTION: Translate a Type ID into a name string (Debug only)
    267  1.1  jruoho  *
    268  1.1  jruoho  ******************************************************************************/
    269  1.1  jruoho 
    270  1.1  jruoho /*
    271  1.1  jruoho  * Elements of AcpiGbl_NsTypeNames below must match
    272  1.1  jruoho  * one-to-one with values of ACPI_OBJECT_TYPE
    273  1.1  jruoho  *
    274  1.1  jruoho  * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching;
    275  1.1  jruoho  * when stored in a table it really means that we have thus far seen no
    276  1.1  jruoho  * evidence to indicate what type is actually going to be stored for this entry.
    277  1.1  jruoho  */
    278  1.1  jruoho static const char           AcpiGbl_BadType[] = "UNDEFINED";
    279  1.1  jruoho 
    280  1.1  jruoho /* Printable names of the ACPI object types */
    281  1.1  jruoho 
    282  1.1  jruoho static const char           *AcpiGbl_NsTypeNames[] =
    283  1.1  jruoho {
    284  1.1  jruoho     /* 00 */ "Untyped",
    285  1.1  jruoho     /* 01 */ "Integer",
    286  1.1  jruoho     /* 02 */ "String",
    287  1.1  jruoho     /* 03 */ "Buffer",
    288  1.1  jruoho     /* 04 */ "Package",
    289  1.1  jruoho     /* 05 */ "FieldUnit",
    290  1.1  jruoho     /* 06 */ "Device",
    291  1.1  jruoho     /* 07 */ "Event",
    292  1.1  jruoho     /* 08 */ "Method",
    293  1.1  jruoho     /* 09 */ "Mutex",
    294  1.1  jruoho     /* 10 */ "Region",
    295  1.1  jruoho     /* 11 */ "Power",
    296  1.1  jruoho     /* 12 */ "Processor",
    297  1.1  jruoho     /* 13 */ "Thermal",
    298  1.1  jruoho     /* 14 */ "BufferField",
    299  1.1  jruoho     /* 15 */ "DdbHandle",
    300  1.1  jruoho     /* 16 */ "DebugObject",
    301  1.1  jruoho     /* 17 */ "RegionField",
    302  1.1  jruoho     /* 18 */ "BankField",
    303  1.1  jruoho     /* 19 */ "IndexField",
    304  1.1  jruoho     /* 20 */ "Reference",
    305  1.1  jruoho     /* 21 */ "Alias",
    306  1.1  jruoho     /* 22 */ "MethodAlias",
    307  1.1  jruoho     /* 23 */ "Notify",
    308  1.1  jruoho     /* 24 */ "AddrHandler",
    309  1.1  jruoho     /* 25 */ "ResourceDesc",
    310  1.1  jruoho     /* 26 */ "ResourceFld",
    311  1.1  jruoho     /* 27 */ "Scope",
    312  1.1  jruoho     /* 28 */ "Extra",
    313  1.1  jruoho     /* 29 */ "Data",
    314  1.1  jruoho     /* 30 */ "Invalid"
    315  1.1  jruoho };
    316  1.1  jruoho 
    317  1.1  jruoho 
    318  1.3  jruoho char *
    319  1.1  jruoho AcpiUtGetTypeName (
    320  1.1  jruoho     ACPI_OBJECT_TYPE        Type)
    321  1.1  jruoho {
    322  1.1  jruoho 
    323  1.1  jruoho     if (Type > ACPI_TYPE_INVALID)
    324  1.1  jruoho     {
    325  1.1  jruoho         return (ACPI_CAST_PTR (char, AcpiGbl_BadType));
    326  1.1  jruoho     }
    327  1.1  jruoho 
    328  1.1  jruoho     return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type]));
    329  1.1  jruoho }
    330  1.1  jruoho 
    331  1.1  jruoho 
    332  1.2  jruoho const char *
    333  1.1  jruoho AcpiUtGetObjectTypeName (
    334  1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc)
    335  1.1  jruoho {
    336  1.1  jruoho 
    337  1.1  jruoho     if (!ObjDesc)
    338  1.1  jruoho     {
    339  1.1  jruoho         return ("[NULL Object Descriptor]");
    340  1.1  jruoho     }
    341  1.1  jruoho 
    342  1.1  jruoho     return (AcpiUtGetTypeName (ObjDesc->Common.Type));
    343  1.1  jruoho }
    344  1.1  jruoho 
    345  1.1  jruoho 
    346  1.1  jruoho /*******************************************************************************
    347  1.1  jruoho  *
    348  1.1  jruoho  * FUNCTION:    AcpiUtGetNodeName
    349  1.1  jruoho  *
    350  1.1  jruoho  * PARAMETERS:  Object               - A namespace node
    351  1.1  jruoho  *
    352  1.1  jruoho  * RETURN:      ASCII name of the node
    353  1.1  jruoho  *
    354  1.1  jruoho  * DESCRIPTION: Validate the node and return the node's ACPI name.
    355  1.1  jruoho  *
    356  1.1  jruoho  ******************************************************************************/
    357  1.1  jruoho 
    358  1.2  jruoho const char *
    359  1.1  jruoho AcpiUtGetNodeName (
    360  1.1  jruoho     void                    *Object)
    361  1.1  jruoho {
    362  1.1  jruoho     ACPI_NAMESPACE_NODE     *Node = (ACPI_NAMESPACE_NODE *) Object;
    363  1.1  jruoho 
    364  1.1  jruoho 
    365  1.1  jruoho     /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
    366  1.1  jruoho 
    367  1.1  jruoho     if (!Object)
    368  1.1  jruoho     {
    369  1.1  jruoho         return ("NULL");
    370  1.1  jruoho     }
    371  1.1  jruoho 
    372  1.1  jruoho     /* Check for Root node */
    373  1.1  jruoho 
    374  1.1  jruoho     if ((Object == ACPI_ROOT_OBJECT) ||
    375  1.1  jruoho         (Object == AcpiGbl_RootNode))
    376  1.1  jruoho     {
    377  1.1  jruoho         return ("\"\\\" ");
    378  1.1  jruoho     }
    379  1.1  jruoho 
    380  1.1  jruoho     /* Descriptor must be a namespace node */
    381  1.1  jruoho 
    382  1.1  jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED)
    383  1.1  jruoho     {
    384  1.1  jruoho         return ("####");
    385  1.1  jruoho     }
    386  1.1  jruoho 
    387  1.1  jruoho     /*
    388  1.1  jruoho      * Ensure name is valid. The name was validated/repaired when the node
    389  1.1  jruoho      * was created, but make sure it has not been corrupted.
    390  1.1  jruoho      */
    391  1.1  jruoho     AcpiUtRepairName (Node->Name.Ascii);
    392  1.1  jruoho 
    393  1.1  jruoho     /* Return the name */
    394  1.1  jruoho 
    395  1.1  jruoho     return (Node->Name.Ascii);
    396  1.1  jruoho }
    397  1.1  jruoho 
    398  1.1  jruoho 
    399  1.1  jruoho /*******************************************************************************
    400  1.1  jruoho  *
    401  1.1  jruoho  * FUNCTION:    AcpiUtGetDescriptorName
    402  1.1  jruoho  *
    403  1.1  jruoho  * PARAMETERS:  Object               - An ACPI object
    404  1.1  jruoho  *
    405  1.1  jruoho  * RETURN:      Decoded name of the descriptor type
    406  1.1  jruoho  *
    407  1.1  jruoho  * DESCRIPTION: Validate object and return the descriptor type
    408  1.1  jruoho  *
    409  1.1  jruoho  ******************************************************************************/
    410  1.1  jruoho 
    411  1.1  jruoho /* Printable names of object descriptor types */
    412  1.1  jruoho 
    413  1.1  jruoho static const char           *AcpiGbl_DescTypeNames[] =
    414  1.1  jruoho {
    415  1.1  jruoho     /* 00 */ "Not a Descriptor",
    416  1.1  jruoho     /* 01 */ "Cached",
    417  1.1  jruoho     /* 02 */ "State-Generic",
    418  1.1  jruoho     /* 03 */ "State-Update",
    419  1.1  jruoho     /* 04 */ "State-Package",
    420  1.1  jruoho     /* 05 */ "State-Control",
    421  1.1  jruoho     /* 06 */ "State-RootParseScope",
    422  1.1  jruoho     /* 07 */ "State-ParseScope",
    423  1.1  jruoho     /* 08 */ "State-WalkScope",
    424  1.1  jruoho     /* 09 */ "State-Result",
    425  1.1  jruoho     /* 10 */ "State-Notify",
    426  1.1  jruoho     /* 11 */ "State-Thread",
    427  1.1  jruoho     /* 12 */ "Walk",
    428  1.1  jruoho     /* 13 */ "Parser",
    429  1.1  jruoho     /* 14 */ "Operand",
    430  1.1  jruoho     /* 15 */ "Node"
    431  1.1  jruoho };
    432  1.1  jruoho 
    433  1.1  jruoho 
    434  1.2  jruoho const char *
    435  1.1  jruoho AcpiUtGetDescriptorName (
    436  1.1  jruoho     void                    *Object)
    437  1.1  jruoho {
    438  1.1  jruoho 
    439  1.1  jruoho     if (!Object)
    440  1.1  jruoho     {
    441  1.1  jruoho         return ("NULL OBJECT");
    442  1.1  jruoho     }
    443  1.1  jruoho 
    444  1.1  jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX)
    445  1.1  jruoho     {
    446  1.1  jruoho         return ("Not a Descriptor");
    447  1.1  jruoho     }
    448  1.1  jruoho 
    449  1.1  jruoho     return (ACPI_CAST_PTR (char,
    450  1.1  jruoho         AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)]));
    451  1.1  jruoho 
    452  1.1  jruoho }
    453  1.1  jruoho 
    454  1.1  jruoho 
    455  1.1  jruoho /*******************************************************************************
    456  1.1  jruoho  *
    457  1.1  jruoho  * FUNCTION:    AcpiUtGetReferenceName
    458  1.1  jruoho  *
    459  1.1  jruoho  * PARAMETERS:  Object               - An ACPI reference object
    460  1.1  jruoho  *
    461  1.1  jruoho  * RETURN:      Decoded name of the type of reference
    462  1.1  jruoho  *
    463  1.1  jruoho  * DESCRIPTION: Decode a reference object sub-type to a string.
    464  1.1  jruoho  *
    465  1.1  jruoho  ******************************************************************************/
    466  1.1  jruoho 
    467  1.1  jruoho /* Printable names of reference object sub-types */
    468  1.1  jruoho 
    469  1.1  jruoho static const char           *AcpiGbl_RefClassNames[] =
    470  1.1  jruoho {
    471  1.1  jruoho     /* 00 */ "Local",
    472  1.1  jruoho     /* 01 */ "Argument",
    473  1.1  jruoho     /* 02 */ "RefOf",
    474  1.1  jruoho     /* 03 */ "Index",
    475  1.1  jruoho     /* 04 */ "DdbHandle",
    476  1.1  jruoho     /* 05 */ "Named Object",
    477  1.1  jruoho     /* 06 */ "Debug"
    478  1.1  jruoho };
    479  1.1  jruoho 
    480  1.1  jruoho const char *
    481  1.1  jruoho AcpiUtGetReferenceName (
    482  1.1  jruoho     ACPI_OPERAND_OBJECT     *Object)
    483  1.1  jruoho {
    484  1.1  jruoho 
    485  1.1  jruoho     if (!Object)
    486  1.1  jruoho     {
    487  1.1  jruoho         return ("NULL Object");
    488  1.1  jruoho     }
    489  1.1  jruoho 
    490  1.1  jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND)
    491  1.1  jruoho     {
    492  1.1  jruoho         return ("Not an Operand object");
    493  1.1  jruoho     }
    494  1.1  jruoho 
    495  1.1  jruoho     if (Object->Common.Type != ACPI_TYPE_LOCAL_REFERENCE)
    496  1.1  jruoho     {
    497  1.1  jruoho         return ("Not a Reference object");
    498  1.1  jruoho     }
    499  1.1  jruoho 
    500  1.1  jruoho     if (Object->Reference.Class > ACPI_REFCLASS_MAX)
    501  1.1  jruoho     {
    502  1.1  jruoho         return ("Unknown Reference class");
    503  1.1  jruoho     }
    504  1.1  jruoho 
    505  1.1  jruoho     return (AcpiGbl_RefClassNames[Object->Reference.Class]);
    506  1.1  jruoho }
    507  1.1  jruoho 
    508  1.1  jruoho 
    509  1.1  jruoho #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
    510  1.1  jruoho /*
    511  1.1  jruoho  * Strings and procedures used for debug only
    512  1.1  jruoho  */
    513  1.1  jruoho 
    514  1.1  jruoho /*******************************************************************************
    515  1.1  jruoho  *
    516  1.1  jruoho  * FUNCTION:    AcpiUtGetMutexName
    517  1.1  jruoho  *
    518  1.1  jruoho  * PARAMETERS:  MutexId         - The predefined ID for this mutex.
    519  1.1  jruoho  *
    520  1.1  jruoho  * RETURN:      Decoded name of the internal mutex
    521  1.1  jruoho  *
    522  1.1  jruoho  * DESCRIPTION: Translate a mutex ID into a name string (Debug only)
    523  1.1  jruoho  *
    524  1.1  jruoho  ******************************************************************************/
    525  1.1  jruoho 
    526  1.1  jruoho /* Names for internal mutex objects, used for debug output */
    527  1.1  jruoho 
    528  1.3  jruoho static const char              *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] =
    529  1.1  jruoho {
    530  1.1  jruoho     "ACPI_MTX_Interpreter",
    531  1.1  jruoho     "ACPI_MTX_Namespace",
    532  1.1  jruoho     "ACPI_MTX_Tables",
    533  1.1  jruoho     "ACPI_MTX_Events",
    534  1.1  jruoho     "ACPI_MTX_Caches",
    535  1.1  jruoho     "ACPI_MTX_Memory",
    536  1.1  jruoho     "ACPI_MTX_CommandComplete",
    537  1.1  jruoho     "ACPI_MTX_CommandReady"
    538  1.1  jruoho };
    539  1.1  jruoho 
    540  1.2  jruoho const char *
    541  1.1  jruoho AcpiUtGetMutexName (
    542  1.1  jruoho     UINT32                  MutexId)
    543  1.1  jruoho {
    544  1.1  jruoho 
    545  1.1  jruoho     if (MutexId > ACPI_MAX_MUTEX)
    546  1.1  jruoho     {
    547  1.1  jruoho         return ("Invalid Mutex ID");
    548  1.1  jruoho     }
    549  1.1  jruoho 
    550  1.1  jruoho     return (AcpiGbl_MutexNames[MutexId]);
    551  1.1  jruoho }
    552  1.1  jruoho 
    553  1.1  jruoho 
    554  1.1  jruoho /*******************************************************************************
    555  1.1  jruoho  *
    556  1.1  jruoho  * FUNCTION:    AcpiUtGetNotifyName
    557  1.1  jruoho  *
    558  1.1  jruoho  * PARAMETERS:  NotifyValue     - Value from the Notify() request
    559  1.1  jruoho  *
    560  1.1  jruoho  * RETURN:      Decoded name for the notify value
    561  1.1  jruoho  *
    562  1.1  jruoho  * DESCRIPTION: Translate a Notify Value to a notify namestring.
    563  1.1  jruoho  *
    564  1.1  jruoho  ******************************************************************************/
    565  1.1  jruoho 
    566  1.1  jruoho /* Names for Notify() values, used for debug output */
    567  1.1  jruoho 
    568  1.1  jruoho static const char           *AcpiGbl_NotifyValueNames[] =
    569  1.1  jruoho {
    570  1.1  jruoho     "Bus Check",
    571  1.1  jruoho     "Device Check",
    572  1.1  jruoho     "Device Wake",
    573  1.1  jruoho     "Eject Request",
    574  1.1  jruoho     "Device Check Light",
    575  1.1  jruoho     "Frequency Mismatch",
    576  1.1  jruoho     "Bus Mode Mismatch",
    577  1.1  jruoho     "Power Fault",
    578  1.1  jruoho     "Capabilities Check",
    579  1.1  jruoho     "Device PLD Check",
    580  1.1  jruoho     "Reserved",
    581  1.1  jruoho     "System Locality Update"
    582  1.1  jruoho };
    583  1.1  jruoho 
    584  1.1  jruoho const char *
    585  1.1  jruoho AcpiUtGetNotifyName (
    586  1.1  jruoho     UINT32                  NotifyValue)
    587  1.1  jruoho {
    588  1.1  jruoho 
    589  1.1  jruoho     if (NotifyValue <= ACPI_NOTIFY_MAX)
    590  1.1  jruoho     {
    591  1.1  jruoho         return (AcpiGbl_NotifyValueNames[NotifyValue]);
    592  1.1  jruoho     }
    593  1.1  jruoho     else if (NotifyValue <= ACPI_MAX_SYS_NOTIFY)
    594  1.1  jruoho     {
    595  1.1  jruoho         return ("Reserved");
    596  1.1  jruoho     }
    597  1.1  jruoho     else /* Greater or equal to 0x80 */
    598  1.1  jruoho     {
    599  1.1  jruoho         return ("**Device Specific**");
    600  1.1  jruoho     }
    601  1.1  jruoho }
    602  1.1  jruoho #endif
    603  1.1  jruoho 
    604  1.1  jruoho 
    605  1.1  jruoho /*******************************************************************************
    606  1.1  jruoho  *
    607  1.1  jruoho  * FUNCTION:    AcpiUtValidObjectType
    608  1.1  jruoho  *
    609  1.1  jruoho  * PARAMETERS:  Type            - Object type to be validated
    610  1.1  jruoho  *
    611  1.1  jruoho  * RETURN:      TRUE if valid object type, FALSE otherwise
    612  1.1  jruoho  *
    613  1.1  jruoho  * DESCRIPTION: Validate an object type
    614  1.1  jruoho  *
    615  1.1  jruoho  ******************************************************************************/
    616  1.1  jruoho 
    617  1.1  jruoho BOOLEAN
    618  1.1  jruoho AcpiUtValidObjectType (
    619  1.1  jruoho     ACPI_OBJECT_TYPE        Type)
    620  1.1  jruoho {
    621  1.1  jruoho 
    622  1.1  jruoho     if (Type > ACPI_TYPE_LOCAL_MAX)
    623  1.1  jruoho     {
    624  1.1  jruoho         /* Note: Assumes all TYPEs are contiguous (external/local) */
    625  1.1  jruoho 
    626  1.1  jruoho         return (FALSE);
    627  1.1  jruoho     }
    628  1.1  jruoho 
    629  1.1  jruoho     return (TRUE);
    630  1.1  jruoho }
    631