1218585Sjkim/****************************************************************************** 2218585Sjkim * 3218585Sjkim * Module Name: utdecode - Utility decoding routines (value-to-string) 4218585Sjkim * 5218585Sjkim *****************************************************************************/ 6218585Sjkim 7218585Sjkim/* 8218585Sjkim * Copyright (C) 2000 - 2011, Intel Corp. 9218585Sjkim * All rights reserved. 10218585Sjkim * 11218585Sjkim * Redistribution and use in source and binary forms, with or without 12218585Sjkim * modification, are permitted provided that the following conditions 13218585Sjkim * are met: 14218585Sjkim * 1. Redistributions of source code must retain the above copyright 15218585Sjkim * notice, this list of conditions, and the following disclaimer, 16218585Sjkim * without modification. 17218585Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18218585Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19218585Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20218585Sjkim * including a substantially similar Disclaimer requirement for further 21218585Sjkim * binary redistribution. 22218585Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23218585Sjkim * of any contributors may be used to endorse or promote products derived 24218585Sjkim * from this software without specific prior written permission. 25218585Sjkim * 26218585Sjkim * Alternatively, this software may be distributed under the terms of the 27218585Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28218585Sjkim * Software Foundation. 29218585Sjkim * 30218585Sjkim * NO WARRANTY 31218585Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32218585Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33218585Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34218585Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35218585Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36218585Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37218585Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38218585Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39218585Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40218585Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41218585Sjkim * POSSIBILITY OF SUCH DAMAGES. 42218585Sjkim */ 43218585Sjkim 44218585Sjkim#define __UTDECODE_C__ 45218585Sjkim 46218590Sjkim#include <contrib/dev/acpica/include/acpi.h> 47218590Sjkim#include <contrib/dev/acpica/include/accommon.h> 48218590Sjkim#include <contrib/dev/acpica/include/acnamesp.h> 49218585Sjkim 50218585Sjkim#define _COMPONENT ACPI_UTILITIES 51218585Sjkim ACPI_MODULE_NAME ("utdecode") 52218585Sjkim 53218585Sjkim 54218585Sjkim/******************************************************************************* 55218585Sjkim * 56218585Sjkim * FUNCTION: AcpiFormatException 57218585Sjkim * 58218585Sjkim * PARAMETERS: Status - The ACPI_STATUS code to be formatted 59218585Sjkim * 60218585Sjkim * RETURN: A string containing the exception text. A valid pointer is 61218585Sjkim * always returned. 62218585Sjkim * 63218585Sjkim * DESCRIPTION: This function translates an ACPI exception into an ASCII string 64218585Sjkim * It is here instead of utxface.c so it is always present. 65218585Sjkim * 66218585Sjkim ******************************************************************************/ 67218585Sjkim 68218585Sjkimconst char * 69218585SjkimAcpiFormatException ( 70218585Sjkim ACPI_STATUS Status) 71218585Sjkim{ 72218585Sjkim const char *Exception = NULL; 73218585Sjkim 74218585Sjkim 75218585Sjkim ACPI_FUNCTION_ENTRY (); 76218585Sjkim 77218585Sjkim 78218585Sjkim Exception = AcpiUtValidateException (Status); 79218585Sjkim if (!Exception) 80218585Sjkim { 81218585Sjkim /* Exception code was not recognized */ 82218585Sjkim 83218585Sjkim ACPI_ERROR ((AE_INFO, 84218585Sjkim "Unknown exception code: 0x%8.8X", Status)); 85218585Sjkim 86218585Sjkim Exception = "UNKNOWN_STATUS_CODE"; 87218585Sjkim } 88218585Sjkim 89218585Sjkim return (ACPI_CAST_PTR (const char, Exception)); 90218585Sjkim} 91218585Sjkim 92218585SjkimACPI_EXPORT_SYMBOL (AcpiFormatException) 93218585Sjkim 94218585Sjkim 95218585Sjkim/* 96218585Sjkim * Properties of the ACPI Object Types, both internal and external. 97218585Sjkim * The table is indexed by values of ACPI_OBJECT_TYPE 98218585Sjkim */ 99218585Sjkimconst UINT8 AcpiGbl_NsProperties[ACPI_NUM_NS_TYPES] = 100218585Sjkim{ 101218585Sjkim ACPI_NS_NORMAL, /* 00 Any */ 102218585Sjkim ACPI_NS_NORMAL, /* 01 Number */ 103218585Sjkim ACPI_NS_NORMAL, /* 02 String */ 104218585Sjkim ACPI_NS_NORMAL, /* 03 Buffer */ 105218585Sjkim ACPI_NS_NORMAL, /* 04 Package */ 106218585Sjkim ACPI_NS_NORMAL, /* 05 FieldUnit */ 107218585Sjkim ACPI_NS_NEWSCOPE, /* 06 Device */ 108218585Sjkim ACPI_NS_NORMAL, /* 07 Event */ 109218585Sjkim ACPI_NS_NEWSCOPE, /* 08 Method */ 110218585Sjkim ACPI_NS_NORMAL, /* 09 Mutex */ 111218585Sjkim ACPI_NS_NORMAL, /* 10 Region */ 112218585Sjkim ACPI_NS_NEWSCOPE, /* 11 Power */ 113218585Sjkim ACPI_NS_NEWSCOPE, /* 12 Processor */ 114218585Sjkim ACPI_NS_NEWSCOPE, /* 13 Thermal */ 115218585Sjkim ACPI_NS_NORMAL, /* 14 BufferField */ 116218585Sjkim ACPI_NS_NORMAL, /* 15 DdbHandle */ 117218585Sjkim ACPI_NS_NORMAL, /* 16 Debug Object */ 118218585Sjkim ACPI_NS_NORMAL, /* 17 DefField */ 119218585Sjkim ACPI_NS_NORMAL, /* 18 BankField */ 120218585Sjkim ACPI_NS_NORMAL, /* 19 IndexField */ 121218585Sjkim ACPI_NS_NORMAL, /* 20 Reference */ 122218585Sjkim ACPI_NS_NORMAL, /* 21 Alias */ 123218585Sjkim ACPI_NS_NORMAL, /* 22 MethodAlias */ 124218585Sjkim ACPI_NS_NORMAL, /* 23 Notify */ 125218585Sjkim ACPI_NS_NORMAL, /* 24 Address Handler */ 126218585Sjkim ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Desc */ 127218585Sjkim ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 26 Resource Field */ 128218585Sjkim ACPI_NS_NEWSCOPE, /* 27 Scope */ 129218585Sjkim ACPI_NS_NORMAL, /* 28 Extra */ 130218585Sjkim ACPI_NS_NORMAL, /* 29 Data */ 131218585Sjkim ACPI_NS_NORMAL /* 30 Invalid */ 132218585Sjkim}; 133218585Sjkim 134218585Sjkim 135218585Sjkim/******************************************************************************* 136218585Sjkim * 137218585Sjkim * FUNCTION: AcpiUtHexToAsciiChar 138218585Sjkim * 139218585Sjkim * PARAMETERS: Integer - Contains the hex digit 140218585Sjkim * Position - bit position of the digit within the 141218585Sjkim * integer (multiple of 4) 142218585Sjkim * 143218585Sjkim * RETURN: The converted Ascii character 144218585Sjkim * 145218585Sjkim * DESCRIPTION: Convert a hex digit to an Ascii character 146218585Sjkim * 147218585Sjkim ******************************************************************************/ 148218585Sjkim 149218585Sjkim/* Hex to ASCII conversion table */ 150218585Sjkim 151218585Sjkimstatic const char AcpiGbl_HexToAscii[] = 152218585Sjkim{ 153218585Sjkim '0','1','2','3','4','5','6','7', 154218585Sjkim '8','9','A','B','C','D','E','F' 155218585Sjkim}; 156218585Sjkim 157218585Sjkimchar 158218585SjkimAcpiUtHexToAsciiChar ( 159218585Sjkim UINT64 Integer, 160218585Sjkim UINT32 Position) 161218585Sjkim{ 162218585Sjkim 163218585Sjkim return (AcpiGbl_HexToAscii[(Integer >> Position) & 0xF]); 164218585Sjkim} 165218585Sjkim 166218585Sjkim 167218585Sjkim/******************************************************************************* 168218585Sjkim * 169218585Sjkim * FUNCTION: AcpiUtGetRegionName 170218585Sjkim * 171218585Sjkim * PARAMETERS: Space ID - ID for the region 172218585Sjkim * 173218585Sjkim * RETURN: Decoded region SpaceId name 174218585Sjkim * 175218585Sjkim * DESCRIPTION: Translate a Space ID into a name string (Debug only) 176218585Sjkim * 177218585Sjkim ******************************************************************************/ 178218585Sjkim 179218585Sjkim/* Region type decoding */ 180218585Sjkim 181218585Sjkimconst char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = 182218585Sjkim{ 183218585Sjkim "SystemMemory", 184218585Sjkim "SystemIO", 185218585Sjkim "PCI_Config", 186218585Sjkim "EmbeddedControl", 187218585Sjkim "SMBus", 188218585Sjkim "SystemCMOS", 189218585Sjkim "PCIBARTarget", 190220663Sjkim "IPMI" 191218585Sjkim}; 192218585Sjkim 193218585Sjkim 194218585Sjkimchar * 195218585SjkimAcpiUtGetRegionName ( 196218585Sjkim UINT8 SpaceId) 197218585Sjkim{ 198218585Sjkim 199218585Sjkim if (SpaceId >= ACPI_USER_REGION_BEGIN) 200218585Sjkim { 201218585Sjkim return ("UserDefinedRegion"); 202218585Sjkim } 203220663Sjkim else if (SpaceId == ACPI_ADR_SPACE_DATA_TABLE) 204220663Sjkim { 205220663Sjkim return ("DataTable"); 206220663Sjkim } 207218585Sjkim else if (SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE) 208218585Sjkim { 209218585Sjkim return ("FunctionalFixedHW"); 210218585Sjkim } 211218585Sjkim else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS) 212218585Sjkim { 213218585Sjkim return ("InvalidSpaceId"); 214218585Sjkim } 215218585Sjkim 216218585Sjkim return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId])); 217218585Sjkim} 218218585Sjkim 219218585Sjkim 220218585Sjkim/******************************************************************************* 221218585Sjkim * 222218585Sjkim * FUNCTION: AcpiUtGetEventName 223218585Sjkim * 224218585Sjkim * PARAMETERS: EventId - Fixed event ID 225218585Sjkim * 226218585Sjkim * RETURN: Decoded event ID name 227218585Sjkim * 228218585Sjkim * DESCRIPTION: Translate a Event ID into a name string (Debug only) 229218585Sjkim * 230218585Sjkim ******************************************************************************/ 231218585Sjkim 232218585Sjkim/* Event type decoding */ 233218585Sjkim 234218585Sjkimstatic const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] = 235218585Sjkim{ 236218585Sjkim "PM_Timer", 237218585Sjkim "GlobalLock", 238218585Sjkim "PowerButton", 239218585Sjkim "SleepButton", 240218585Sjkim "RealTimeClock", 241218585Sjkim}; 242218585Sjkim 243218585Sjkim 244218585Sjkimchar * 245218585SjkimAcpiUtGetEventName ( 246218585Sjkim UINT32 EventId) 247218585Sjkim{ 248218585Sjkim 249218585Sjkim if (EventId > ACPI_EVENT_MAX) 250218585Sjkim { 251218585Sjkim return ("InvalidEventID"); 252218585Sjkim } 253218585Sjkim 254218585Sjkim return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId])); 255218585Sjkim} 256218585Sjkim 257218585Sjkim 258218585Sjkim/******************************************************************************* 259218585Sjkim * 260218585Sjkim * FUNCTION: AcpiUtGetTypeName 261218585Sjkim * 262218585Sjkim * PARAMETERS: Type - An ACPI object type 263218585Sjkim * 264218585Sjkim * RETURN: Decoded ACPI object type name 265218585Sjkim * 266218585Sjkim * DESCRIPTION: Translate a Type ID into a name string (Debug only) 267218585Sjkim * 268218585Sjkim ******************************************************************************/ 269218585Sjkim 270218585Sjkim/* 271218585Sjkim * Elements of AcpiGbl_NsTypeNames below must match 272218585Sjkim * one-to-one with values of ACPI_OBJECT_TYPE 273218585Sjkim * 274218585Sjkim * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching; 275218585Sjkim * when stored in a table it really means that we have thus far seen no 276218585Sjkim * evidence to indicate what type is actually going to be stored for this entry. 277218585Sjkim */ 278218585Sjkimstatic const char AcpiGbl_BadType[] = "UNDEFINED"; 279218585Sjkim 280218585Sjkim/* Printable names of the ACPI object types */ 281218585Sjkim 282218585Sjkimstatic const char *AcpiGbl_NsTypeNames[] = 283218585Sjkim{ 284218585Sjkim /* 00 */ "Untyped", 285218585Sjkim /* 01 */ "Integer", 286218585Sjkim /* 02 */ "String", 287218585Sjkim /* 03 */ "Buffer", 288218585Sjkim /* 04 */ "Package", 289218585Sjkim /* 05 */ "FieldUnit", 290218585Sjkim /* 06 */ "Device", 291218585Sjkim /* 07 */ "Event", 292218585Sjkim /* 08 */ "Method", 293218585Sjkim /* 09 */ "Mutex", 294218585Sjkim /* 10 */ "Region", 295218585Sjkim /* 11 */ "Power", 296218585Sjkim /* 12 */ "Processor", 297218585Sjkim /* 13 */ "Thermal", 298218585Sjkim /* 14 */ "BufferField", 299218585Sjkim /* 15 */ "DdbHandle", 300218585Sjkim /* 16 */ "DebugObject", 301218585Sjkim /* 17 */ "RegionField", 302218585Sjkim /* 18 */ "BankField", 303218585Sjkim /* 19 */ "IndexField", 304218585Sjkim /* 20 */ "Reference", 305218585Sjkim /* 21 */ "Alias", 306218585Sjkim /* 22 */ "MethodAlias", 307218585Sjkim /* 23 */ "Notify", 308218585Sjkim /* 24 */ "AddrHandler", 309218585Sjkim /* 25 */ "ResourceDesc", 310218585Sjkim /* 26 */ "ResourceFld", 311218585Sjkim /* 27 */ "Scope", 312218585Sjkim /* 28 */ "Extra", 313218585Sjkim /* 29 */ "Data", 314218585Sjkim /* 30 */ "Invalid" 315218585Sjkim}; 316218585Sjkim 317218585Sjkim 318218585Sjkimchar * 319218585SjkimAcpiUtGetTypeName ( 320218585Sjkim ACPI_OBJECT_TYPE Type) 321218585Sjkim{ 322218585Sjkim 323218585Sjkim if (Type > ACPI_TYPE_INVALID) 324218585Sjkim { 325218585Sjkim return (ACPI_CAST_PTR (char, AcpiGbl_BadType)); 326218585Sjkim } 327218585Sjkim 328218585Sjkim return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type])); 329218585Sjkim} 330218585Sjkim 331218585Sjkim 332218585Sjkimchar * 333218585SjkimAcpiUtGetObjectTypeName ( 334218585Sjkim ACPI_OPERAND_OBJECT *ObjDesc) 335218585Sjkim{ 336218585Sjkim 337218585Sjkim if (!ObjDesc) 338218585Sjkim { 339218585Sjkim return ("[NULL Object Descriptor]"); 340218585Sjkim } 341218585Sjkim 342218585Sjkim return (AcpiUtGetTypeName (ObjDesc->Common.Type)); 343218585Sjkim} 344218585Sjkim 345218585Sjkim 346218585Sjkim/******************************************************************************* 347218585Sjkim * 348218585Sjkim * FUNCTION: AcpiUtGetNodeName 349218585Sjkim * 350218585Sjkim * PARAMETERS: Object - A namespace node 351218585Sjkim * 352218585Sjkim * RETURN: ASCII name of the node 353218585Sjkim * 354218585Sjkim * DESCRIPTION: Validate the node and return the node's ACPI name. 355218585Sjkim * 356218585Sjkim ******************************************************************************/ 357218585Sjkim 358218585Sjkimchar * 359218585SjkimAcpiUtGetNodeName ( 360218585Sjkim void *Object) 361218585Sjkim{ 362218585Sjkim ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) Object; 363218585Sjkim 364218585Sjkim 365218585Sjkim /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */ 366218585Sjkim 367218585Sjkim if (!Object) 368218585Sjkim { 369218585Sjkim return ("NULL"); 370218585Sjkim } 371218585Sjkim 372218585Sjkim /* Check for Root node */ 373218585Sjkim 374218585Sjkim if ((Object == ACPI_ROOT_OBJECT) || 375218585Sjkim (Object == AcpiGbl_RootNode)) 376218585Sjkim { 377218585Sjkim return ("\"\\\" "); 378218585Sjkim } 379218585Sjkim 380218585Sjkim /* Descriptor must be a namespace node */ 381218585Sjkim 382218585Sjkim if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) 383218585Sjkim { 384218585Sjkim return ("####"); 385218585Sjkim } 386218585Sjkim 387218585Sjkim /* 388218585Sjkim * Ensure name is valid. The name was validated/repaired when the node 389218585Sjkim * was created, but make sure it has not been corrupted. 390218585Sjkim */ 391218585Sjkim AcpiUtRepairName (Node->Name.Ascii); 392218585Sjkim 393218585Sjkim /* Return the name */ 394218585Sjkim 395218585Sjkim return (Node->Name.Ascii); 396218585Sjkim} 397218585Sjkim 398218585Sjkim 399218585Sjkim/******************************************************************************* 400218585Sjkim * 401218585Sjkim * FUNCTION: AcpiUtGetDescriptorName 402218585Sjkim * 403218585Sjkim * PARAMETERS: Object - An ACPI object 404218585Sjkim * 405218585Sjkim * RETURN: Decoded name of the descriptor type 406218585Sjkim * 407218585Sjkim * DESCRIPTION: Validate object and return the descriptor type 408218585Sjkim * 409218585Sjkim ******************************************************************************/ 410218585Sjkim 411218585Sjkim/* Printable names of object descriptor types */ 412218585Sjkim 413218585Sjkimstatic const char *AcpiGbl_DescTypeNames[] = 414218585Sjkim{ 415218585Sjkim /* 00 */ "Not a Descriptor", 416218585Sjkim /* 01 */ "Cached", 417218585Sjkim /* 02 */ "State-Generic", 418218585Sjkim /* 03 */ "State-Update", 419218585Sjkim /* 04 */ "State-Package", 420218585Sjkim /* 05 */ "State-Control", 421218585Sjkim /* 06 */ "State-RootParseScope", 422218585Sjkim /* 07 */ "State-ParseScope", 423218585Sjkim /* 08 */ "State-WalkScope", 424218585Sjkim /* 09 */ "State-Result", 425218585Sjkim /* 10 */ "State-Notify", 426218585Sjkim /* 11 */ "State-Thread", 427218585Sjkim /* 12 */ "Walk", 428218585Sjkim /* 13 */ "Parser", 429218585Sjkim /* 14 */ "Operand", 430218585Sjkim /* 15 */ "Node" 431218585Sjkim}; 432218585Sjkim 433218585Sjkim 434218585Sjkimchar * 435218585SjkimAcpiUtGetDescriptorName ( 436218585Sjkim void *Object) 437218585Sjkim{ 438218585Sjkim 439218585Sjkim if (!Object) 440218585Sjkim { 441218585Sjkim return ("NULL OBJECT"); 442218585Sjkim } 443218585Sjkim 444218585Sjkim if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX) 445218585Sjkim { 446218585Sjkim return ("Not a Descriptor"); 447218585Sjkim } 448218585Sjkim 449218585Sjkim return (ACPI_CAST_PTR (char, 450218585Sjkim AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)])); 451218585Sjkim 452218585Sjkim} 453218585Sjkim 454218585Sjkim 455218585Sjkim/******************************************************************************* 456218585Sjkim * 457218585Sjkim * FUNCTION: AcpiUtGetReferenceName 458218585Sjkim * 459218585Sjkim * PARAMETERS: Object - An ACPI reference object 460218585Sjkim * 461218585Sjkim * RETURN: Decoded name of the type of reference 462218585Sjkim * 463218585Sjkim * DESCRIPTION: Decode a reference object sub-type to a string. 464218585Sjkim * 465218585Sjkim ******************************************************************************/ 466218585Sjkim 467218585Sjkim/* Printable names of reference object sub-types */ 468218585Sjkim 469218585Sjkimstatic const char *AcpiGbl_RefClassNames[] = 470218585Sjkim{ 471218585Sjkim /* 00 */ "Local", 472218585Sjkim /* 01 */ "Argument", 473218585Sjkim /* 02 */ "RefOf", 474218585Sjkim /* 03 */ "Index", 475218585Sjkim /* 04 */ "DdbHandle", 476218585Sjkim /* 05 */ "Named Object", 477218585Sjkim /* 06 */ "Debug" 478218585Sjkim}; 479218585Sjkim 480218585Sjkimconst char * 481218585SjkimAcpiUtGetReferenceName ( 482218585Sjkim ACPI_OPERAND_OBJECT *Object) 483218585Sjkim{ 484218585Sjkim 485218585Sjkim if (!Object) 486218585Sjkim { 487218585Sjkim return ("NULL Object"); 488218585Sjkim } 489218585Sjkim 490218585Sjkim if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND) 491218585Sjkim { 492218585Sjkim return ("Not an Operand object"); 493218585Sjkim } 494218585Sjkim 495218585Sjkim if (Object->Common.Type != ACPI_TYPE_LOCAL_REFERENCE) 496218585Sjkim { 497218585Sjkim return ("Not a Reference object"); 498218585Sjkim } 499218585Sjkim 500218585Sjkim if (Object->Reference.Class > ACPI_REFCLASS_MAX) 501218585Sjkim { 502218585Sjkim return ("Unknown Reference class"); 503218585Sjkim } 504218585Sjkim 505218585Sjkim return (AcpiGbl_RefClassNames[Object->Reference.Class]); 506218585Sjkim} 507218585Sjkim 508218585Sjkim 509218585Sjkim#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 510218585Sjkim/* 511218585Sjkim * Strings and procedures used for debug only 512218585Sjkim */ 513218585Sjkim 514218585Sjkim/******************************************************************************* 515218585Sjkim * 516218585Sjkim * FUNCTION: AcpiUtGetMutexName 517218585Sjkim * 518218585Sjkim * PARAMETERS: MutexId - The predefined ID for this mutex. 519218585Sjkim * 520218585Sjkim * RETURN: Decoded name of the internal mutex 521218585Sjkim * 522218585Sjkim * DESCRIPTION: Translate a mutex ID into a name string (Debug only) 523218585Sjkim * 524218585Sjkim ******************************************************************************/ 525218585Sjkim 526218585Sjkim/* Names for internal mutex objects, used for debug output */ 527218585Sjkim 528218585Sjkimstatic char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = 529218585Sjkim{ 530218585Sjkim "ACPI_MTX_Interpreter", 531218585Sjkim "ACPI_MTX_Namespace", 532218585Sjkim "ACPI_MTX_Tables", 533218585Sjkim "ACPI_MTX_Events", 534218585Sjkim "ACPI_MTX_Caches", 535218585Sjkim "ACPI_MTX_Memory", 536218585Sjkim "ACPI_MTX_CommandComplete", 537218585Sjkim "ACPI_MTX_CommandReady" 538218585Sjkim}; 539218585Sjkim 540218585Sjkimchar * 541218585SjkimAcpiUtGetMutexName ( 542218585Sjkim UINT32 MutexId) 543218585Sjkim{ 544218585Sjkim 545218585Sjkim if (MutexId > ACPI_MAX_MUTEX) 546218585Sjkim { 547218585Sjkim return ("Invalid Mutex ID"); 548218585Sjkim } 549218585Sjkim 550218585Sjkim return (AcpiGbl_MutexNames[MutexId]); 551218585Sjkim} 552218585Sjkim 553218585Sjkim 554218585Sjkim/******************************************************************************* 555218585Sjkim * 556218585Sjkim * FUNCTION: AcpiUtGetNotifyName 557218585Sjkim * 558218585Sjkim * PARAMETERS: NotifyValue - Value from the Notify() request 559218585Sjkim * 560218585Sjkim * RETURN: Decoded name for the notify value 561218585Sjkim * 562218585Sjkim * DESCRIPTION: Translate a Notify Value to a notify namestring. 563218585Sjkim * 564218585Sjkim ******************************************************************************/ 565218585Sjkim 566218585Sjkim/* Names for Notify() values, used for debug output */ 567218585Sjkim 568218585Sjkimstatic const char *AcpiGbl_NotifyValueNames[] = 569218585Sjkim{ 570218585Sjkim "Bus Check", 571218585Sjkim "Device Check", 572218585Sjkim "Device Wake", 573218585Sjkim "Eject Request", 574218585Sjkim "Device Check Light", 575218585Sjkim "Frequency Mismatch", 576218585Sjkim "Bus Mode Mismatch", 577218585Sjkim "Power Fault", 578218585Sjkim "Capabilities Check", 579218585Sjkim "Device PLD Check", 580218585Sjkim "Reserved", 581218585Sjkim "System Locality Update" 582218585Sjkim}; 583218585Sjkim 584218585Sjkimconst char * 585218585SjkimAcpiUtGetNotifyName ( 586218585Sjkim UINT32 NotifyValue) 587218585Sjkim{ 588218585Sjkim 589218585Sjkim if (NotifyValue <= ACPI_NOTIFY_MAX) 590218585Sjkim { 591218585Sjkim return (AcpiGbl_NotifyValueNames[NotifyValue]); 592218585Sjkim } 593218585Sjkim else if (NotifyValue <= ACPI_MAX_SYS_NOTIFY) 594218585Sjkim { 595218585Sjkim return ("Reserved"); 596218585Sjkim } 597218585Sjkim else /* Greater or equal to 0x80 */ 598218585Sjkim { 599218585Sjkim return ("**Device Specific**"); 600218585Sjkim } 601218585Sjkim} 602218585Sjkim#endif 603218585Sjkim 604218585Sjkim 605218585Sjkim/******************************************************************************* 606218585Sjkim * 607218585Sjkim * FUNCTION: AcpiUtValidObjectType 608218585Sjkim * 609218585Sjkim * PARAMETERS: Type - Object type to be validated 610218585Sjkim * 611218585Sjkim * RETURN: TRUE if valid object type, FALSE otherwise 612218585Sjkim * 613218585Sjkim * DESCRIPTION: Validate an object type 614218585Sjkim * 615218585Sjkim ******************************************************************************/ 616218585Sjkim 617218585SjkimBOOLEAN 618218585SjkimAcpiUtValidObjectType ( 619218585Sjkim ACPI_OBJECT_TYPE Type) 620218585Sjkim{ 621218585Sjkim 622218585Sjkim if (Type > ACPI_TYPE_LOCAL_MAX) 623218585Sjkim { 624218585Sjkim /* Note: Assumes all TYPEs are contiguous (external/local) */ 625218585Sjkim 626218585Sjkim return (FALSE); 627218585Sjkim } 628218585Sjkim 629218585Sjkim return (TRUE); 630218585Sjkim} 631