1100966Siwasaki/*******************************************************************************
2100966Siwasaki *
3100966Siwasaki * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly
4100966Siwasaki *
5100966Siwasaki ******************************************************************************/
6100966Siwasaki
7217365Sjkim/*
8245582Sjkim * Copyright (C) 2000 - 2013, Intel Corp.
9100966Siwasaki * All rights reserved.
10100966Siwasaki *
11217365Sjkim * Redistribution and use in source and binary forms, with or without
12217365Sjkim * modification, are permitted provided that the following conditions
13217365Sjkim * are met:
14217365Sjkim * 1. Redistributions of source code must retain the above copyright
15217365Sjkim *    notice, this list of conditions, and the following disclaimer,
16217365Sjkim *    without modification.
17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18217365Sjkim *    substantially similar to the "NO WARRANTY" disclaimer below
19217365Sjkim *    ("Disclaimer") and any redistribution must be conditioned upon
20217365Sjkim *    including a substantially similar Disclaimer requirement for further
21217365Sjkim *    binary redistribution.
22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names
23217365Sjkim *    of any contributors may be used to endorse or promote products derived
24217365Sjkim *    from this software without specific prior written permission.
25100966Siwasaki *
26217365Sjkim * Alternatively, this software may be distributed under the terms of the
27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free
28217365Sjkim * Software Foundation.
29100966Siwasaki *
30217365Sjkim * NO WARRANTY
31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41217365Sjkim * POSSIBILITY OF SUCH DAMAGES.
42217365Sjkim */
43100966Siwasaki
44100966Siwasaki
45193341Sjkim#include <contrib/dev/acpica/include/acpi.h>
46193341Sjkim#include <contrib/dev/acpica/include/accommon.h>
47193341Sjkim#include <contrib/dev/acpica/include/acdisasm.h>
48100966Siwasaki
49100966Siwasaki
50100966Siwasaki#ifdef ACPI_DISASSEMBLER
51100966Siwasaki
52102550Siwasaki#define _COMPONENT          ACPI_CA_DEBUGGER
53100966Siwasaki        ACPI_MODULE_NAME    ("dbresrcl")
54100966Siwasaki
55100966Siwasaki
56151937Sjkim/* Common names for address and memory descriptors */
57151937Sjkim
58151937Sjkimstatic char                 *AcpiDmAddressNames[] =
59151937Sjkim{
60167802Sjkim    "Granularity",
61167802Sjkim    "Range Minimum",
62167802Sjkim    "Range Maximum",
63167802Sjkim    "Translation Offset",
64167802Sjkim    "Length"
65151937Sjkim};
66151937Sjkim
67151937Sjkimstatic char                 *AcpiDmMemoryNames[] =
68151937Sjkim{
69167802Sjkim    "Range Minimum",
70167802Sjkim    "Range Maximum",
71167802Sjkim    "Alignment",
72167802Sjkim    "Length"
73151937Sjkim};
74151937Sjkim
75151937Sjkim
76151937Sjkim/* Local prototypes */
77151937Sjkim
78151937Sjkimstatic void
79151937SjkimAcpiDmSpaceFlags (
80151937Sjkim        UINT8               Flags);
81151937Sjkim
82151937Sjkimstatic void
83151937SjkimAcpiDmIoFlags (
84151937Sjkim        UINT8               Flags);
85151937Sjkim
86151937Sjkimstatic void
87151937SjkimAcpiDmIoFlags2 (
88151937Sjkim        UINT8               SpecificFlags);
89151937Sjkim
90151937Sjkimstatic void
91151937SjkimAcpiDmMemoryFlags (
92151937Sjkim    UINT8                   Flags,
93151937Sjkim    UINT8                   SpecificFlags);
94151937Sjkim
95151937Sjkimstatic void
96151937SjkimAcpiDmMemoryFlags2 (
97151937Sjkim    UINT8                   SpecificFlags);
98151937Sjkim
99151937Sjkimstatic void
100151937SjkimAcpiDmResourceSource (
101151937Sjkim    AML_RESOURCE            *Resource,
102151937Sjkim    ACPI_SIZE               MinimumLength,
103151937Sjkim    UINT32                  Length);
104151937Sjkim
105151937Sjkimstatic void
106151937SjkimAcpiDmAddressFields (
107151937Sjkim    void                    *Source,
108151937Sjkim    UINT8                   Type,
109151937Sjkim    UINT32                  Level);
110151937Sjkim
111151937Sjkimstatic void
112151937SjkimAcpiDmAddressPrefix (
113151937Sjkim    UINT8                   Type);
114151937Sjkim
115151937Sjkimstatic void
116151937SjkimAcpiDmAddressCommon (
117151937Sjkim    AML_RESOURCE            *Resource,
118151937Sjkim    UINT8                   Type,
119151937Sjkim    UINT32                  Level);
120151937Sjkim
121151937Sjkimstatic void
122151937SjkimAcpiDmAddressFlags (
123151937Sjkim    AML_RESOURCE            *Resource);
124151937Sjkim
125151937Sjkim
126100966Siwasaki/*******************************************************************************
127100966Siwasaki *
128151937Sjkim * FUNCTION:    AcpiDmMemoryFields
129151937Sjkim *
130151937Sjkim * PARAMETERS:  Source              - Pointer to the contiguous data fields
131151937Sjkim *              Type                - 16 or 32 (bit)
132151937Sjkim *              Level               - Current source code indentation level
133151937Sjkim *
134151937Sjkim * RETURN:      None
135151937Sjkim *
136151937Sjkim * DESCRIPTION: Decode fields common to Memory24 and Memory32 descriptors
137151937Sjkim *
138151937Sjkim ******************************************************************************/
139151937Sjkim
140151937Sjkimstatic void
141151937SjkimAcpiDmMemoryFields (
142151937Sjkim    void                    *Source,
143151937Sjkim    UINT8                   Type,
144151937Sjkim    UINT32                  Level)
145151937Sjkim{
146193267Sjkim    UINT32                  i;
147151937Sjkim
148151937Sjkim
149151937Sjkim    for (i = 0; i < 4; i++)
150151937Sjkim    {
151151937Sjkim        AcpiDmIndent (Level + 1);
152151937Sjkim
153151937Sjkim        switch (Type)
154151937Sjkim        {
155151937Sjkim        case 16:
156250838Sjkim
157167802Sjkim            AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
158167802Sjkim                AcpiDmMemoryNames[i]);
159151937Sjkim            break;
160151937Sjkim
161151937Sjkim        case 32:
162250838Sjkim
163167802Sjkim            AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
164167802Sjkim                AcpiDmMemoryNames[i]);
165151937Sjkim            break;
166151937Sjkim
167151937Sjkim        default:
168250838Sjkim
169151937Sjkim            return;
170151937Sjkim        }
171151937Sjkim    }
172151937Sjkim}
173151937Sjkim
174151937Sjkim
175151937Sjkim/*******************************************************************************
176151937Sjkim *
177167802Sjkim * FUNCTION:    AcpiDmAddressFields
178151937Sjkim *
179151937Sjkim * PARAMETERS:  Source              - Pointer to the contiguous data fields
180151937Sjkim *              Type                - 16, 32, or 64 (bit)
181151937Sjkim *              Level               - Current source code indentation level
182151937Sjkim *
183151937Sjkim * RETURN:      None
184151937Sjkim *
185151937Sjkim * DESCRIPTION: Decode fields common to address descriptors
186151937Sjkim *
187151937Sjkim ******************************************************************************/
188151937Sjkim
189151937Sjkimstatic void
190151937SjkimAcpiDmAddressFields (
191151937Sjkim    void                    *Source,
192151937Sjkim    UINT8                   Type,
193151937Sjkim    UINT32                  Level)
194151937Sjkim{
195193267Sjkim    UINT32                  i;
196151937Sjkim
197151937Sjkim
198151937Sjkim    AcpiOsPrintf ("\n");
199151937Sjkim
200151937Sjkim    for (i = 0; i < 5; i++)
201151937Sjkim    {
202151937Sjkim        AcpiDmIndent (Level + 1);
203151937Sjkim
204151937Sjkim        switch (Type)
205151937Sjkim        {
206151937Sjkim        case 16:
207250838Sjkim
208167802Sjkim            AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
209167802Sjkim                AcpiDmAddressNames[i]);
210151937Sjkim            break;
211151937Sjkim
212151937Sjkim        case 32:
213250838Sjkim
214167802Sjkim            AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
215167802Sjkim                AcpiDmAddressNames[i]);
216151937Sjkim            break;
217151937Sjkim
218151937Sjkim        case 64:
219250838Sjkim
220167802Sjkim            AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i],
221167802Sjkim                AcpiDmAddressNames[i]);
222151937Sjkim            break;
223151937Sjkim
224151937Sjkim        default:
225250838Sjkim
226151937Sjkim            return;
227151937Sjkim        }
228151937Sjkim    }
229151937Sjkim}
230151937Sjkim
231151937Sjkim
232151937Sjkim/*******************************************************************************
233151937Sjkim *
234151937Sjkim * FUNCTION:    AcpiDmAddressPrefix
235151937Sjkim *
236151937Sjkim * PARAMETERS:  Type                - Descriptor type
237151937Sjkim *
238151937Sjkim * RETURN:      None
239151937Sjkim *
240151937Sjkim * DESCRIPTION: Emit name prefix representing the address descriptor type
241151937Sjkim *
242151937Sjkim ******************************************************************************/
243151937Sjkim
244151937Sjkimstatic void
245151937SjkimAcpiDmAddressPrefix (
246151937Sjkim    UINT8                   Type)
247151937Sjkim{
248151937Sjkim
249151937Sjkim    switch (Type)
250151937Sjkim    {
251151937Sjkim    case ACPI_RESOURCE_TYPE_ADDRESS16:
252250838Sjkim
253151937Sjkim        AcpiOsPrintf ("Word");
254151937Sjkim        break;
255151937Sjkim
256151937Sjkim    case ACPI_RESOURCE_TYPE_ADDRESS32:
257250838Sjkim
258151937Sjkim        AcpiOsPrintf ("DWord");
259151937Sjkim        break;
260151937Sjkim
261151937Sjkim    case ACPI_RESOURCE_TYPE_ADDRESS64:
262250838Sjkim
263151937Sjkim        AcpiOsPrintf ("QWord");
264151937Sjkim        break;
265151937Sjkim
266151937Sjkim    case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
267250838Sjkim
268151937Sjkim        AcpiOsPrintf ("Extended");
269151937Sjkim        break;
270151937Sjkim
271151937Sjkim    default:
272250838Sjkim
273151937Sjkim        return;
274151937Sjkim    }
275151937Sjkim}
276151937Sjkim
277151937Sjkim
278151937Sjkim/*******************************************************************************
279151937Sjkim *
280151937Sjkim * FUNCTION:    AcpiDmAddressCommon
281151937Sjkim *
282151937Sjkim * PARAMETERS:  Resource            - Raw AML descriptor
283151937Sjkim *              Type                - Descriptor type
284151937Sjkim *              Level               - Current source code indentation level
285151937Sjkim *
286151937Sjkim * RETURN:      None
287151937Sjkim *
288151937Sjkim * DESCRIPTION: Emit common name and flag fields common to address descriptors
289151937Sjkim *
290151937Sjkim ******************************************************************************/
291151937Sjkim
292151937Sjkimstatic void
293151937SjkimAcpiDmAddressCommon (
294151937Sjkim    AML_RESOURCE            *Resource,
295151937Sjkim    UINT8                   Type,
296151937Sjkim    UINT32                  Level)
297151937Sjkim{
298151937Sjkim    UINT8                   ResourceType;
299151937Sjkim    UINT8                   SpecificFlags;
300151937Sjkim    UINT8                   Flags;
301151937Sjkim
302151937Sjkim
303151937Sjkim    ResourceType = Resource->Address.ResourceType;
304151937Sjkim    SpecificFlags = Resource->Address.SpecificFlags;
305151937Sjkim    Flags = Resource->Address.Flags;
306151937Sjkim
307151937Sjkim    AcpiDmIndent (Level);
308151937Sjkim
309151937Sjkim    /* Validate ResourceType */
310151937Sjkim
311151937Sjkim    if ((ResourceType > 2) && (ResourceType < 0xC0))
312151937Sjkim    {
313151937Sjkim        AcpiOsPrintf ("/**** Invalid Resource Type: 0x%X ****/", ResourceType);
314151937Sjkim        return;
315151937Sjkim    }
316151937Sjkim
317151937Sjkim    /* Prefix is either Word, DWord, QWord, or Extended */
318151937Sjkim
319151937Sjkim    AcpiDmAddressPrefix (Type);
320151937Sjkim
321151937Sjkim    /* Resource Types above 0xC0 are vendor-defined */
322151937Sjkim
323151937Sjkim    if (ResourceType > 2)
324151937Sjkim    {
325151937Sjkim        AcpiOsPrintf ("Space (0x%2.2X, ", ResourceType);
326151937Sjkim        AcpiDmSpaceFlags (Flags);
327151937Sjkim        AcpiOsPrintf (" 0x%2.2X,", SpecificFlags);
328151937Sjkim        return;
329151937Sjkim    }
330151937Sjkim
331151937Sjkim    /* This is either a Memory, IO, or BusNumber descriptor (0,1,2) */
332151937Sjkim
333243347Sjkim    AcpiOsPrintf ("%s (", AcpiGbl_WordDecode [ACPI_GET_2BIT_FLAG (ResourceType)]);
334151937Sjkim
335151937Sjkim    /* Decode the general and type-specific flags */
336151937Sjkim
337151937Sjkim    if (ResourceType == ACPI_MEMORY_RANGE)
338151937Sjkim    {
339151937Sjkim        AcpiDmMemoryFlags (Flags, SpecificFlags);
340151937Sjkim    }
341151937Sjkim    else /* IO range or BusNumberRange */
342151937Sjkim    {
343151937Sjkim        AcpiDmIoFlags (Flags);
344151937Sjkim        if (ResourceType == ACPI_IO_RANGE)
345151937Sjkim        {
346243347Sjkim            AcpiOsPrintf (" %s,", AcpiGbl_RngDecode [ACPI_GET_2BIT_FLAG (SpecificFlags)]);
347151937Sjkim        }
348151937Sjkim    }
349151937Sjkim}
350151937Sjkim
351151937Sjkim
352151937Sjkim/*******************************************************************************
353151937Sjkim *
354151937Sjkim * FUNCTION:    AcpiDmAddressFlags
355151937Sjkim *
356151937Sjkim * PARAMETERS:  Resource        - Raw AML descriptor
357151937Sjkim *
358151937Sjkim * RETURN:      None
359151937Sjkim *
360151937Sjkim * DESCRIPTION: Emit flags common to address descriptors
361151937Sjkim *
362151937Sjkim ******************************************************************************/
363151937Sjkim
364151937Sjkimstatic void
365151937SjkimAcpiDmAddressFlags (
366151937Sjkim    AML_RESOURCE            *Resource)
367151937Sjkim{
368151937Sjkim
369151937Sjkim    if (Resource->Address.ResourceType == ACPI_IO_RANGE)
370151937Sjkim    {
371151937Sjkim        AcpiDmIoFlags2 (Resource->Address.SpecificFlags);
372151937Sjkim    }
373151937Sjkim    else if (Resource->Address.ResourceType == ACPI_MEMORY_RANGE)
374151937Sjkim    {
375151937Sjkim        AcpiDmMemoryFlags2 (Resource->Address.SpecificFlags);
376151937Sjkim    }
377151937Sjkim}
378151937Sjkim
379151937Sjkim
380151937Sjkim/*******************************************************************************
381151937Sjkim *
382151937Sjkim * FUNCTION:    AcpiDmSpaceFlags
383151937Sjkim *
384151937Sjkim * PARAMETERS:  Flags               - Flag byte to be decoded
385151937Sjkim *
386151937Sjkim * RETURN:      None
387151937Sjkim *
388151937Sjkim * DESCRIPTION: Decode the flags specific to Space Address space descriptors
389151937Sjkim *
390151937Sjkim ******************************************************************************/
391151937Sjkim
392151937Sjkimstatic void
393151937SjkimAcpiDmSpaceFlags (
394151937Sjkim    UINT8                   Flags)
395151937Sjkim{
396151937Sjkim
397151937Sjkim    AcpiOsPrintf ("%s, %s, %s, %s,",
398243347Sjkim        AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)],
399243347Sjkim        AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)],
400243347Sjkim        AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)],
401243347Sjkim        AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)]);
402151937Sjkim}
403151937Sjkim
404151937Sjkim
405151937Sjkim/*******************************************************************************
406151937Sjkim *
407100966Siwasaki * FUNCTION:    AcpiDmIoFlags
408100966Siwasaki *
409100966Siwasaki * PARAMETERS:  Flags               - Flag byte to be decoded
410100966Siwasaki *
411100966Siwasaki * RETURN:      None
412100966Siwasaki *
413100966Siwasaki * DESCRIPTION: Decode the flags specific to IO Address space descriptors
414100966Siwasaki *
415100966Siwasaki ******************************************************************************/
416100966Siwasaki
417151937Sjkimstatic void
418100966SiwasakiAcpiDmIoFlags (
419100966Siwasaki        UINT8               Flags)
420100966Siwasaki{
421100966Siwasaki    AcpiOsPrintf ("%s, %s, %s, %s,",
422243347Sjkim        AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)],
423243347Sjkim        AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)],
424243347Sjkim        AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)],
425243347Sjkim        AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)]);
426100966Siwasaki}
427100966Siwasaki
428100966Siwasaki
429100966Siwasaki/*******************************************************************************
430100966Siwasaki *
431151937Sjkim * FUNCTION:    AcpiDmIoFlags2
432151937Sjkim *
433151937Sjkim * PARAMETERS:  SpecificFlags       - "Specific" flag byte to be decoded
434151937Sjkim *
435151937Sjkim * RETURN:      None
436151937Sjkim *
437151937Sjkim * DESCRIPTION: Decode the flags specific to IO Address space descriptors
438151937Sjkim *
439151937Sjkim ******************************************************************************/
440151937Sjkim
441151937Sjkimstatic void
442151937SjkimAcpiDmIoFlags2 (
443151937Sjkim        UINT8               SpecificFlags)
444151937Sjkim{
445151937Sjkim
446151937Sjkim    AcpiOsPrintf (", %s",
447243347Sjkim        AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 4)]);
448151937Sjkim
449151937Sjkim    /* TRS is only used if TTP is TypeTranslation */
450151937Sjkim
451151937Sjkim    if (SpecificFlags & 0x10)
452151937Sjkim    {
453151937Sjkim        AcpiOsPrintf (", %s",
454243347Sjkim            AcpiGbl_TrsDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]);
455151937Sjkim    }
456151937Sjkim}
457151937Sjkim
458151937Sjkim
459151937Sjkim/*******************************************************************************
460151937Sjkim *
461100966Siwasaki * FUNCTION:    AcpiDmMemoryFlags
462100966Siwasaki *
463100966Siwasaki * PARAMETERS:  Flags               - Flag byte to be decoded
464100966Siwasaki *              SpecificFlags       - "Specific" flag byte to be decoded
465100966Siwasaki *
466100966Siwasaki * RETURN:      None
467100966Siwasaki *
468100966Siwasaki * DESCRIPTION: Decode flags specific to Memory Address Space descriptors
469100966Siwasaki *
470100966Siwasaki ******************************************************************************/
471100966Siwasaki
472151937Sjkimstatic void
473100966SiwasakiAcpiDmMemoryFlags (
474100966Siwasaki    UINT8                   Flags,
475100966Siwasaki    UINT8                   SpecificFlags)
476100966Siwasaki{
477151937Sjkim
478100966Siwasaki    AcpiOsPrintf ("%s, %s, %s, %s, %s, %s,",
479243347Sjkim        AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)],
480243347Sjkim        AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)],
481243347Sjkim        AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)],
482243347Sjkim        AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)],
483243347Sjkim        AcpiGbl_MemDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 1)],
484243347Sjkim        AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (SpecificFlags)]);
485100966Siwasaki}
486100966Siwasaki
487100966Siwasaki
488100966Siwasaki/*******************************************************************************
489100966Siwasaki *
490151937Sjkim * FUNCTION:    AcpiDmMemoryFlags2
491151937Sjkim *
492151937Sjkim * PARAMETERS:  SpecificFlags       - "Specific" flag byte to be decoded
493151937Sjkim *
494151937Sjkim * RETURN:      None
495151937Sjkim *
496151937Sjkim * DESCRIPTION: Decode flags specific to Memory Address Space descriptors
497151937Sjkim *
498151937Sjkim ******************************************************************************/
499151937Sjkim
500151937Sjkimstatic void
501151937SjkimAcpiDmMemoryFlags2 (
502151937Sjkim    UINT8                   SpecificFlags)
503151937Sjkim{
504151937Sjkim
505151937Sjkim    AcpiOsPrintf (", %s, %s",
506243347Sjkim        AcpiGbl_MtpDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 3)],
507243347Sjkim        AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]);
508151937Sjkim}
509151937Sjkim
510151937Sjkim
511151937Sjkim/*******************************************************************************
512151937Sjkim *
513151937Sjkim * FUNCTION:    AcpiDmResourceSource
514151937Sjkim *
515151937Sjkim * PARAMETERS:  Resource        - Raw AML descriptor
516151937Sjkim *              MinimumLength   - descriptor length without optional fields
517151937Sjkim *              ResourceLength
518151937Sjkim *
519151937Sjkim * RETURN:      None
520151937Sjkim *
521151937Sjkim * DESCRIPTION: Dump optional ResourceSource fields of an address descriptor
522151937Sjkim *
523151937Sjkim ******************************************************************************/
524151937Sjkim
525151937Sjkimstatic void
526151937SjkimAcpiDmResourceSource (
527151937Sjkim    AML_RESOURCE            *Resource,
528151937Sjkim    ACPI_SIZE               MinimumTotalLength,
529151937Sjkim    UINT32                  ResourceLength)
530151937Sjkim{
531151937Sjkim    UINT8                   *AmlResourceSource;
532151937Sjkim    UINT32                  TotalLength;
533151937Sjkim
534151937Sjkim
535151937Sjkim    TotalLength = ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER);
536151937Sjkim
537151937Sjkim    /* Check if the optional ResourceSource fields are present */
538151937Sjkim
539151937Sjkim    if (TotalLength <= MinimumTotalLength)
540151937Sjkim    {
541151937Sjkim        /* The two optional fields are not used */
542151937Sjkim
543167802Sjkim        AcpiOsPrintf (",, ");
544151937Sjkim        return;
545151937Sjkim    }
546151937Sjkim
547151937Sjkim    /* Get a pointer to the ResourceSource */
548151937Sjkim
549167802Sjkim    AmlResourceSource = ACPI_ADD_PTR (UINT8, Resource, MinimumTotalLength);
550151937Sjkim
551151937Sjkim    /*
552151937Sjkim     * Always emit the ResourceSourceIndex (Byte)
553151937Sjkim     *
554151937Sjkim     * NOTE: Some ASL compilers always create a 0 byte (in the AML) for the
555151937Sjkim     * Index even if the String does not exist. Although this is in violation
556151937Sjkim     * of the ACPI specification, it is very important to emit ASL code that
557151937Sjkim     * can be compiled back to the identical AML. There may be fields and/or
558151937Sjkim     * indexes into the resource template buffer that are compiled to absolute
559151937Sjkim     * offsets, and these will be broken if the AML length is changed.
560151937Sjkim     */
561151937Sjkim    AcpiOsPrintf ("0x%2.2X,", (UINT32) AmlResourceSource[0]);
562151937Sjkim
563151937Sjkim    /* Make sure that the ResourceSource string exists before dumping it */
564151937Sjkim
565151937Sjkim    if (TotalLength > (MinimumTotalLength + 1))
566151937Sjkim    {
567151937Sjkim        AcpiOsPrintf (" ");
568252279Sjkim        AcpiUtPrintString ((char *) &AmlResourceSource[1], ACPI_UINT16_MAX);
569151937Sjkim    }
570151937Sjkim
571167802Sjkim    AcpiOsPrintf (", ");
572151937Sjkim}
573151937Sjkim
574151937Sjkim
575151937Sjkim/*******************************************************************************
576151937Sjkim *
577100966Siwasaki * FUNCTION:    AcpiDmWordDescriptor
578100966Siwasaki *
579100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
580100966Siwasaki *              Length              - Length of the descriptor in bytes
581100966Siwasaki *              Level               - Current source code indentation level
582100966Siwasaki *
583100966Siwasaki * RETURN:      None
584100966Siwasaki *
585100966Siwasaki * DESCRIPTION: Decode a Word Address Space descriptor
586100966Siwasaki *
587100966Siwasaki ******************************************************************************/
588100966Siwasaki
589100966Siwasakivoid
590100966SiwasakiAcpiDmWordDescriptor (
591151937Sjkim    AML_RESOURCE            *Resource,
592100966Siwasaki    UINT32                  Length,
593100966Siwasaki    UINT32                  Level)
594100966Siwasaki{
595100966Siwasaki
596151937Sjkim    /* Dump resource name and flags */
597100966Siwasaki
598151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS16, Level);
599100966Siwasaki
600151937Sjkim    /* Dump the 5 contiguous WORD values */
601100966Siwasaki
602151937Sjkim    AcpiDmAddressFields (&Resource->Address16.Granularity, 16, Level);
603100966Siwasaki
604151937Sjkim    /* The ResourceSource fields are optional */
605151937Sjkim
606100966Siwasaki    AcpiDmIndent (Level + 1);
607151937Sjkim    AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS16), Length);
608100966Siwasaki
609167802Sjkim    /* Insert a descriptor name */
610167802Sjkim
611167802Sjkim    AcpiDmDescriptorName ();
612167802Sjkim
613151937Sjkim    /* Type-specific flags */
614100966Siwasaki
615151937Sjkim    AcpiDmAddressFlags (Resource);
616100966Siwasaki    AcpiOsPrintf (")\n");
617100966Siwasaki}
618100966Siwasaki
619100966Siwasaki
620100966Siwasaki/*******************************************************************************
621100966Siwasaki *
622100966Siwasaki * FUNCTION:    AcpiDmDwordDescriptor
623100966Siwasaki *
624100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
625100966Siwasaki *              Length              - Length of the descriptor in bytes
626100966Siwasaki *              Level               - Current source code indentation level
627100966Siwasaki *
628100966Siwasaki * RETURN:      None
629100966Siwasaki *
630100966Siwasaki * DESCRIPTION: Decode a DWord Address Space descriptor
631100966Siwasaki *
632100966Siwasaki ******************************************************************************/
633100966Siwasaki
634100966Siwasakivoid
635100966SiwasakiAcpiDmDwordDescriptor (
636151937Sjkim    AML_RESOURCE            *Resource,
637100966Siwasaki    UINT32                  Length,
638100966Siwasaki    UINT32                  Level)
639100966Siwasaki{
640100966Siwasaki
641151937Sjkim    /* Dump resource name and flags */
642100966Siwasaki
643151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS32, Level);
644100966Siwasaki
645151937Sjkim    /* Dump the 5 contiguous DWORD values */
646100966Siwasaki
647151937Sjkim    AcpiDmAddressFields (&Resource->Address32.Granularity, 32, Level);
648151937Sjkim
649151937Sjkim    /* The ResourceSource fields are optional */
650151937Sjkim
651100966Siwasaki    AcpiDmIndent (Level + 1);
652151937Sjkim    AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS32), Length);
653100966Siwasaki
654167802Sjkim    /* Insert a descriptor name */
655167802Sjkim
656167802Sjkim    AcpiDmDescriptorName ();
657167802Sjkim
658151937Sjkim    /* Type-specific flags */
659100966Siwasaki
660151937Sjkim    AcpiDmAddressFlags (Resource);
661100966Siwasaki    AcpiOsPrintf (")\n");
662100966Siwasaki}
663100966Siwasaki
664100966Siwasaki
665100966Siwasaki/*******************************************************************************
666100966Siwasaki *
667100966Siwasaki * FUNCTION:    AcpiDmQwordDescriptor
668100966Siwasaki *
669100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
670100966Siwasaki *              Length              - Length of the descriptor in bytes
671100966Siwasaki *              Level               - Current source code indentation level
672100966Siwasaki *
673100966Siwasaki * RETURN:      None
674100966Siwasaki *
675100966Siwasaki * DESCRIPTION: Decode a QWord Address Space descriptor
676100966Siwasaki *
677100966Siwasaki ******************************************************************************/
678100966Siwasaki
679100966Siwasakivoid
680100966SiwasakiAcpiDmQwordDescriptor (
681151937Sjkim    AML_RESOURCE            *Resource,
682100966Siwasaki    UINT32                  Length,
683100966Siwasaki    UINT32                  Level)
684100966Siwasaki{
685100966Siwasaki
686151937Sjkim    /* Dump resource name and flags */
687100966Siwasaki
688151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS64, Level);
689100966Siwasaki
690151937Sjkim    /* Dump the 5 contiguous QWORD values */
691100966Siwasaki
692151937Sjkim    AcpiDmAddressFields (&Resource->Address64.Granularity, 64, Level);
693100966Siwasaki
694151937Sjkim    /* The ResourceSource fields are optional */
695100966Siwasaki
696100966Siwasaki    AcpiDmIndent (Level + 1);
697151937Sjkim    AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS64), Length);
698100966Siwasaki
699167802Sjkim    /* Insert a descriptor name */
700167802Sjkim
701167802Sjkim    AcpiDmDescriptorName ();
702167802Sjkim
703151937Sjkim    /* Type-specific flags */
704100966Siwasaki
705151937Sjkim    AcpiDmAddressFlags (Resource);
706151937Sjkim    AcpiOsPrintf (")\n");
707151937Sjkim}
708151937Sjkim
709151937Sjkim
710151937Sjkim/*******************************************************************************
711151937Sjkim *
712151937Sjkim * FUNCTION:    AcpiDmExtendedDescriptor
713151937Sjkim *
714151937Sjkim * PARAMETERS:  Resource            - Pointer to the resource descriptor
715151937Sjkim *              Length              - Length of the descriptor in bytes
716151937Sjkim *              Level               - Current source code indentation level
717151937Sjkim *
718151937Sjkim * RETURN:      None
719151937Sjkim *
720151937Sjkim * DESCRIPTION: Decode a Extended Address Space descriptor
721151937Sjkim *
722151937Sjkim ******************************************************************************/
723151937Sjkim
724151937Sjkimvoid
725151937SjkimAcpiDmExtendedDescriptor (
726151937Sjkim    AML_RESOURCE            *Resource,
727151937Sjkim    UINT32                  Length,
728151937Sjkim    UINT32                  Level)
729151937Sjkim{
730151937Sjkim
731151937Sjkim    /* Dump resource name and flags */
732151937Sjkim
733151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, Level);
734151937Sjkim
735151937Sjkim    /* Dump the 5 contiguous QWORD values */
736151937Sjkim
737151937Sjkim    AcpiDmAddressFields (&Resource->ExtAddress64.Granularity, 64, Level);
738151937Sjkim
739151937Sjkim    /* Extra field for this descriptor only */
740151937Sjkim
741100966Siwasaki    AcpiDmIndent (Level + 1);
742151937Sjkim    AcpiDmDumpInteger64 (Resource->ExtAddress64.TypeSpecific,
743151937Sjkim        "Type-Specific Attributes");
744100966Siwasaki
745167802Sjkim    /* Insert a descriptor name */
746167802Sjkim
747167802Sjkim    AcpiDmIndent (Level + 1);
748167802Sjkim    AcpiDmDescriptorName ();
749167802Sjkim
750151937Sjkim    /* Type-specific flags */
751100966Siwasaki
752151937Sjkim    AcpiDmAddressFlags (Resource);
753100966Siwasaki    AcpiOsPrintf (")\n");
754100966Siwasaki}
755100966Siwasaki
756100966Siwasaki
757100966Siwasaki/*******************************************************************************
758100966Siwasaki *
759100966Siwasaki * FUNCTION:    AcpiDmMemory24Descriptor
760100966Siwasaki *
761100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
762100966Siwasaki *              Length              - Length of the descriptor in bytes
763100966Siwasaki *              Level               - Current source code indentation level
764100966Siwasaki *
765100966Siwasaki * RETURN:      None
766100966Siwasaki *
767100966Siwasaki * DESCRIPTION: Decode a Memory24 descriptor
768100966Siwasaki *
769100966Siwasaki ******************************************************************************/
770100966Siwasaki
771100966Siwasakivoid
772100966SiwasakiAcpiDmMemory24Descriptor (
773151937Sjkim    AML_RESOURCE            *Resource,
774100966Siwasaki    UINT32                  Length,
775100966Siwasaki    UINT32                  Level)
776100966Siwasaki{
777100966Siwasaki
778151937Sjkim    /* Dump name and read/write flag */
779151937Sjkim
780100966Siwasaki    AcpiDmIndent (Level);
781151937Sjkim    AcpiOsPrintf ("Memory24 (%s,\n",
782243347Sjkim        AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory24.Flags)]);
783151937Sjkim
784151937Sjkim    /* Dump the 4 contiguous WORD values */
785151937Sjkim
786151937Sjkim    AcpiDmMemoryFields (&Resource->Memory24.Minimum, 16, Level);
787151937Sjkim
788167802Sjkim    /* Insert a descriptor name */
789167802Sjkim
790151937Sjkim    AcpiDmIndent (Level + 1);
791167802Sjkim    AcpiDmDescriptorName ();
792151937Sjkim    AcpiOsPrintf (")\n");
793100966Siwasaki}
794100966Siwasaki
795100966Siwasaki
796100966Siwasaki/*******************************************************************************
797100966Siwasaki *
798100966Siwasaki * FUNCTION:    AcpiDmMemory32Descriptor
799100966Siwasaki *
800100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
801100966Siwasaki *              Length              - Length of the descriptor in bytes
802100966Siwasaki *              Level               - Current source code indentation level
803100966Siwasaki *
804100966Siwasaki * RETURN:      None
805100966Siwasaki *
806100966Siwasaki * DESCRIPTION: Decode a Memory32 descriptor
807100966Siwasaki *
808100966Siwasaki ******************************************************************************/
809100966Siwasaki
810100966Siwasakivoid
811100966SiwasakiAcpiDmMemory32Descriptor (
812151937Sjkim    AML_RESOURCE            *Resource,
813100966Siwasaki    UINT32                  Length,
814100966Siwasaki    UINT32                  Level)
815100966Siwasaki{
816100966Siwasaki
817151937Sjkim    /* Dump name and read/write flag */
818151937Sjkim
819100966Siwasaki    AcpiDmIndent (Level);
820151937Sjkim    AcpiOsPrintf ("Memory32 (%s,\n",
821243347Sjkim        AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory32.Flags)]);
822151937Sjkim
823151937Sjkim    /* Dump the 4 contiguous DWORD values */
824151937Sjkim
825151937Sjkim    AcpiDmMemoryFields (&Resource->Memory32.Minimum, 32, Level);
826151937Sjkim
827167802Sjkim    /* Insert a descriptor name */
828167802Sjkim
829151937Sjkim    AcpiDmIndent (Level + 1);
830167802Sjkim    AcpiDmDescriptorName ();
831151937Sjkim    AcpiOsPrintf (")\n");
832100966Siwasaki}
833100966Siwasaki
834100966Siwasaki
835100966Siwasaki/*******************************************************************************
836100966Siwasaki *
837151937Sjkim * FUNCTION:    AcpiDmFixedMemory32Descriptor
838100966Siwasaki *
839100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
840100966Siwasaki *              Length              - Length of the descriptor in bytes
841100966Siwasaki *              Level               - Current source code indentation level
842100966Siwasaki *
843100966Siwasaki * RETURN:      None
844100966Siwasaki *
845100966Siwasaki * DESCRIPTION: Decode a Fixed Memory32 descriptor
846100966Siwasaki *
847100966Siwasaki ******************************************************************************/
848100966Siwasaki
849100966Siwasakivoid
850151937SjkimAcpiDmFixedMemory32Descriptor (
851151937Sjkim    AML_RESOURCE            *Resource,
852100966Siwasaki    UINT32                  Length,
853100966Siwasaki    UINT32                  Level)
854100966Siwasaki{
855100966Siwasaki
856151937Sjkim    /* Dump name and read/write flag */
857151937Sjkim
858100966Siwasaki    AcpiDmIndent (Level);
859151937Sjkim    AcpiOsPrintf ("Memory32Fixed (%s,\n",
860243347Sjkim        AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]);
861151937Sjkim
862151937Sjkim    AcpiDmIndent (Level + 1);
863151937Sjkim    AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, "Address Base");
864151937Sjkim
865151937Sjkim    AcpiDmIndent (Level + 1);
866151937Sjkim    AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, "Address Length");
867151937Sjkim
868167802Sjkim    /* Insert a descriptor name */
869167802Sjkim
870151937Sjkim    AcpiDmIndent (Level + 1);
871167802Sjkim    AcpiDmDescriptorName ();
872151937Sjkim    AcpiOsPrintf (")\n");
873100966Siwasaki}
874100966Siwasaki
875100966Siwasaki
876100966Siwasaki/*******************************************************************************
877100966Siwasaki *
878100966Siwasaki * FUNCTION:    AcpiDmGenericRegisterDescriptor
879100966Siwasaki *
880100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
881100966Siwasaki *              Length              - Length of the descriptor in bytes
882100966Siwasaki *              Level               - Current source code indentation level
883100966Siwasaki *
884100966Siwasaki * RETURN:      None
885100966Siwasaki *
886100966Siwasaki * DESCRIPTION: Decode a Generic Register descriptor
887100966Siwasaki *
888100966Siwasaki ******************************************************************************/
889100966Siwasaki
890100966Siwasakivoid
891100966SiwasakiAcpiDmGenericRegisterDescriptor (
892151937Sjkim    AML_RESOURCE            *Resource,
893100966Siwasaki    UINT32                  Length,
894100966Siwasaki    UINT32                  Level)
895100966Siwasaki{
896100966Siwasaki
897100966Siwasaki    AcpiDmIndent (Level);
898100966Siwasaki    AcpiOsPrintf ("Register (");
899151937Sjkim    AcpiDmAddressSpace (Resource->GenericReg.AddressSpaceId);
900151937Sjkim    AcpiOsPrintf ("\n");
901102550Siwasaki
902151937Sjkim    AcpiDmIndent (Level + 1);
903167802Sjkim    AcpiDmDumpInteger8 (Resource->GenericReg.BitWidth, "Bit Width");
904102550Siwasaki
905151937Sjkim    AcpiDmIndent (Level + 1);
906167802Sjkim    AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset");
907151937Sjkim
908151937Sjkim    AcpiDmIndent (Level + 1);
909167802Sjkim    AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address");
910151937Sjkim
911151937Sjkim    /* Optional field for ACPI 3.0 */
912151937Sjkim
913167802Sjkim    AcpiDmIndent (Level + 1);
914151937Sjkim    if (Resource->GenericReg.AccessSize)
915151937Sjkim    {
916167802Sjkim        AcpiOsPrintf ("0x%2.2X,               // %s\n",
917167802Sjkim            Resource->GenericReg.AccessSize, "Access Size");
918151937Sjkim        AcpiDmIndent (Level + 1);
919151937Sjkim    }
920167802Sjkim    else
921167802Sjkim    {
922167802Sjkim        AcpiOsPrintf (",");
923167802Sjkim    }
924151937Sjkim
925167802Sjkim    /* DescriptorName was added for ACPI 3.0+ */
926167802Sjkim
927167802Sjkim    AcpiDmDescriptorName ();
928151937Sjkim    AcpiOsPrintf (")\n");
929100966Siwasaki}
930100966Siwasaki
931100966Siwasaki
932100966Siwasaki/*******************************************************************************
933100966Siwasaki *
934100966Siwasaki * FUNCTION:    AcpiDmInterruptDescriptor
935100966Siwasaki *
936100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
937100966Siwasaki *              Length              - Length of the descriptor in bytes
938100966Siwasaki *              Level               - Current source code indentation level
939100966Siwasaki *
940100966Siwasaki * RETURN:      None
941100966Siwasaki *
942100966Siwasaki * DESCRIPTION: Decode a extended Interrupt descriptor
943100966Siwasaki *
944100966Siwasaki ******************************************************************************/
945100966Siwasaki
946100966Siwasakivoid
947100966SiwasakiAcpiDmInterruptDescriptor (
948151937Sjkim    AML_RESOURCE            *Resource,
949100966Siwasaki    UINT32                  Length,
950100966Siwasaki    UINT32                  Level)
951100966Siwasaki{
952100966Siwasaki    UINT32                  i;
953100966Siwasaki
954100966Siwasaki
955100966Siwasaki    AcpiDmIndent (Level);
956151937Sjkim    AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ",
957243347Sjkim        AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->ExtendedIrq.Flags)],
958243347Sjkim        AcpiGbl_HeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 1)],
959243347Sjkim        AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 2)],
960243347Sjkim        AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->ExtendedIrq.Flags, 3)]);
961100966Siwasaki
962151937Sjkim    /*
963151937Sjkim     * The ResourceSource fields are optional and appear after the interrupt
964151937Sjkim     * list. Must compute length based on length of the list. First xrupt
965151937Sjkim     * is included in the struct (reason for -1 below)
966151937Sjkim     */
967151937Sjkim    AcpiDmResourceSource (Resource,
968151937Sjkim        sizeof (AML_RESOURCE_EXTENDED_IRQ) +
969193267Sjkim            ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32),
970151937Sjkim        Resource->ExtendedIrq.ResourceLength);
971100966Siwasaki
972167802Sjkim    /* Insert a descriptor name */
973167802Sjkim
974167802Sjkim    AcpiDmDescriptorName ();
975167802Sjkim    AcpiOsPrintf (")\n");
976167802Sjkim
977151937Sjkim    /* Dump the interrupt list */
978114237Snjl
979100966Siwasaki    AcpiDmIndent (Level);
980100966Siwasaki    AcpiOsPrintf ("{\n");
981151937Sjkim    for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++)
982100966Siwasaki    {
983100966Siwasaki        AcpiDmIndent (Level + 1);
984151937Sjkim        AcpiOsPrintf ("0x%8.8X,\n",
985151937Sjkim            (UINT32) Resource->ExtendedIrq.Interrupts[i]);
986100966Siwasaki    }
987100966Siwasaki
988100966Siwasaki    AcpiDmIndent (Level);
989100966Siwasaki    AcpiOsPrintf ("}\n");
990100966Siwasaki}
991100966Siwasaki
992100966Siwasaki
993100966Siwasaki/*******************************************************************************
994100966Siwasaki *
995151937Sjkim * FUNCTION:    AcpiDmVendorCommon
996100966Siwasaki *
997151937Sjkim * PARAMETERS:  Name                - Descriptor name suffix
998151937Sjkim *              ByteData            - Pointer to the vendor byte data
999151937Sjkim *              Length              - Length of the byte data
1000100966Siwasaki *              Level               - Current source code indentation level
1001100966Siwasaki *
1002100966Siwasaki * RETURN:      None
1003100966Siwasaki *
1004151937Sjkim * DESCRIPTION: Decode a Vendor descriptor, both Large and Small
1005100966Siwasaki *
1006100966Siwasaki ******************************************************************************/
1007100966Siwasaki
1008100966Siwasakivoid
1009151937SjkimAcpiDmVendorCommon (
1010151937Sjkim    char                    *Name,
1011151937Sjkim    UINT8                   *ByteData,
1012100966Siwasaki    UINT32                  Length,
1013100966Siwasaki    UINT32                  Level)
1014100966Siwasaki{
1015100966Siwasaki
1016167802Sjkim    /* Dump macro name */
1017151937Sjkim
1018100966Siwasaki    AcpiDmIndent (Level);
1019167802Sjkim    AcpiOsPrintf ("Vendor%s (", Name);
1020151937Sjkim
1021167802Sjkim    /* Insert a descriptor name */
1022167802Sjkim
1023167802Sjkim    AcpiDmDescriptorName ();
1024167802Sjkim    AcpiOsPrintf (")      // Length = 0x%.2X\n", Length);
1025167802Sjkim
1026151937Sjkim    /* Dump the vendor bytes */
1027151937Sjkim
1028100966Siwasaki    AcpiDmIndent (Level);
1029100966Siwasaki    AcpiOsPrintf ("{\n");
1030100966Siwasaki
1031151937Sjkim    AcpiDmDisasmByteList (Level + 1, ByteData, Length);
1032151937Sjkim
1033100966Siwasaki    AcpiDmIndent (Level);
1034100966Siwasaki    AcpiOsPrintf ("}\n");
1035100966Siwasaki}
1036100966Siwasaki
1037100966Siwasaki
1038151937Sjkim/*******************************************************************************
1039151937Sjkim *
1040151937Sjkim * FUNCTION:    AcpiDmVendorLargeDescriptor
1041151937Sjkim *
1042151937Sjkim * PARAMETERS:  Resource            - Pointer to the resource descriptor
1043151937Sjkim *              Length              - Length of the descriptor in bytes
1044151937Sjkim *              Level               - Current source code indentation level
1045151937Sjkim *
1046151937Sjkim * RETURN:      None
1047151937Sjkim *
1048151937Sjkim * DESCRIPTION: Decode a Vendor Large descriptor
1049151937Sjkim *
1050151937Sjkim ******************************************************************************/
1051151937Sjkim
1052151937Sjkimvoid
1053151937SjkimAcpiDmVendorLargeDescriptor (
1054151937Sjkim    AML_RESOURCE            *Resource,
1055151937Sjkim    UINT32                  Length,
1056151937Sjkim    UINT32                  Level)
1057151937Sjkim{
1058151937Sjkim
1059167802Sjkim    AcpiDmVendorCommon ("Long ",
1060167802Sjkim        ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_LARGE_HEADER)),
1061151937Sjkim        Length, Level);
1062151937Sjkim}
1063151937Sjkim
1064100966Siwasaki#endif
1065