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