1218585Sjkim/****************************************************************************** 2218585Sjkim * 3218585Sjkim * Module Name: aslbtypes - Support for bitfield types 4218585Sjkim * 5218585Sjkim *****************************************************************************/ 6218585Sjkim 7218585Sjkim/* 8245582Sjkim * Copyright (C) 2000 - 2013, 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 45218590Sjkim#include <contrib/dev/acpica/compiler/aslcompiler.h> 46218585Sjkim#include "aslcompiler.y.h" 47218590Sjkim#include <contrib/dev/acpica/include/amlcode.h> 48218585Sjkim 49218585Sjkim 50218585Sjkim#define _COMPONENT ACPI_COMPILER 51218585Sjkim ACPI_MODULE_NAME ("aslbtypes") 52218585Sjkim 53218585Sjkim/* Local prototypes */ 54218585Sjkim 55218585Sjkimstatic UINT32 56218585SjkimAnMapEtypeToBtype ( 57218585Sjkim UINT32 Etype); 58218585Sjkim 59218585Sjkim 60218585Sjkim/******************************************************************************* 61218585Sjkim * 62218585Sjkim * FUNCTION: AnMapArgTypeToBtype 63218585Sjkim * 64218585Sjkim * PARAMETERS: ArgType - The ARGI required type(s) for this 65218585Sjkim * argument, from the opcode info table 66218585Sjkim * 67218585Sjkim * RETURN: The corresponding Bit-encoded types 68218585Sjkim * 69218585Sjkim * DESCRIPTION: Convert an encoded ARGI required argument type code into a 70218585Sjkim * bitfield type code. Implements the implicit source conversion 71218585Sjkim * rules. 72218585Sjkim * 73218585Sjkim ******************************************************************************/ 74218585Sjkim 75218585SjkimUINT32 76218585SjkimAnMapArgTypeToBtype ( 77218585Sjkim UINT32 ArgType) 78218585Sjkim{ 79218585Sjkim 80218585Sjkim switch (ArgType) 81218585Sjkim { 82218585Sjkim 83218585Sjkim /* Simple types */ 84218585Sjkim 85218585Sjkim case ARGI_ANYTYPE: 86250838Sjkim 87218585Sjkim return (ACPI_BTYPE_OBJECTS_AND_REFS); 88218585Sjkim 89218585Sjkim case ARGI_PACKAGE: 90250838Sjkim 91218585Sjkim return (ACPI_BTYPE_PACKAGE); 92218585Sjkim 93218585Sjkim case ARGI_EVENT: 94250838Sjkim 95218585Sjkim return (ACPI_BTYPE_EVENT); 96218585Sjkim 97218585Sjkim case ARGI_MUTEX: 98250838Sjkim 99218585Sjkim return (ACPI_BTYPE_MUTEX); 100218585Sjkim 101218585Sjkim case ARGI_DDBHANDLE: 102218585Sjkim /* 103218585Sjkim * DDBHandleObject := SuperName 104218585Sjkim * ACPI_BTYPE_REFERENCE: Index reference as parameter of Load/Unload 105218585Sjkim */ 106218585Sjkim return (ACPI_BTYPE_DDB_HANDLE | ACPI_BTYPE_REFERENCE); 107218585Sjkim 108218585Sjkim /* Interchangeable types */ 109218585Sjkim /* 110218585Sjkim * Source conversion rules: 111218585Sjkim * Integer, String, and Buffer are all interchangeable 112218585Sjkim */ 113218585Sjkim case ARGI_INTEGER: 114218585Sjkim case ARGI_STRING: 115218585Sjkim case ARGI_BUFFER: 116218585Sjkim case ARGI_BUFFER_OR_STRING: 117218585Sjkim case ARGI_COMPUTEDATA: 118250838Sjkim 119218585Sjkim return (ACPI_BTYPE_COMPUTE_DATA); 120218585Sjkim 121218585Sjkim /* References */ 122218585Sjkim 123218585Sjkim case ARGI_INTEGER_REF: 124250838Sjkim 125218585Sjkim return (ACPI_BTYPE_INTEGER); 126218585Sjkim 127218585Sjkim case ARGI_OBJECT_REF: 128250838Sjkim 129218585Sjkim return (ACPI_BTYPE_ALL_OBJECTS); 130218585Sjkim 131218585Sjkim case ARGI_DEVICE_REF: 132250838Sjkim 133218585Sjkim return (ACPI_BTYPE_DEVICE_OBJECTS); 134218585Sjkim 135218585Sjkim case ARGI_REFERENCE: 136250838Sjkim 137218585Sjkim return (ACPI_BTYPE_REFERENCE); 138218585Sjkim 139218585Sjkim case ARGI_TARGETREF: 140218585Sjkim case ARGI_FIXED_TARGET: 141218585Sjkim case ARGI_SIMPLE_TARGET: 142250838Sjkim 143218585Sjkim return (ACPI_BTYPE_OBJECTS_AND_REFS); 144218585Sjkim 145218585Sjkim /* Complex types */ 146218585Sjkim 147218585Sjkim case ARGI_DATAOBJECT: 148218585Sjkim /* 149218585Sjkim * Buffer, string, package or reference to a Op - 150218585Sjkim * Used only by SizeOf operator 151218585Sjkim */ 152218585Sjkim return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | 153218585Sjkim ACPI_BTYPE_PACKAGE | ACPI_BTYPE_REFERENCE); 154218585Sjkim 155218585Sjkim case ARGI_COMPLEXOBJ: 156218585Sjkim 157218585Sjkim /* Buffer, String, or package */ 158218585Sjkim 159218585Sjkim return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | ACPI_BTYPE_PACKAGE); 160218585Sjkim 161218585Sjkim case ARGI_REF_OR_STRING: 162250838Sjkim 163218585Sjkim return (ACPI_BTYPE_STRING | ACPI_BTYPE_REFERENCE); 164218585Sjkim 165218585Sjkim case ARGI_REGION_OR_BUFFER: 166218585Sjkim 167218585Sjkim /* Used by Load() only. Allow buffers in addition to regions/fields */ 168218585Sjkim 169218585Sjkim return (ACPI_BTYPE_REGION | ACPI_BTYPE_BUFFER | ACPI_BTYPE_FIELD_UNIT); 170218585Sjkim 171218585Sjkim case ARGI_DATAREFOBJ: 172250838Sjkim 173218585Sjkim return (ACPI_BTYPE_INTEGER |ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | 174218585Sjkim ACPI_BTYPE_PACKAGE | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE); 175218585Sjkim 176218585Sjkim default: 177250838Sjkim 178218585Sjkim break; 179218585Sjkim } 180218585Sjkim 181218585Sjkim return (ACPI_BTYPE_OBJECTS_AND_REFS); 182218585Sjkim} 183218585Sjkim 184218585Sjkim 185218585Sjkim/******************************************************************************* 186218585Sjkim * 187218585Sjkim * FUNCTION: AnMapEtypeToBtype 188218585Sjkim * 189218585Sjkim * PARAMETERS: Etype - Encoded ACPI Type 190218585Sjkim * 191218585Sjkim * RETURN: Btype corresponding to the Etype 192218585Sjkim * 193218585Sjkim * DESCRIPTION: Convert an encoded ACPI type to a bitfield type applying the 194218585Sjkim * operand conversion rules. In other words, returns the type(s) 195218585Sjkim * this Etype is implicitly converted to during interpretation. 196218585Sjkim * 197218585Sjkim ******************************************************************************/ 198218585Sjkim 199218585Sjkimstatic UINT32 200218585SjkimAnMapEtypeToBtype ( 201218585Sjkim UINT32 Etype) 202218585Sjkim{ 203218585Sjkim 204218585Sjkim 205218585Sjkim if (Etype == ACPI_TYPE_ANY) 206218585Sjkim { 207218585Sjkim return (ACPI_BTYPE_OBJECTS_AND_REFS); 208218585Sjkim } 209218585Sjkim 210218585Sjkim /* Try the standard ACPI data types */ 211218585Sjkim 212218585Sjkim if (Etype <= ACPI_TYPE_EXTERNAL_MAX) 213218585Sjkim { 214218585Sjkim /* 215218585Sjkim * This switch statement implements the allowed operand conversion 216218585Sjkim * rules as per the "ASL Data Types" section of the ACPI 217218585Sjkim * specification. 218218585Sjkim */ 219218585Sjkim switch (Etype) 220218585Sjkim { 221218585Sjkim case ACPI_TYPE_INTEGER: 222250838Sjkim 223218585Sjkim return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_DDB_HANDLE); 224218585Sjkim 225218585Sjkim case ACPI_TYPE_STRING: 226218585Sjkim case ACPI_TYPE_BUFFER: 227250838Sjkim 228218585Sjkim return (ACPI_BTYPE_COMPUTE_DATA); 229218585Sjkim 230218585Sjkim case ACPI_TYPE_PACKAGE: 231250838Sjkim 232218585Sjkim return (ACPI_BTYPE_PACKAGE); 233218585Sjkim 234218585Sjkim case ACPI_TYPE_FIELD_UNIT: 235250838Sjkim 236218585Sjkim return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT); 237218585Sjkim 238218585Sjkim case ACPI_TYPE_BUFFER_FIELD: 239250838Sjkim 240218585Sjkim return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_BUFFER_FIELD); 241218585Sjkim 242218585Sjkim case ACPI_TYPE_DDB_HANDLE: 243250838Sjkim 244218585Sjkim return (ACPI_BTYPE_INTEGER | ACPI_BTYPE_DDB_HANDLE); 245218585Sjkim 246218585Sjkim case ACPI_BTYPE_DEBUG_OBJECT: 247218585Sjkim 248218585Sjkim /* Cannot be used as a source operand */ 249218585Sjkim 250218585Sjkim return (0); 251218585Sjkim 252218585Sjkim default: 253250838Sjkim 254218585Sjkim return (1 << (Etype - 1)); 255218585Sjkim } 256218585Sjkim } 257218585Sjkim 258218585Sjkim /* Try the internal data types */ 259218585Sjkim 260218585Sjkim switch (Etype) 261218585Sjkim { 262218585Sjkim case ACPI_TYPE_LOCAL_REGION_FIELD: 263218585Sjkim case ACPI_TYPE_LOCAL_BANK_FIELD: 264218585Sjkim case ACPI_TYPE_LOCAL_INDEX_FIELD: 265218585Sjkim 266218585Sjkim /* Named fields can be either Integer/Buffer/String */ 267218585Sjkim 268218585Sjkim return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT); 269218585Sjkim 270218585Sjkim case ACPI_TYPE_LOCAL_ALIAS: 271218585Sjkim 272218585Sjkim return (ACPI_BTYPE_INTEGER); 273218585Sjkim 274218585Sjkim 275218585Sjkim case ACPI_TYPE_LOCAL_RESOURCE: 276218585Sjkim case ACPI_TYPE_LOCAL_RESOURCE_FIELD: 277218585Sjkim 278218585Sjkim return (ACPI_BTYPE_REFERENCE); 279218585Sjkim 280218585Sjkim default: 281250838Sjkim 282218585Sjkim printf ("Unhandled encoded type: %X\n", Etype); 283218585Sjkim return (0); 284218585Sjkim } 285218585Sjkim} 286218585Sjkim 287218585Sjkim 288218585Sjkim/******************************************************************************* 289218585Sjkim * 290218585Sjkim * FUNCTION: AnFormatBtype 291218585Sjkim * 292218585Sjkim * PARAMETERS: Btype - Bitfield of ACPI types 293218585Sjkim * Buffer - Where to put the ascii string 294218585Sjkim * 295218585Sjkim * RETURN: None. 296218585Sjkim * 297218585Sjkim * DESCRIPTION: Convert a Btype to a string of ACPI types 298218585Sjkim * 299218585Sjkim ******************************************************************************/ 300218585Sjkim 301218585Sjkimvoid 302218585SjkimAnFormatBtype ( 303218585Sjkim char *Buffer, 304218585Sjkim UINT32 Btype) 305218585Sjkim{ 306218585Sjkim UINT32 Type; 307218585Sjkim BOOLEAN First = TRUE; 308218585Sjkim 309218585Sjkim 310218585Sjkim *Buffer = 0; 311218585Sjkim 312218585Sjkim if (Btype == 0) 313218585Sjkim { 314218585Sjkim strcat (Buffer, "NoReturnValue"); 315218585Sjkim return; 316218585Sjkim } 317218585Sjkim 318218585Sjkim for (Type = 1; Type <= ACPI_TYPE_EXTERNAL_MAX; Type++) 319218585Sjkim { 320218585Sjkim if (Btype & 0x00000001) 321218585Sjkim { 322218585Sjkim if (!First) 323218585Sjkim { 324218585Sjkim strcat (Buffer, "|"); 325218585Sjkim } 326218585Sjkim First = FALSE; 327218585Sjkim strcat (Buffer, AcpiUtGetTypeName (Type)); 328218585Sjkim } 329218585Sjkim Btype >>= 1; 330218585Sjkim } 331218585Sjkim 332218585Sjkim if (Btype & 0x00000001) 333218585Sjkim { 334218585Sjkim if (!First) 335218585Sjkim { 336218585Sjkim strcat (Buffer, "|"); 337218585Sjkim } 338218585Sjkim First = FALSE; 339218585Sjkim strcat (Buffer, "Reference"); 340218585Sjkim } 341218585Sjkim 342218585Sjkim Btype >>= 1; 343218585Sjkim if (Btype & 0x00000001) 344218585Sjkim { 345218585Sjkim if (!First) 346218585Sjkim { 347218585Sjkim strcat (Buffer, "|"); 348218585Sjkim } 349218585Sjkim First = FALSE; 350218585Sjkim strcat (Buffer, "Resource"); 351218585Sjkim } 352218585Sjkim} 353218585Sjkim 354218585Sjkim 355218585Sjkim/******************************************************************************* 356218585Sjkim * 357218585Sjkim * FUNCTION: AnGetBtype 358218585Sjkim * 359218585Sjkim * PARAMETERS: Op - Parse node whose type will be returned. 360218585Sjkim * 361218585Sjkim * RETURN: The Btype associated with the Op. 362218585Sjkim * 363218585Sjkim * DESCRIPTION: Get the (bitfield) ACPI type associated with the parse node. 364218585Sjkim * Handles the case where the node is a name or method call and 365218585Sjkim * the actual type must be obtained from the namespace node. 366218585Sjkim * 367218585Sjkim ******************************************************************************/ 368218585Sjkim 369218585SjkimUINT32 370218585SjkimAnGetBtype ( 371218585Sjkim ACPI_PARSE_OBJECT *Op) 372218585Sjkim{ 373218585Sjkim ACPI_NAMESPACE_NODE *Node; 374218585Sjkim ACPI_PARSE_OBJECT *ReferencedNode; 375218585Sjkim UINT32 ThisNodeBtype = 0; 376218585Sjkim 377218585Sjkim 378218585Sjkim if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || 379218585Sjkim (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || 380218585Sjkim (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) 381218585Sjkim { 382218585Sjkim Node = Op->Asl.Node; 383218585Sjkim if (!Node) 384218585Sjkim { 385218585Sjkim DbgPrint (ASL_DEBUG_OUTPUT, 386218585Sjkim "No attached Nsnode: [%s] at line %u name [%s], ignoring typecheck\n", 387218585Sjkim Op->Asl.ParseOpName, Op->Asl.LineNumber, 388218585Sjkim Op->Asl.ExternalName); 389218585Sjkim return (ACPI_UINT32_MAX); 390218585Sjkim } 391218585Sjkim 392218585Sjkim ThisNodeBtype = AnMapEtypeToBtype (Node->Type); 393218585Sjkim if (!ThisNodeBtype) 394218585Sjkim { 395218585Sjkim AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, 396218585Sjkim "could not map type"); 397218585Sjkim } 398218585Sjkim 399218585Sjkim /* 400218585Sjkim * Since it was a named reference, enable the 401218585Sjkim * reference bit also 402218585Sjkim */ 403218585Sjkim ThisNodeBtype |= ACPI_BTYPE_REFERENCE; 404218585Sjkim 405218585Sjkim if (Op->Asl.ParseOpcode == PARSEOP_METHODCALL) 406218585Sjkim { 407218585Sjkim ReferencedNode = Node->Op; 408218585Sjkim if (!ReferencedNode) 409218585Sjkim { 410218585Sjkim /* Check for an internal method */ 411218585Sjkim 412218585Sjkim if (AnIsInternalMethod (Op)) 413218585Sjkim { 414218585Sjkim return (AnGetInternalMethodReturnType (Op)); 415218585Sjkim } 416218585Sjkim 417218585Sjkim AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, 418218585Sjkim "null Op pointer"); 419218585Sjkim return (ACPI_UINT32_MAX); 420218585Sjkim } 421218585Sjkim 422218585Sjkim if (ReferencedNode->Asl.CompileFlags & NODE_METHOD_TYPED) 423218585Sjkim { 424218585Sjkim ThisNodeBtype = ReferencedNode->Asl.AcpiBtype; 425218585Sjkim } 426218585Sjkim else 427218585Sjkim { 428218585Sjkim return (ACPI_UINT32_MAX -1); 429218585Sjkim } 430218585Sjkim } 431218585Sjkim } 432218585Sjkim else 433218585Sjkim { 434218585Sjkim ThisNodeBtype = Op->Asl.AcpiBtype; 435218585Sjkim } 436218585Sjkim 437218585Sjkim return (ThisNodeBtype); 438218585Sjkim} 439218585Sjkim 440218585Sjkim 441218585Sjkim/******************************************************************************* 442218585Sjkim * 443218585Sjkim * FUNCTION: AnMapObjTypeToBtype 444218585Sjkim * 445218585Sjkim * PARAMETERS: Op - A parse node 446218585Sjkim * 447218585Sjkim * RETURN: A Btype 448218585Sjkim * 449218585Sjkim * DESCRIPTION: Map object to the associated "Btype" 450218585Sjkim * 451218585Sjkim ******************************************************************************/ 452218585Sjkim 453218585SjkimUINT32 454218585SjkimAnMapObjTypeToBtype ( 455218585Sjkim ACPI_PARSE_OBJECT *Op) 456218585Sjkim{ 457218585Sjkim 458218585Sjkim switch (Op->Asl.ParseOpcode) 459218585Sjkim { 460218585Sjkim case PARSEOP_OBJECTTYPE_BFF: /* "BuffFieldObj" */ 461250838Sjkim 462218585Sjkim return (ACPI_BTYPE_BUFFER_FIELD); 463218585Sjkim 464218585Sjkim case PARSEOP_OBJECTTYPE_BUF: /* "BuffObj" */ 465250838Sjkim 466218585Sjkim return (ACPI_BTYPE_BUFFER); 467218585Sjkim 468218585Sjkim case PARSEOP_OBJECTTYPE_DDB: /* "DDBHandleObj" */ 469250838Sjkim 470218585Sjkim return (ACPI_BTYPE_DDB_HANDLE); 471218585Sjkim 472218585Sjkim case PARSEOP_OBJECTTYPE_DEV: /* "DeviceObj" */ 473250838Sjkim 474218585Sjkim return (ACPI_BTYPE_DEVICE); 475218585Sjkim 476218585Sjkim case PARSEOP_OBJECTTYPE_EVT: /* "EventObj" */ 477250838Sjkim 478218585Sjkim return (ACPI_BTYPE_EVENT); 479218585Sjkim 480218585Sjkim case PARSEOP_OBJECTTYPE_FLD: /* "FieldUnitObj" */ 481250838Sjkim 482218585Sjkim return (ACPI_BTYPE_FIELD_UNIT); 483218585Sjkim 484218585Sjkim case PARSEOP_OBJECTTYPE_INT: /* "IntObj" */ 485250838Sjkim 486218585Sjkim return (ACPI_BTYPE_INTEGER); 487218585Sjkim 488218585Sjkim case PARSEOP_OBJECTTYPE_MTH: /* "MethodObj" */ 489250838Sjkim 490218585Sjkim return (ACPI_BTYPE_METHOD); 491218585Sjkim 492218585Sjkim case PARSEOP_OBJECTTYPE_MTX: /* "MutexObj" */ 493250838Sjkim 494218585Sjkim return (ACPI_BTYPE_MUTEX); 495218585Sjkim 496218585Sjkim case PARSEOP_OBJECTTYPE_OPR: /* "OpRegionObj" */ 497250838Sjkim 498218585Sjkim return (ACPI_BTYPE_REGION); 499218585Sjkim 500218585Sjkim case PARSEOP_OBJECTTYPE_PKG: /* "PkgObj" */ 501250838Sjkim 502218585Sjkim return (ACPI_BTYPE_PACKAGE); 503218585Sjkim 504218585Sjkim case PARSEOP_OBJECTTYPE_POW: /* "PowerResObj" */ 505250838Sjkim 506218585Sjkim return (ACPI_BTYPE_POWER); 507218585Sjkim 508218585Sjkim case PARSEOP_OBJECTTYPE_STR: /* "StrObj" */ 509250838Sjkim 510218585Sjkim return (ACPI_BTYPE_STRING); 511218585Sjkim 512218585Sjkim case PARSEOP_OBJECTTYPE_THZ: /* "ThermalZoneObj" */ 513250838Sjkim 514218585Sjkim return (ACPI_BTYPE_THERMAL); 515218585Sjkim 516218585Sjkim case PARSEOP_OBJECTTYPE_UNK: /* "UnknownObj" */ 517250838Sjkim 518218585Sjkim return (ACPI_BTYPE_OBJECTS_AND_REFS); 519218585Sjkim 520218585Sjkim default: 521250838Sjkim 522218585Sjkim return (0); 523218585Sjkim } 524218585Sjkim} 525218585Sjkim 526218585Sjkim 527218585Sjkim#ifdef ACPI_OBSOLETE_FUNCTIONS 528218585Sjkim/******************************************************************************* 529218585Sjkim * 530218585Sjkim * FUNCTION: AnMapBtypeToEtype 531218585Sjkim * 532218585Sjkim * PARAMETERS: Btype - Bitfield of ACPI types 533218585Sjkim * 534218585Sjkim * RETURN: The Etype corresponding the the Btype 535218585Sjkim * 536218585Sjkim * DESCRIPTION: Convert a bitfield type to an encoded type 537218585Sjkim * 538218585Sjkim ******************************************************************************/ 539218585Sjkim 540218585SjkimUINT32 541218585SjkimAnMapBtypeToEtype ( 542218585Sjkim UINT32 Btype) 543218585Sjkim{ 544218585Sjkim UINT32 i; 545218585Sjkim UINT32 Etype; 546218585Sjkim 547218585Sjkim 548218585Sjkim if (Btype == 0) 549218585Sjkim { 550218585Sjkim return (0); 551218585Sjkim } 552218585Sjkim 553218585Sjkim Etype = 1; 554218585Sjkim for (i = 1; i < Btype; i *= 2) 555218585Sjkim { 556218585Sjkim Etype++; 557218585Sjkim } 558218585Sjkim 559218585Sjkim return (Etype); 560218585Sjkim} 561218585Sjkim#endif 562