1100966Siwasaki/*******************************************************************************
2100966Siwasaki *
3100966Siwasaki * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly
4100966Siwasaki *
5100966Siwasaki ******************************************************************************/
6100966Siwasaki
7217365Sjkim/*
8217365Sjkim * Copyright (C) 2000 - 2011, 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:
156167802Sjkim            AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
157167802Sjkim                AcpiDmMemoryNames[i]);
158151937Sjkim            break;
159151937Sjkim
160151937Sjkim        case 32:
161167802Sjkim            AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
162167802Sjkim                AcpiDmMemoryNames[i]);
163151937Sjkim            break;
164151937Sjkim
165151937Sjkim        default:
166151937Sjkim            return;
167151937Sjkim        }
168151937Sjkim    }
169151937Sjkim}
170151937Sjkim
171151937Sjkim
172151937Sjkim/*******************************************************************************
173151937Sjkim *
174167802Sjkim * FUNCTION:    AcpiDmAddressFields
175151937Sjkim *
176151937Sjkim * PARAMETERS:  Source              - Pointer to the contiguous data fields
177151937Sjkim *              Type                - 16, 32, or 64 (bit)
178151937Sjkim *              Level               - Current source code indentation level
179151937Sjkim *
180151937Sjkim * RETURN:      None
181151937Sjkim *
182151937Sjkim * DESCRIPTION: Decode fields common to address descriptors
183151937Sjkim *
184151937Sjkim ******************************************************************************/
185151937Sjkim
186151937Sjkimstatic void
187151937SjkimAcpiDmAddressFields (
188151937Sjkim    void                    *Source,
189151937Sjkim    UINT8                   Type,
190151937Sjkim    UINT32                  Level)
191151937Sjkim{
192193267Sjkim    UINT32                  i;
193151937Sjkim
194151937Sjkim
195151937Sjkim    AcpiOsPrintf ("\n");
196151937Sjkim
197151937Sjkim    for (i = 0; i < 5; i++)
198151937Sjkim    {
199151937Sjkim        AcpiDmIndent (Level + 1);
200151937Sjkim
201151937Sjkim        switch (Type)
202151937Sjkim        {
203151937Sjkim        case 16:
204167802Sjkim            AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
205167802Sjkim                AcpiDmAddressNames[i]);
206151937Sjkim            break;
207151937Sjkim
208151937Sjkim        case 32:
209167802Sjkim            AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
210167802Sjkim                AcpiDmAddressNames[i]);
211151937Sjkim            break;
212151937Sjkim
213151937Sjkim        case 64:
214167802Sjkim            AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i],
215167802Sjkim                AcpiDmAddressNames[i]);
216151937Sjkim            break;
217151937Sjkim
218151937Sjkim        default:
219151937Sjkim            return;
220151937Sjkim        }
221151937Sjkim    }
222151937Sjkim}
223151937Sjkim
224151937Sjkim
225151937Sjkim/*******************************************************************************
226151937Sjkim *
227151937Sjkim * FUNCTION:    AcpiDmAddressPrefix
228151937Sjkim *
229151937Sjkim * PARAMETERS:  Type                - Descriptor type
230151937Sjkim *
231151937Sjkim * RETURN:      None
232151937Sjkim *
233151937Sjkim * DESCRIPTION: Emit name prefix representing the address descriptor type
234151937Sjkim *
235151937Sjkim ******************************************************************************/
236151937Sjkim
237151937Sjkimstatic void
238151937SjkimAcpiDmAddressPrefix (
239151937Sjkim    UINT8                   Type)
240151937Sjkim{
241151937Sjkim
242151937Sjkim    switch (Type)
243151937Sjkim    {
244151937Sjkim    case ACPI_RESOURCE_TYPE_ADDRESS16:
245151937Sjkim        AcpiOsPrintf ("Word");
246151937Sjkim        break;
247151937Sjkim
248151937Sjkim    case ACPI_RESOURCE_TYPE_ADDRESS32:
249151937Sjkim        AcpiOsPrintf ("DWord");
250151937Sjkim        break;
251151937Sjkim
252151937Sjkim    case ACPI_RESOURCE_TYPE_ADDRESS64:
253151937Sjkim        AcpiOsPrintf ("QWord");
254151937Sjkim        break;
255151937Sjkim
256151937Sjkim    case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
257151937Sjkim        AcpiOsPrintf ("Extended");
258151937Sjkim        break;
259151937Sjkim
260151937Sjkim    default:
261151937Sjkim        return;
262151937Sjkim    }
263151937Sjkim}
264151937Sjkim
265151937Sjkim
266151937Sjkim/*******************************************************************************
267151937Sjkim *
268151937Sjkim * FUNCTION:    AcpiDmAddressCommon
269151937Sjkim *
270151937Sjkim * PARAMETERS:  Resource            - Raw AML descriptor
271151937Sjkim *              Type                - Descriptor type
272151937Sjkim *              Level               - Current source code indentation level
273151937Sjkim *
274151937Sjkim * RETURN:      None
275151937Sjkim *
276151937Sjkim * DESCRIPTION: Emit common name and flag fields common to address descriptors
277151937Sjkim *
278151937Sjkim ******************************************************************************/
279151937Sjkim
280151937Sjkimstatic void
281151937SjkimAcpiDmAddressCommon (
282151937Sjkim    AML_RESOURCE            *Resource,
283151937Sjkim    UINT8                   Type,
284151937Sjkim    UINT32                  Level)
285151937Sjkim{
286151937Sjkim    UINT8                   ResourceType;
287151937Sjkim    UINT8                   SpecificFlags;
288151937Sjkim    UINT8                   Flags;
289151937Sjkim
290151937Sjkim
291151937Sjkim    ResourceType = Resource->Address.ResourceType;
292151937Sjkim    SpecificFlags = Resource->Address.SpecificFlags;
293151937Sjkim    Flags = Resource->Address.Flags;
294151937Sjkim
295151937Sjkim    AcpiDmIndent (Level);
296151937Sjkim
297151937Sjkim    /* Validate ResourceType */
298151937Sjkim
299151937Sjkim    if ((ResourceType > 2) && (ResourceType < 0xC0))
300151937Sjkim    {
301151937Sjkim        AcpiOsPrintf ("/**** Invalid Resource Type: 0x%X ****/", ResourceType);
302151937Sjkim        return;
303151937Sjkim    }
304151937Sjkim
305151937Sjkim    /* Prefix is either Word, DWord, QWord, or Extended */
306151937Sjkim
307151937Sjkim    AcpiDmAddressPrefix (Type);
308151937Sjkim
309151937Sjkim    /* Resource Types above 0xC0 are vendor-defined */
310151937Sjkim
311151937Sjkim    if (ResourceType > 2)
312151937Sjkim    {
313151937Sjkim        AcpiOsPrintf ("Space (0x%2.2X, ", ResourceType);
314151937Sjkim        AcpiDmSpaceFlags (Flags);
315151937Sjkim        AcpiOsPrintf (" 0x%2.2X,", SpecificFlags);
316151937Sjkim        return;
317151937Sjkim    }
318151937Sjkim
319151937Sjkim    /* This is either a Memory, IO, or BusNumber descriptor (0,1,2) */
320151937Sjkim
321167802Sjkim    AcpiOsPrintf ("%s (", AcpiGbl_WordDecode [ResourceType & 0x3]);
322151937Sjkim
323151937Sjkim    /* Decode the general and type-specific flags */
324151937Sjkim
325151937Sjkim    if (ResourceType == ACPI_MEMORY_RANGE)
326151937Sjkim    {
327151937Sjkim        AcpiDmMemoryFlags (Flags, SpecificFlags);
328151937Sjkim    }
329151937Sjkim    else /* IO range or BusNumberRange */
330151937Sjkim    {
331151937Sjkim        AcpiDmIoFlags (Flags);
332151937Sjkim        if (ResourceType == ACPI_IO_RANGE)
333151937Sjkim        {
334167802Sjkim            AcpiOsPrintf (" %s,", AcpiGbl_RngDecode [SpecificFlags & 0x3]);
335151937Sjkim        }
336151937Sjkim    }
337151937Sjkim}
338151937Sjkim
339151937Sjkim
340151937Sjkim/*******************************************************************************
341151937Sjkim *
342151937Sjkim * FUNCTION:    AcpiDmAddressFlags
343151937Sjkim *
344151937Sjkim * PARAMETERS:  Resource        - Raw AML descriptor
345151937Sjkim *
346151937Sjkim * RETURN:      None
347151937Sjkim *
348151937Sjkim * DESCRIPTION: Emit flags common to address descriptors
349151937Sjkim *
350151937Sjkim ******************************************************************************/
351151937Sjkim
352151937Sjkimstatic void
353151937SjkimAcpiDmAddressFlags (
354151937Sjkim    AML_RESOURCE            *Resource)
355151937Sjkim{
356151937Sjkim
357151937Sjkim    if (Resource->Address.ResourceType == ACPI_IO_RANGE)
358151937Sjkim    {
359151937Sjkim        AcpiDmIoFlags2 (Resource->Address.SpecificFlags);
360151937Sjkim    }
361151937Sjkim    else if (Resource->Address.ResourceType == ACPI_MEMORY_RANGE)
362151937Sjkim    {
363151937Sjkim        AcpiDmMemoryFlags2 (Resource->Address.SpecificFlags);
364151937Sjkim    }
365151937Sjkim}
366151937Sjkim
367151937Sjkim
368151937Sjkim/*******************************************************************************
369151937Sjkim *
370151937Sjkim * FUNCTION:    AcpiDmSpaceFlags
371151937Sjkim *
372151937Sjkim * PARAMETERS:  Flags               - Flag byte to be decoded
373151937Sjkim *
374151937Sjkim * RETURN:      None
375151937Sjkim *
376151937Sjkim * DESCRIPTION: Decode the flags specific to Space Address space descriptors
377151937Sjkim *
378151937Sjkim ******************************************************************************/
379151937Sjkim
380151937Sjkimstatic void
381151937SjkimAcpiDmSpaceFlags (
382151937Sjkim    UINT8                   Flags)
383151937Sjkim{
384151937Sjkim
385151937Sjkim    AcpiOsPrintf ("%s, %s, %s, %s,",
386151937Sjkim        AcpiGbl_ConsumeDecode [(Flags & 1)],
387167802Sjkim        AcpiGbl_DecDecode [(Flags & 0x2) >> 1],
388151937Sjkim        AcpiGbl_MinDecode [(Flags & 0x4) >> 2],
389151937Sjkim        AcpiGbl_MaxDecode [(Flags & 0x8) >> 3]);
390151937Sjkim}
391151937Sjkim
392151937Sjkim
393151937Sjkim/*******************************************************************************
394151937Sjkim *
395100966Siwasaki * FUNCTION:    AcpiDmIoFlags
396100966Siwasaki *
397100966Siwasaki * PARAMETERS:  Flags               - Flag byte to be decoded
398100966Siwasaki *
399100966Siwasaki * RETURN:      None
400100966Siwasaki *
401100966Siwasaki * DESCRIPTION: Decode the flags specific to IO Address space descriptors
402100966Siwasaki *
403100966Siwasaki ******************************************************************************/
404100966Siwasaki
405151937Sjkimstatic void
406100966SiwasakiAcpiDmIoFlags (
407100966Siwasaki        UINT8               Flags)
408100966Siwasaki{
409100966Siwasaki    AcpiOsPrintf ("%s, %s, %s, %s,",
410100966Siwasaki        AcpiGbl_ConsumeDecode [(Flags & 1)],
411100966Siwasaki        AcpiGbl_MinDecode [(Flags & 0x4) >> 2],
412100966Siwasaki        AcpiGbl_MaxDecode [(Flags & 0x8) >> 3],
413167802Sjkim        AcpiGbl_DecDecode [(Flags & 0x2) >> 1]);
414100966Siwasaki}
415100966Siwasaki
416100966Siwasaki
417100966Siwasaki/*******************************************************************************
418100966Siwasaki *
419151937Sjkim * FUNCTION:    AcpiDmIoFlags2
420151937Sjkim *
421151937Sjkim * PARAMETERS:  SpecificFlags       - "Specific" flag byte to be decoded
422151937Sjkim *
423151937Sjkim * RETURN:      None
424151937Sjkim *
425151937Sjkim * DESCRIPTION: Decode the flags specific to IO Address space descriptors
426151937Sjkim *
427151937Sjkim ******************************************************************************/
428151937Sjkim
429151937Sjkimstatic void
430151937SjkimAcpiDmIoFlags2 (
431151937Sjkim        UINT8               SpecificFlags)
432151937Sjkim{
433151937Sjkim
434151937Sjkim    AcpiOsPrintf (", %s",
435167802Sjkim        AcpiGbl_TtpDecode [(SpecificFlags & 0x10) >> 4]);
436151937Sjkim
437151937Sjkim    /* TRS is only used if TTP is TypeTranslation */
438151937Sjkim
439151937Sjkim    if (SpecificFlags & 0x10)
440151937Sjkim    {
441151937Sjkim        AcpiOsPrintf (", %s",
442167802Sjkim            AcpiGbl_TrsDecode [(SpecificFlags & 0x20) >> 5]);
443151937Sjkim    }
444151937Sjkim}
445151937Sjkim
446151937Sjkim
447151937Sjkim/*******************************************************************************
448151937Sjkim *
449100966Siwasaki * FUNCTION:    AcpiDmMemoryFlags
450100966Siwasaki *
451100966Siwasaki * PARAMETERS:  Flags               - Flag byte to be decoded
452100966Siwasaki *              SpecificFlags       - "Specific" flag byte to be decoded
453100966Siwasaki *
454100966Siwasaki * RETURN:      None
455100966Siwasaki *
456100966Siwasaki * DESCRIPTION: Decode flags specific to Memory Address Space descriptors
457100966Siwasaki *
458100966Siwasaki ******************************************************************************/
459100966Siwasaki
460151937Sjkimstatic void
461100966SiwasakiAcpiDmMemoryFlags (
462100966Siwasaki    UINT8                   Flags,
463100966Siwasaki    UINT8                   SpecificFlags)
464100966Siwasaki{
465151937Sjkim
466100966Siwasaki    AcpiOsPrintf ("%s, %s, %s, %s, %s, %s,",
467100966Siwasaki        AcpiGbl_ConsumeDecode [(Flags & 1)],
468167802Sjkim        AcpiGbl_DecDecode [(Flags & 0x2) >> 1],
469100966Siwasaki        AcpiGbl_MinDecode [(Flags & 0x4) >> 2],
470100966Siwasaki        AcpiGbl_MaxDecode [(Flags & 0x8) >> 3],
471167802Sjkim        AcpiGbl_MemDecode [(SpecificFlags & 0x6) >> 1],
472167802Sjkim        AcpiGbl_RwDecode [(SpecificFlags & 0x1)]);
473100966Siwasaki}
474100966Siwasaki
475100966Siwasaki
476100966Siwasaki/*******************************************************************************
477100966Siwasaki *
478151937Sjkim * FUNCTION:    AcpiDmMemoryFlags2
479151937Sjkim *
480151937Sjkim * PARAMETERS:  SpecificFlags       - "Specific" flag byte to be decoded
481151937Sjkim *
482151937Sjkim * RETURN:      None
483151937Sjkim *
484151937Sjkim * DESCRIPTION: Decode flags specific to Memory Address Space descriptors
485151937Sjkim *
486151937Sjkim ******************************************************************************/
487151937Sjkim
488151937Sjkimstatic void
489151937SjkimAcpiDmMemoryFlags2 (
490151937Sjkim    UINT8                   SpecificFlags)
491151937Sjkim{
492151937Sjkim
493151937Sjkim    AcpiOsPrintf (", %s, %s",
494167802Sjkim        AcpiGbl_MtpDecode [(SpecificFlags & 0x18) >> 3],
495167802Sjkim        AcpiGbl_TtpDecode [(SpecificFlags & 0x20) >> 5]);
496151937Sjkim}
497151937Sjkim
498151937Sjkim
499151937Sjkim/*******************************************************************************
500151937Sjkim *
501151937Sjkim * FUNCTION:    AcpiDmResourceSource
502151937Sjkim *
503151937Sjkim * PARAMETERS:  Resource        - Raw AML descriptor
504151937Sjkim *              MinimumLength   - descriptor length without optional fields
505151937Sjkim *              ResourceLength
506151937Sjkim *
507151937Sjkim * RETURN:      None
508151937Sjkim *
509151937Sjkim * DESCRIPTION: Dump optional ResourceSource fields of an address descriptor
510151937Sjkim *
511151937Sjkim ******************************************************************************/
512151937Sjkim
513151937Sjkimstatic void
514151937SjkimAcpiDmResourceSource (
515151937Sjkim    AML_RESOURCE            *Resource,
516151937Sjkim    ACPI_SIZE               MinimumTotalLength,
517151937Sjkim    UINT32                  ResourceLength)
518151937Sjkim{
519151937Sjkim    UINT8                   *AmlResourceSource;
520151937Sjkim    UINT32                  TotalLength;
521151937Sjkim
522151937Sjkim
523151937Sjkim    TotalLength = ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER);
524151937Sjkim
525151937Sjkim    /* Check if the optional ResourceSource fields are present */
526151937Sjkim
527151937Sjkim    if (TotalLength <= MinimumTotalLength)
528151937Sjkim    {
529151937Sjkim        /* The two optional fields are not used */
530151937Sjkim
531167802Sjkim        AcpiOsPrintf (",, ");
532151937Sjkim        return;
533151937Sjkim    }
534151937Sjkim
535151937Sjkim    /* Get a pointer to the ResourceSource */
536151937Sjkim
537167802Sjkim    AmlResourceSource = ACPI_ADD_PTR (UINT8, Resource, MinimumTotalLength);
538151937Sjkim
539151937Sjkim    /*
540151937Sjkim     * Always emit the ResourceSourceIndex (Byte)
541151937Sjkim     *
542151937Sjkim     * NOTE: Some ASL compilers always create a 0 byte (in the AML) for the
543151937Sjkim     * Index even if the String does not exist. Although this is in violation
544151937Sjkim     * of the ACPI specification, it is very important to emit ASL code that
545151937Sjkim     * can be compiled back to the identical AML. There may be fields and/or
546151937Sjkim     * indexes into the resource template buffer that are compiled to absolute
547151937Sjkim     * offsets, and these will be broken if the AML length is changed.
548151937Sjkim     */
549151937Sjkim    AcpiOsPrintf ("0x%2.2X,", (UINT32) AmlResourceSource[0]);
550151937Sjkim
551151937Sjkim    /* Make sure that the ResourceSource string exists before dumping it */
552151937Sjkim
553151937Sjkim    if (TotalLength > (MinimumTotalLength + 1))
554151937Sjkim    {
555151937Sjkim        AcpiOsPrintf (" ");
556151937Sjkim        AcpiUtPrintString ((char *) &AmlResourceSource[1], ACPI_UINT8_MAX);
557151937Sjkim    }
558151937Sjkim
559167802Sjkim    AcpiOsPrintf (", ");
560151937Sjkim}
561151937Sjkim
562151937Sjkim
563151937Sjkim/*******************************************************************************
564151937Sjkim *
565100966Siwasaki * FUNCTION:    AcpiDmWordDescriptor
566100966Siwasaki *
567100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
568100966Siwasaki *              Length              - Length of the descriptor in bytes
569100966Siwasaki *              Level               - Current source code indentation level
570100966Siwasaki *
571100966Siwasaki * RETURN:      None
572100966Siwasaki *
573100966Siwasaki * DESCRIPTION: Decode a Word Address Space descriptor
574100966Siwasaki *
575100966Siwasaki ******************************************************************************/
576100966Siwasaki
577100966Siwasakivoid
578100966SiwasakiAcpiDmWordDescriptor (
579151937Sjkim    AML_RESOURCE            *Resource,
580100966Siwasaki    UINT32                  Length,
581100966Siwasaki    UINT32                  Level)
582100966Siwasaki{
583100966Siwasaki
584151937Sjkim    /* Dump resource name and flags */
585100966Siwasaki
586151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS16, Level);
587100966Siwasaki
588151937Sjkim    /* Dump the 5 contiguous WORD values */
589100966Siwasaki
590151937Sjkim    AcpiDmAddressFields (&Resource->Address16.Granularity, 16, Level);
591100966Siwasaki
592151937Sjkim    /* The ResourceSource fields are optional */
593151937Sjkim
594100966Siwasaki    AcpiDmIndent (Level + 1);
595151937Sjkim    AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS16), Length);
596100966Siwasaki
597167802Sjkim    /* Insert a descriptor name */
598167802Sjkim
599167802Sjkim    AcpiDmDescriptorName ();
600167802Sjkim
601151937Sjkim    /* Type-specific flags */
602100966Siwasaki
603151937Sjkim    AcpiDmAddressFlags (Resource);
604100966Siwasaki    AcpiOsPrintf (")\n");
605100966Siwasaki}
606100966Siwasaki
607100966Siwasaki
608100966Siwasaki/*******************************************************************************
609100966Siwasaki *
610100966Siwasaki * FUNCTION:    AcpiDmDwordDescriptor
611100966Siwasaki *
612100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
613100966Siwasaki *              Length              - Length of the descriptor in bytes
614100966Siwasaki *              Level               - Current source code indentation level
615100966Siwasaki *
616100966Siwasaki * RETURN:      None
617100966Siwasaki *
618100966Siwasaki * DESCRIPTION: Decode a DWord Address Space descriptor
619100966Siwasaki *
620100966Siwasaki ******************************************************************************/
621100966Siwasaki
622100966Siwasakivoid
623100966SiwasakiAcpiDmDwordDescriptor (
624151937Sjkim    AML_RESOURCE            *Resource,
625100966Siwasaki    UINT32                  Length,
626100966Siwasaki    UINT32                  Level)
627100966Siwasaki{
628100966Siwasaki
629151937Sjkim    /* Dump resource name and flags */
630100966Siwasaki
631151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS32, Level);
632100966Siwasaki
633151937Sjkim    /* Dump the 5 contiguous DWORD values */
634100966Siwasaki
635151937Sjkim    AcpiDmAddressFields (&Resource->Address32.Granularity, 32, Level);
636151937Sjkim
637151937Sjkim    /* The ResourceSource fields are optional */
638151937Sjkim
639100966Siwasaki    AcpiDmIndent (Level + 1);
640151937Sjkim    AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS32), Length);
641100966Siwasaki
642167802Sjkim    /* Insert a descriptor name */
643167802Sjkim
644167802Sjkim    AcpiDmDescriptorName ();
645167802Sjkim
646151937Sjkim    /* Type-specific flags */
647100966Siwasaki
648151937Sjkim    AcpiDmAddressFlags (Resource);
649100966Siwasaki    AcpiOsPrintf (")\n");
650100966Siwasaki}
651100966Siwasaki
652100966Siwasaki
653100966Siwasaki/*******************************************************************************
654100966Siwasaki *
655100966Siwasaki * FUNCTION:    AcpiDmQwordDescriptor
656100966Siwasaki *
657100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
658100966Siwasaki *              Length              - Length of the descriptor in bytes
659100966Siwasaki *              Level               - Current source code indentation level
660100966Siwasaki *
661100966Siwasaki * RETURN:      None
662100966Siwasaki *
663100966Siwasaki * DESCRIPTION: Decode a QWord Address Space descriptor
664100966Siwasaki *
665100966Siwasaki ******************************************************************************/
666100966Siwasaki
667100966Siwasakivoid
668100966SiwasakiAcpiDmQwordDescriptor (
669151937Sjkim    AML_RESOURCE            *Resource,
670100966Siwasaki    UINT32                  Length,
671100966Siwasaki    UINT32                  Level)
672100966Siwasaki{
673100966Siwasaki
674151937Sjkim    /* Dump resource name and flags */
675100966Siwasaki
676151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS64, Level);
677100966Siwasaki
678151937Sjkim    /* Dump the 5 contiguous QWORD values */
679100966Siwasaki
680151937Sjkim    AcpiDmAddressFields (&Resource->Address64.Granularity, 64, Level);
681100966Siwasaki
682151937Sjkim    /* The ResourceSource fields are optional */
683100966Siwasaki
684100966Siwasaki    AcpiDmIndent (Level + 1);
685151937Sjkim    AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS64), Length);
686100966Siwasaki
687167802Sjkim    /* Insert a descriptor name */
688167802Sjkim
689167802Sjkim    AcpiDmDescriptorName ();
690167802Sjkim
691151937Sjkim    /* Type-specific flags */
692100966Siwasaki
693151937Sjkim    AcpiDmAddressFlags (Resource);
694151937Sjkim    AcpiOsPrintf (")\n");
695151937Sjkim}
696151937Sjkim
697151937Sjkim
698151937Sjkim/*******************************************************************************
699151937Sjkim *
700151937Sjkim * FUNCTION:    AcpiDmExtendedDescriptor
701151937Sjkim *
702151937Sjkim * PARAMETERS:  Resource            - Pointer to the resource descriptor
703151937Sjkim *              Length              - Length of the descriptor in bytes
704151937Sjkim *              Level               - Current source code indentation level
705151937Sjkim *
706151937Sjkim * RETURN:      None
707151937Sjkim *
708151937Sjkim * DESCRIPTION: Decode a Extended Address Space descriptor
709151937Sjkim *
710151937Sjkim ******************************************************************************/
711151937Sjkim
712151937Sjkimvoid
713151937SjkimAcpiDmExtendedDescriptor (
714151937Sjkim    AML_RESOURCE            *Resource,
715151937Sjkim    UINT32                  Length,
716151937Sjkim    UINT32                  Level)
717151937Sjkim{
718151937Sjkim
719151937Sjkim    /* Dump resource name and flags */
720151937Sjkim
721151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, Level);
722151937Sjkim
723151937Sjkim    /* Dump the 5 contiguous QWORD values */
724151937Sjkim
725151937Sjkim    AcpiDmAddressFields (&Resource->ExtAddress64.Granularity, 64, Level);
726151937Sjkim
727151937Sjkim    /* Extra field for this descriptor only */
728151937Sjkim
729100966Siwasaki    AcpiDmIndent (Level + 1);
730151937Sjkim    AcpiDmDumpInteger64 (Resource->ExtAddress64.TypeSpecific,
731151937Sjkim        "Type-Specific Attributes");
732100966Siwasaki
733167802Sjkim    /* Insert a descriptor name */
734167802Sjkim
735167802Sjkim    AcpiDmIndent (Level + 1);
736167802Sjkim    AcpiDmDescriptorName ();
737167802Sjkim
738151937Sjkim    /* Type-specific flags */
739100966Siwasaki
740151937Sjkim    AcpiDmAddressFlags (Resource);
741100966Siwasaki    AcpiOsPrintf (")\n");
742100966Siwasaki}
743100966Siwasaki
744100966Siwasaki
745100966Siwasaki/*******************************************************************************
746100966Siwasaki *
747100966Siwasaki * FUNCTION:    AcpiDmMemory24Descriptor
748100966Siwasaki *
749100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
750100966Siwasaki *              Length              - Length of the descriptor in bytes
751100966Siwasaki *              Level               - Current source code indentation level
752100966Siwasaki *
753100966Siwasaki * RETURN:      None
754100966Siwasaki *
755100966Siwasaki * DESCRIPTION: Decode a Memory24 descriptor
756100966Siwasaki *
757100966Siwasaki ******************************************************************************/
758100966Siwasaki
759100966Siwasakivoid
760100966SiwasakiAcpiDmMemory24Descriptor (
761151937Sjkim    AML_RESOURCE            *Resource,
762100966Siwasaki    UINT32                  Length,
763100966Siwasaki    UINT32                  Level)
764100966Siwasaki{
765100966Siwasaki
766151937Sjkim    /* Dump name and read/write flag */
767151937Sjkim
768100966Siwasaki    AcpiDmIndent (Level);
769151937Sjkim    AcpiOsPrintf ("Memory24 (%s,\n",
770167802Sjkim        AcpiGbl_RwDecode [Resource->Memory24.Flags & 1]);
771151937Sjkim
772151937Sjkim    /* Dump the 4 contiguous WORD values */
773151937Sjkim
774151937Sjkim    AcpiDmMemoryFields (&Resource->Memory24.Minimum, 16, Level);
775151937Sjkim
776167802Sjkim    /* Insert a descriptor name */
777167802Sjkim
778151937Sjkim    AcpiDmIndent (Level + 1);
779167802Sjkim    AcpiDmDescriptorName ();
780151937Sjkim    AcpiOsPrintf (")\n");
781100966Siwasaki}
782100966Siwasaki
783100966Siwasaki
784100966Siwasaki/*******************************************************************************
785100966Siwasaki *
786100966Siwasaki * FUNCTION:    AcpiDmMemory32Descriptor
787100966Siwasaki *
788100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
789100966Siwasaki *              Length              - Length of the descriptor in bytes
790100966Siwasaki *              Level               - Current source code indentation level
791100966Siwasaki *
792100966Siwasaki * RETURN:      None
793100966Siwasaki *
794100966Siwasaki * DESCRIPTION: Decode a Memory32 descriptor
795100966Siwasaki *
796100966Siwasaki ******************************************************************************/
797100966Siwasaki
798100966Siwasakivoid
799100966SiwasakiAcpiDmMemory32Descriptor (
800151937Sjkim    AML_RESOURCE            *Resource,
801100966Siwasaki    UINT32                  Length,
802100966Siwasaki    UINT32                  Level)
803100966Siwasaki{
804100966Siwasaki
805151937Sjkim    /* Dump name and read/write flag */
806151937Sjkim
807100966Siwasaki    AcpiDmIndent (Level);
808151937Sjkim    AcpiOsPrintf ("Memory32 (%s,\n",
809167802Sjkim        AcpiGbl_RwDecode [Resource->Memory32.Flags & 1]);
810151937Sjkim
811151937Sjkim    /* Dump the 4 contiguous DWORD values */
812151937Sjkim
813151937Sjkim    AcpiDmMemoryFields (&Resource->Memory32.Minimum, 32, Level);
814151937Sjkim
815167802Sjkim    /* Insert a descriptor name */
816167802Sjkim
817151937Sjkim    AcpiDmIndent (Level + 1);
818167802Sjkim    AcpiDmDescriptorName ();
819151937Sjkim    AcpiOsPrintf (")\n");
820100966Siwasaki}
821100966Siwasaki
822100966Siwasaki
823100966Siwasaki/*******************************************************************************
824100966Siwasaki *
825151937Sjkim * FUNCTION:    AcpiDmFixedMemory32Descriptor
826100966Siwasaki *
827100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
828100966Siwasaki *              Length              - Length of the descriptor in bytes
829100966Siwasaki *              Level               - Current source code indentation level
830100966Siwasaki *
831100966Siwasaki * RETURN:      None
832100966Siwasaki *
833100966Siwasaki * DESCRIPTION: Decode a Fixed Memory32 descriptor
834100966Siwasaki *
835100966Siwasaki ******************************************************************************/
836100966Siwasaki
837100966Siwasakivoid
838151937SjkimAcpiDmFixedMemory32Descriptor (
839151937Sjkim    AML_RESOURCE            *Resource,
840100966Siwasaki    UINT32                  Length,
841100966Siwasaki    UINT32                  Level)
842100966Siwasaki{
843100966Siwasaki
844151937Sjkim    /* Dump name and read/write flag */
845151937Sjkim
846100966Siwasaki    AcpiDmIndent (Level);
847151937Sjkim    AcpiOsPrintf ("Memory32Fixed (%s,\n",
848167802Sjkim        AcpiGbl_RwDecode [Resource->FixedMemory32.Flags & 1]);
849151937Sjkim
850151937Sjkim    AcpiDmIndent (Level + 1);
851151937Sjkim    AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, "Address Base");
852151937Sjkim
853151937Sjkim    AcpiDmIndent (Level + 1);
854151937Sjkim    AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, "Address Length");
855151937Sjkim
856167802Sjkim    /* Insert a descriptor name */
857167802Sjkim
858151937Sjkim    AcpiDmIndent (Level + 1);
859167802Sjkim    AcpiDmDescriptorName ();
860151937Sjkim    AcpiOsPrintf (")\n");
861100966Siwasaki}
862100966Siwasaki
863100966Siwasaki
864100966Siwasaki/*******************************************************************************
865100966Siwasaki *
866100966Siwasaki * FUNCTION:    AcpiDmGenericRegisterDescriptor
867100966Siwasaki *
868100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
869100966Siwasaki *              Length              - Length of the descriptor in bytes
870100966Siwasaki *              Level               - Current source code indentation level
871100966Siwasaki *
872100966Siwasaki * RETURN:      None
873100966Siwasaki *
874100966Siwasaki * DESCRIPTION: Decode a Generic Register descriptor
875100966Siwasaki *
876100966Siwasaki ******************************************************************************/
877100966Siwasaki
878100966Siwasakivoid
879100966SiwasakiAcpiDmGenericRegisterDescriptor (
880151937Sjkim    AML_RESOURCE            *Resource,
881100966Siwasaki    UINT32                  Length,
882100966Siwasaki    UINT32                  Level)
883100966Siwasaki{
884100966Siwasaki
885100966Siwasaki    AcpiDmIndent (Level);
886100966Siwasaki    AcpiOsPrintf ("Register (");
887151937Sjkim    AcpiDmAddressSpace (Resource->GenericReg.AddressSpaceId);
888151937Sjkim    AcpiOsPrintf ("\n");
889102550Siwasaki
890151937Sjkim    AcpiDmIndent (Level + 1);
891167802Sjkim    AcpiDmDumpInteger8 (Resource->GenericReg.BitWidth, "Bit Width");
892102550Siwasaki
893151937Sjkim    AcpiDmIndent (Level + 1);
894167802Sjkim    AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset");
895151937Sjkim
896151937Sjkim    AcpiDmIndent (Level + 1);
897167802Sjkim    AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address");
898151937Sjkim
899151937Sjkim    /* Optional field for ACPI 3.0 */
900151937Sjkim
901167802Sjkim    AcpiDmIndent (Level + 1);
902151937Sjkim    if (Resource->GenericReg.AccessSize)
903151937Sjkim    {
904167802Sjkim        AcpiOsPrintf ("0x%2.2X,               // %s\n",
905167802Sjkim            Resource->GenericReg.AccessSize, "Access Size");
906151937Sjkim        AcpiDmIndent (Level + 1);
907151937Sjkim    }
908167802Sjkim    else
909167802Sjkim    {
910167802Sjkim        AcpiOsPrintf (",");
911167802Sjkim    }
912151937Sjkim
913167802Sjkim    /* DescriptorName was added for ACPI 3.0+ */
914167802Sjkim
915167802Sjkim    AcpiDmDescriptorName ();
916151937Sjkim    AcpiOsPrintf (")\n");
917100966Siwasaki}
918100966Siwasaki
919100966Siwasaki
920100966Siwasaki/*******************************************************************************
921100966Siwasaki *
922100966Siwasaki * FUNCTION:    AcpiDmInterruptDescriptor
923100966Siwasaki *
924100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
925100966Siwasaki *              Length              - Length of the descriptor in bytes
926100966Siwasaki *              Level               - Current source code indentation level
927100966Siwasaki *
928100966Siwasaki * RETURN:      None
929100966Siwasaki *
930100966Siwasaki * DESCRIPTION: Decode a extended Interrupt descriptor
931100966Siwasaki *
932100966Siwasaki ******************************************************************************/
933100966Siwasaki
934100966Siwasakivoid
935100966SiwasakiAcpiDmInterruptDescriptor (
936151937Sjkim    AML_RESOURCE            *Resource,
937100966Siwasaki    UINT32                  Length,
938100966Siwasaki    UINT32                  Level)
939100966Siwasaki{
940100966Siwasaki    UINT32                  i;
941100966Siwasaki
942100966Siwasaki
943100966Siwasaki    AcpiDmIndent (Level);
944151937Sjkim    AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ",
945151937Sjkim        AcpiGbl_ConsumeDecode [(Resource->ExtendedIrq.Flags & 1)],
946167802Sjkim        AcpiGbl_HeDecode [(Resource->ExtendedIrq.Flags >> 1) & 1],
947167802Sjkim        AcpiGbl_LlDecode [(Resource->ExtendedIrq.Flags >> 2) & 1],
948167802Sjkim        AcpiGbl_ShrDecode [(Resource->ExtendedIrq.Flags >> 3) & 1]);
949100966Siwasaki
950151937Sjkim    /*
951151937Sjkim     * The ResourceSource fields are optional and appear after the interrupt
952151937Sjkim     * list. Must compute length based on length of the list. First xrupt
953151937Sjkim     * is included in the struct (reason for -1 below)
954151937Sjkim     */
955151937Sjkim    AcpiDmResourceSource (Resource,
956151937Sjkim        sizeof (AML_RESOURCE_EXTENDED_IRQ) +
957193267Sjkim            ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32),
958151937Sjkim        Resource->ExtendedIrq.ResourceLength);
959100966Siwasaki
960167802Sjkim    /* Insert a descriptor name */
961167802Sjkim
962167802Sjkim    AcpiDmDescriptorName ();
963167802Sjkim    AcpiOsPrintf (")\n");
964167802Sjkim
965151937Sjkim    /* Dump the interrupt list */
966114237Snjl
967100966Siwasaki    AcpiDmIndent (Level);
968100966Siwasaki    AcpiOsPrintf ("{\n");
969151937Sjkim    for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++)
970100966Siwasaki    {
971100966Siwasaki        AcpiDmIndent (Level + 1);
972151937Sjkim        AcpiOsPrintf ("0x%8.8X,\n",
973151937Sjkim            (UINT32) Resource->ExtendedIrq.Interrupts[i]);
974100966Siwasaki    }
975100966Siwasaki
976100966Siwasaki    AcpiDmIndent (Level);
977100966Siwasaki    AcpiOsPrintf ("}\n");
978100966Siwasaki}
979100966Siwasaki
980100966Siwasaki
981100966Siwasaki/*******************************************************************************
982100966Siwasaki *
983151937Sjkim * FUNCTION:    AcpiDmVendorCommon
984100966Siwasaki *
985151937Sjkim * PARAMETERS:  Name                - Descriptor name suffix
986151937Sjkim *              ByteData            - Pointer to the vendor byte data
987151937Sjkim *              Length              - Length of the byte data
988100966Siwasaki *              Level               - Current source code indentation level
989100966Siwasaki *
990100966Siwasaki * RETURN:      None
991100966Siwasaki *
992151937Sjkim * DESCRIPTION: Decode a Vendor descriptor, both Large and Small
993100966Siwasaki *
994100966Siwasaki ******************************************************************************/
995100966Siwasaki
996100966Siwasakivoid
997151937SjkimAcpiDmVendorCommon (
998151937Sjkim    char                    *Name,
999151937Sjkim    UINT8                   *ByteData,
1000100966Siwasaki    UINT32                  Length,
1001100966Siwasaki    UINT32                  Level)
1002100966Siwasaki{
1003100966Siwasaki
1004167802Sjkim    /* Dump macro name */
1005151937Sjkim
1006100966Siwasaki    AcpiDmIndent (Level);
1007167802Sjkim    AcpiOsPrintf ("Vendor%s (", Name);
1008151937Sjkim
1009167802Sjkim    /* Insert a descriptor name */
1010167802Sjkim
1011167802Sjkim    AcpiDmDescriptorName ();
1012167802Sjkim    AcpiOsPrintf (")      // Length = 0x%.2X\n", Length);
1013167802Sjkim
1014151937Sjkim    /* Dump the vendor bytes */
1015151937Sjkim
1016100966Siwasaki    AcpiDmIndent (Level);
1017100966Siwasaki    AcpiOsPrintf ("{\n");
1018100966Siwasaki
1019151937Sjkim    AcpiDmDisasmByteList (Level + 1, ByteData, Length);
1020151937Sjkim
1021100966Siwasaki    AcpiDmIndent (Level);
1022100966Siwasaki    AcpiOsPrintf ("}\n");
1023100966Siwasaki}
1024100966Siwasaki
1025100966Siwasaki
1026151937Sjkim/*******************************************************************************
1027151937Sjkim *
1028151937Sjkim * FUNCTION:    AcpiDmVendorLargeDescriptor
1029151937Sjkim *
1030151937Sjkim * PARAMETERS:  Resource            - Pointer to the resource descriptor
1031151937Sjkim *              Length              - Length of the descriptor in bytes
1032151937Sjkim *              Level               - Current source code indentation level
1033151937Sjkim *
1034151937Sjkim * RETURN:      None
1035151937Sjkim *
1036151937Sjkim * DESCRIPTION: Decode a Vendor Large descriptor
1037151937Sjkim *
1038151937Sjkim ******************************************************************************/
1039151937Sjkim
1040151937Sjkimvoid
1041151937SjkimAcpiDmVendorLargeDescriptor (
1042151937Sjkim    AML_RESOURCE            *Resource,
1043151937Sjkim    UINT32                  Length,
1044151937Sjkim    UINT32                  Level)
1045151937Sjkim{
1046151937Sjkim
1047167802Sjkim    AcpiDmVendorCommon ("Long ",
1048167802Sjkim        ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_LARGE_HEADER)),
1049151937Sjkim        Length, Level);
1050151937Sjkim}
1051151937Sjkim
1052100966Siwasaki#endif
1053100966Siwasaki
1054