dmresrcl.c revision 272444
1100966Siwasaki/*******************************************************************************
2100966Siwasaki *
3100966Siwasaki * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly
4100966Siwasaki *
5100966Siwasaki ******************************************************************************/
6100966Siwasaki
7217365Sjkim/*
8272444Sjkim * Copyright (C) 2000 - 2014, 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
44193341Sjkim#include <contrib/dev/acpica/include/acpi.h>
45193341Sjkim#include <contrib/dev/acpica/include/accommon.h>
46193341Sjkim#include <contrib/dev/acpica/include/acdisasm.h>
47100966Siwasaki
48100966Siwasaki
49100966Siwasaki#ifdef ACPI_DISASSEMBLER
50100966Siwasaki
51102550Siwasaki#define _COMPONENT          ACPI_CA_DEBUGGER
52100966Siwasaki        ACPI_MODULE_NAME    ("dbresrcl")
53100966Siwasaki
54100966Siwasaki
55151937Sjkim/* Common names for address and memory descriptors */
56151937Sjkim
57151937Sjkimstatic char                 *AcpiDmAddressNames[] =
58151937Sjkim{
59167802Sjkim    "Granularity",
60167802Sjkim    "Range Minimum",
61167802Sjkim    "Range Maximum",
62167802Sjkim    "Translation Offset",
63167802Sjkim    "Length"
64151937Sjkim};
65151937Sjkim
66151937Sjkimstatic char                 *AcpiDmMemoryNames[] =
67151937Sjkim{
68167802Sjkim    "Range Minimum",
69167802Sjkim    "Range Maximum",
70167802Sjkim    "Alignment",
71167802Sjkim    "Length"
72151937Sjkim};
73151937Sjkim
74151937Sjkim
75151937Sjkim/* Local prototypes */
76151937Sjkim
77151937Sjkimstatic void
78151937SjkimAcpiDmSpaceFlags (
79151937Sjkim        UINT8               Flags);
80151937Sjkim
81151937Sjkimstatic void
82151937SjkimAcpiDmIoFlags (
83151937Sjkim        UINT8               Flags);
84151937Sjkim
85151937Sjkimstatic void
86151937SjkimAcpiDmIoFlags2 (
87151937Sjkim        UINT8               SpecificFlags);
88151937Sjkim
89151937Sjkimstatic void
90151937SjkimAcpiDmMemoryFlags (
91151937Sjkim    UINT8                   Flags,
92151937Sjkim    UINT8                   SpecificFlags);
93151937Sjkim
94151937Sjkimstatic void
95151937SjkimAcpiDmMemoryFlags2 (
96151937Sjkim    UINT8                   SpecificFlags);
97151937Sjkim
98151937Sjkimstatic void
99151937SjkimAcpiDmResourceSource (
100151937Sjkim    AML_RESOURCE            *Resource,
101151937Sjkim    ACPI_SIZE               MinimumLength,
102151937Sjkim    UINT32                  Length);
103151937Sjkim
104151937Sjkimstatic void
105151937SjkimAcpiDmAddressFields (
106151937Sjkim    void                    *Source,
107151937Sjkim    UINT8                   Type,
108151937Sjkim    UINT32                  Level);
109151937Sjkim
110151937Sjkimstatic void
111151937SjkimAcpiDmAddressPrefix (
112151937Sjkim    UINT8                   Type);
113151937Sjkim
114151937Sjkimstatic void
115151937SjkimAcpiDmAddressCommon (
116151937Sjkim    AML_RESOURCE            *Resource,
117151937Sjkim    UINT8                   Type,
118151937Sjkim    UINT32                  Level);
119151937Sjkim
120151937Sjkimstatic void
121151937SjkimAcpiDmAddressFlags (
122151937Sjkim    AML_RESOURCE            *Resource);
123151937Sjkim
124151937Sjkim
125100966Siwasaki/*******************************************************************************
126100966Siwasaki *
127151937Sjkim * FUNCTION:    AcpiDmMemoryFields
128151937Sjkim *
129151937Sjkim * PARAMETERS:  Source              - Pointer to the contiguous data fields
130151937Sjkim *              Type                - 16 or 32 (bit)
131151937Sjkim *              Level               - Current source code indentation level
132151937Sjkim *
133151937Sjkim * RETURN:      None
134151937Sjkim *
135151937Sjkim * DESCRIPTION: Decode fields common to Memory24 and Memory32 descriptors
136151937Sjkim *
137151937Sjkim ******************************************************************************/
138151937Sjkim
139151937Sjkimstatic void
140151937SjkimAcpiDmMemoryFields (
141151937Sjkim    void                    *Source,
142151937Sjkim    UINT8                   Type,
143151937Sjkim    UINT32                  Level)
144151937Sjkim{
145193267Sjkim    UINT32                  i;
146151937Sjkim
147151937Sjkim
148151937Sjkim    for (i = 0; i < 4; i++)
149151937Sjkim    {
150151937Sjkim        AcpiDmIndent (Level + 1);
151151937Sjkim
152151937Sjkim        switch (Type)
153151937Sjkim        {
154151937Sjkim        case 16:
155250838Sjkim
156167802Sjkim            AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
157167802Sjkim                AcpiDmMemoryNames[i]);
158151937Sjkim            break;
159151937Sjkim
160151937Sjkim        case 32:
161250838Sjkim
162167802Sjkim            AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
163167802Sjkim                AcpiDmMemoryNames[i]);
164151937Sjkim            break;
165151937Sjkim
166151937Sjkim        default:
167250838Sjkim
168151937Sjkim            return;
169151937Sjkim        }
170151937Sjkim    }
171151937Sjkim}
172151937Sjkim
173151937Sjkim
174151937Sjkim/*******************************************************************************
175151937Sjkim *
176167802Sjkim * FUNCTION:    AcpiDmAddressFields
177151937Sjkim *
178151937Sjkim * PARAMETERS:  Source              - Pointer to the contiguous data fields
179151937Sjkim *              Type                - 16, 32, or 64 (bit)
180151937Sjkim *              Level               - Current source code indentation level
181151937Sjkim *
182151937Sjkim * RETURN:      None
183151937Sjkim *
184151937Sjkim * DESCRIPTION: Decode fields common to address descriptors
185151937Sjkim *
186151937Sjkim ******************************************************************************/
187151937Sjkim
188151937Sjkimstatic void
189151937SjkimAcpiDmAddressFields (
190151937Sjkim    void                    *Source,
191151937Sjkim    UINT8                   Type,
192151937Sjkim    UINT32                  Level)
193151937Sjkim{
194193267Sjkim    UINT32                  i;
195151937Sjkim
196151937Sjkim
197151937Sjkim    AcpiOsPrintf ("\n");
198151937Sjkim
199151937Sjkim    for (i = 0; i < 5; i++)
200151937Sjkim    {
201151937Sjkim        AcpiDmIndent (Level + 1);
202151937Sjkim
203151937Sjkim        switch (Type)
204151937Sjkim        {
205151937Sjkim        case 16:
206250838Sjkim
207167802Sjkim            AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
208167802Sjkim                AcpiDmAddressNames[i]);
209151937Sjkim            break;
210151937Sjkim
211151937Sjkim        case 32:
212250838Sjkim
213167802Sjkim            AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
214167802Sjkim                AcpiDmAddressNames[i]);
215151937Sjkim            break;
216151937Sjkim
217151937Sjkim        case 64:
218250838Sjkim
219167802Sjkim            AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i],
220167802Sjkim                AcpiDmAddressNames[i]);
221151937Sjkim            break;
222151937Sjkim
223151937Sjkim        default:
224250838Sjkim
225151937Sjkim            return;
226151937Sjkim        }
227151937Sjkim    }
228151937Sjkim}
229151937Sjkim
230151937Sjkim
231151937Sjkim/*******************************************************************************
232151937Sjkim *
233151937Sjkim * FUNCTION:    AcpiDmAddressPrefix
234151937Sjkim *
235151937Sjkim * PARAMETERS:  Type                - Descriptor type
236151937Sjkim *
237151937Sjkim * RETURN:      None
238151937Sjkim *
239151937Sjkim * DESCRIPTION: Emit name prefix representing the address descriptor type
240151937Sjkim *
241151937Sjkim ******************************************************************************/
242151937Sjkim
243151937Sjkimstatic void
244151937SjkimAcpiDmAddressPrefix (
245151937Sjkim    UINT8                   Type)
246151937Sjkim{
247151937Sjkim
248151937Sjkim    switch (Type)
249151937Sjkim    {
250151937Sjkim    case ACPI_RESOURCE_TYPE_ADDRESS16:
251250838Sjkim
252151937Sjkim        AcpiOsPrintf ("Word");
253151937Sjkim        break;
254151937Sjkim
255151937Sjkim    case ACPI_RESOURCE_TYPE_ADDRESS32:
256250838Sjkim
257151937Sjkim        AcpiOsPrintf ("DWord");
258151937Sjkim        break;
259151937Sjkim
260151937Sjkim    case ACPI_RESOURCE_TYPE_ADDRESS64:
261250838Sjkim
262151937Sjkim        AcpiOsPrintf ("QWord");
263151937Sjkim        break;
264151937Sjkim
265151937Sjkim    case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
266250838Sjkim
267151937Sjkim        AcpiOsPrintf ("Extended");
268151937Sjkim        break;
269151937Sjkim
270151937Sjkim    default:
271250838Sjkim
272151937Sjkim        return;
273151937Sjkim    }
274151937Sjkim}
275151937Sjkim
276151937Sjkim
277151937Sjkim/*******************************************************************************
278151937Sjkim *
279151937Sjkim * FUNCTION:    AcpiDmAddressCommon
280151937Sjkim *
281151937Sjkim * PARAMETERS:  Resource            - Raw AML descriptor
282151937Sjkim *              Type                - Descriptor type
283151937Sjkim *              Level               - Current source code indentation level
284151937Sjkim *
285151937Sjkim * RETURN:      None
286151937Sjkim *
287151937Sjkim * DESCRIPTION: Emit common name and flag fields common to address descriptors
288151937Sjkim *
289151937Sjkim ******************************************************************************/
290151937Sjkim
291151937Sjkimstatic void
292151937SjkimAcpiDmAddressCommon (
293151937Sjkim    AML_RESOURCE            *Resource,
294151937Sjkim    UINT8                   Type,
295151937Sjkim    UINT32                  Level)
296151937Sjkim{
297151937Sjkim    UINT8                   ResourceType;
298151937Sjkim    UINT8                   SpecificFlags;
299151937Sjkim    UINT8                   Flags;
300151937Sjkim
301151937Sjkim
302151937Sjkim    ResourceType = Resource->Address.ResourceType;
303151937Sjkim    SpecificFlags = Resource->Address.SpecificFlags;
304151937Sjkim    Flags = Resource->Address.Flags;
305151937Sjkim
306151937Sjkim    AcpiDmIndent (Level);
307151937Sjkim
308151937Sjkim    /* Validate ResourceType */
309151937Sjkim
310151937Sjkim    if ((ResourceType > 2) && (ResourceType < 0xC0))
311151937Sjkim    {
312151937Sjkim        AcpiOsPrintf ("/**** Invalid Resource Type: 0x%X ****/", ResourceType);
313151937Sjkim        return;
314151937Sjkim    }
315151937Sjkim
316151937Sjkim    /* Prefix is either Word, DWord, QWord, or Extended */
317151937Sjkim
318151937Sjkim    AcpiDmAddressPrefix (Type);
319151937Sjkim
320151937Sjkim    /* Resource Types above 0xC0 are vendor-defined */
321151937Sjkim
322151937Sjkim    if (ResourceType > 2)
323151937Sjkim    {
324151937Sjkim        AcpiOsPrintf ("Space (0x%2.2X, ", ResourceType);
325151937Sjkim        AcpiDmSpaceFlags (Flags);
326151937Sjkim        AcpiOsPrintf (" 0x%2.2X,", SpecificFlags);
327151937Sjkim        return;
328151937Sjkim    }
329151937Sjkim
330151937Sjkim    /* This is either a Memory, IO, or BusNumber descriptor (0,1,2) */
331151937Sjkim
332243347Sjkim    AcpiOsPrintf ("%s (", AcpiGbl_WordDecode [ACPI_GET_2BIT_FLAG (ResourceType)]);
333151937Sjkim
334151937Sjkim    /* Decode the general and type-specific flags */
335151937Sjkim
336151937Sjkim    if (ResourceType == ACPI_MEMORY_RANGE)
337151937Sjkim    {
338151937Sjkim        AcpiDmMemoryFlags (Flags, SpecificFlags);
339151937Sjkim    }
340151937Sjkim    else /* IO range or BusNumberRange */
341151937Sjkim    {
342151937Sjkim        AcpiDmIoFlags (Flags);
343151937Sjkim        if (ResourceType == ACPI_IO_RANGE)
344151937Sjkim        {
345243347Sjkim            AcpiOsPrintf (" %s,", AcpiGbl_RngDecode [ACPI_GET_2BIT_FLAG (SpecificFlags)]);
346151937Sjkim        }
347151937Sjkim    }
348151937Sjkim}
349151937Sjkim
350151937Sjkim
351151937Sjkim/*******************************************************************************
352151937Sjkim *
353151937Sjkim * FUNCTION:    AcpiDmAddressFlags
354151937Sjkim *
355151937Sjkim * PARAMETERS:  Resource        - Raw AML descriptor
356151937Sjkim *
357151937Sjkim * RETURN:      None
358151937Sjkim *
359151937Sjkim * DESCRIPTION: Emit flags common to address descriptors
360151937Sjkim *
361151937Sjkim ******************************************************************************/
362151937Sjkim
363151937Sjkimstatic void
364151937SjkimAcpiDmAddressFlags (
365151937Sjkim    AML_RESOURCE            *Resource)
366151937Sjkim{
367151937Sjkim
368151937Sjkim    if (Resource->Address.ResourceType == ACPI_IO_RANGE)
369151937Sjkim    {
370151937Sjkim        AcpiDmIoFlags2 (Resource->Address.SpecificFlags);
371151937Sjkim    }
372151937Sjkim    else if (Resource->Address.ResourceType == ACPI_MEMORY_RANGE)
373151937Sjkim    {
374151937Sjkim        AcpiDmMemoryFlags2 (Resource->Address.SpecificFlags);
375151937Sjkim    }
376151937Sjkim}
377151937Sjkim
378151937Sjkim
379151937Sjkim/*******************************************************************************
380151937Sjkim *
381151937Sjkim * FUNCTION:    AcpiDmSpaceFlags
382151937Sjkim *
383151937Sjkim * PARAMETERS:  Flags               - Flag byte to be decoded
384151937Sjkim *
385151937Sjkim * RETURN:      None
386151937Sjkim *
387151937Sjkim * DESCRIPTION: Decode the flags specific to Space Address space descriptors
388151937Sjkim *
389151937Sjkim ******************************************************************************/
390151937Sjkim
391151937Sjkimstatic void
392151937SjkimAcpiDmSpaceFlags (
393151937Sjkim    UINT8                   Flags)
394151937Sjkim{
395151937Sjkim
396151937Sjkim    AcpiOsPrintf ("%s, %s, %s, %s,",
397243347Sjkim        AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)],
398243347Sjkim        AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)],
399243347Sjkim        AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)],
400243347Sjkim        AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)]);
401151937Sjkim}
402151937Sjkim
403151937Sjkim
404151937Sjkim/*******************************************************************************
405151937Sjkim *
406100966Siwasaki * FUNCTION:    AcpiDmIoFlags
407100966Siwasaki *
408100966Siwasaki * PARAMETERS:  Flags               - Flag byte to be decoded
409100966Siwasaki *
410100966Siwasaki * RETURN:      None
411100966Siwasaki *
412100966Siwasaki * DESCRIPTION: Decode the flags specific to IO Address space descriptors
413100966Siwasaki *
414100966Siwasaki ******************************************************************************/
415100966Siwasaki
416151937Sjkimstatic void
417100966SiwasakiAcpiDmIoFlags (
418100966Siwasaki        UINT8               Flags)
419100966Siwasaki{
420100966Siwasaki    AcpiOsPrintf ("%s, %s, %s, %s,",
421243347Sjkim        AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)],
422243347Sjkim        AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)],
423243347Sjkim        AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)],
424243347Sjkim        AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)]);
425100966Siwasaki}
426100966Siwasaki
427100966Siwasaki
428100966Siwasaki/*******************************************************************************
429100966Siwasaki *
430151937Sjkim * FUNCTION:    AcpiDmIoFlags2
431151937Sjkim *
432151937Sjkim * PARAMETERS:  SpecificFlags       - "Specific" flag byte to be decoded
433151937Sjkim *
434151937Sjkim * RETURN:      None
435151937Sjkim *
436151937Sjkim * DESCRIPTION: Decode the flags specific to IO Address space descriptors
437151937Sjkim *
438151937Sjkim ******************************************************************************/
439151937Sjkim
440151937Sjkimstatic void
441151937SjkimAcpiDmIoFlags2 (
442151937Sjkim        UINT8               SpecificFlags)
443151937Sjkim{
444151937Sjkim
445151937Sjkim    AcpiOsPrintf (", %s",
446243347Sjkim        AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 4)]);
447151937Sjkim
448151937Sjkim    /* TRS is only used if TTP is TypeTranslation */
449151937Sjkim
450151937Sjkim    if (SpecificFlags & 0x10)
451151937Sjkim    {
452151937Sjkim        AcpiOsPrintf (", %s",
453243347Sjkim            AcpiGbl_TrsDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]);
454151937Sjkim    }
455151937Sjkim}
456151937Sjkim
457151937Sjkim
458151937Sjkim/*******************************************************************************
459151937Sjkim *
460100966Siwasaki * FUNCTION:    AcpiDmMemoryFlags
461100966Siwasaki *
462100966Siwasaki * PARAMETERS:  Flags               - Flag byte to be decoded
463100966Siwasaki *              SpecificFlags       - "Specific" flag byte to be decoded
464100966Siwasaki *
465100966Siwasaki * RETURN:      None
466100966Siwasaki *
467100966Siwasaki * DESCRIPTION: Decode flags specific to Memory Address Space descriptors
468100966Siwasaki *
469100966Siwasaki ******************************************************************************/
470100966Siwasaki
471151937Sjkimstatic void
472100966SiwasakiAcpiDmMemoryFlags (
473100966Siwasaki    UINT8                   Flags,
474100966Siwasaki    UINT8                   SpecificFlags)
475100966Siwasaki{
476151937Sjkim
477100966Siwasaki    AcpiOsPrintf ("%s, %s, %s, %s, %s, %s,",
478243347Sjkim        AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)],
479243347Sjkim        AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)],
480243347Sjkim        AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)],
481243347Sjkim        AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)],
482243347Sjkim        AcpiGbl_MemDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 1)],
483243347Sjkim        AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (SpecificFlags)]);
484100966Siwasaki}
485100966Siwasaki
486100966Siwasaki
487100966Siwasaki/*******************************************************************************
488100966Siwasaki *
489151937Sjkim * FUNCTION:    AcpiDmMemoryFlags2
490151937Sjkim *
491151937Sjkim * PARAMETERS:  SpecificFlags       - "Specific" flag byte to be decoded
492151937Sjkim *
493151937Sjkim * RETURN:      None
494151937Sjkim *
495151937Sjkim * DESCRIPTION: Decode flags specific to Memory Address Space descriptors
496151937Sjkim *
497151937Sjkim ******************************************************************************/
498151937Sjkim
499151937Sjkimstatic void
500151937SjkimAcpiDmMemoryFlags2 (
501151937Sjkim    UINT8                   SpecificFlags)
502151937Sjkim{
503151937Sjkim
504151937Sjkim    AcpiOsPrintf (", %s, %s",
505243347Sjkim        AcpiGbl_MtpDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 3)],
506243347Sjkim        AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]);
507151937Sjkim}
508151937Sjkim
509151937Sjkim
510151937Sjkim/*******************************************************************************
511151937Sjkim *
512151937Sjkim * FUNCTION:    AcpiDmResourceSource
513151937Sjkim *
514151937Sjkim * PARAMETERS:  Resource        - Raw AML descriptor
515151937Sjkim *              MinimumLength   - descriptor length without optional fields
516151937Sjkim *              ResourceLength
517151937Sjkim *
518151937Sjkim * RETURN:      None
519151937Sjkim *
520151937Sjkim * DESCRIPTION: Dump optional ResourceSource fields of an address descriptor
521151937Sjkim *
522151937Sjkim ******************************************************************************/
523151937Sjkim
524151937Sjkimstatic void
525151937SjkimAcpiDmResourceSource (
526151937Sjkim    AML_RESOURCE            *Resource,
527151937Sjkim    ACPI_SIZE               MinimumTotalLength,
528151937Sjkim    UINT32                  ResourceLength)
529151937Sjkim{
530151937Sjkim    UINT8                   *AmlResourceSource;
531151937Sjkim    UINT32                  TotalLength;
532151937Sjkim
533151937Sjkim
534151937Sjkim    TotalLength = ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER);
535151937Sjkim
536151937Sjkim    /* Check if the optional ResourceSource fields are present */
537151937Sjkim
538151937Sjkim    if (TotalLength <= MinimumTotalLength)
539151937Sjkim    {
540151937Sjkim        /* The two optional fields are not used */
541151937Sjkim
542167802Sjkim        AcpiOsPrintf (",, ");
543151937Sjkim        return;
544151937Sjkim    }
545151937Sjkim
546151937Sjkim    /* Get a pointer to the ResourceSource */
547151937Sjkim
548167802Sjkim    AmlResourceSource = ACPI_ADD_PTR (UINT8, Resource, MinimumTotalLength);
549151937Sjkim
550151937Sjkim    /*
551151937Sjkim     * Always emit the ResourceSourceIndex (Byte)
552151937Sjkim     *
553151937Sjkim     * NOTE: Some ASL compilers always create a 0 byte (in the AML) for the
554151937Sjkim     * Index even if the String does not exist. Although this is in violation
555151937Sjkim     * of the ACPI specification, it is very important to emit ASL code that
556151937Sjkim     * can be compiled back to the identical AML. There may be fields and/or
557151937Sjkim     * indexes into the resource template buffer that are compiled to absolute
558151937Sjkim     * offsets, and these will be broken if the AML length is changed.
559151937Sjkim     */
560151937Sjkim    AcpiOsPrintf ("0x%2.2X,", (UINT32) AmlResourceSource[0]);
561151937Sjkim
562151937Sjkim    /* Make sure that the ResourceSource string exists before dumping it */
563151937Sjkim
564151937Sjkim    if (TotalLength > (MinimumTotalLength + 1))
565151937Sjkim    {
566151937Sjkim        AcpiOsPrintf (" ");
567252279Sjkim        AcpiUtPrintString ((char *) &AmlResourceSource[1], ACPI_UINT16_MAX);
568151937Sjkim    }
569151937Sjkim
570167802Sjkim    AcpiOsPrintf (", ");
571151937Sjkim}
572151937Sjkim
573151937Sjkim
574151937Sjkim/*******************************************************************************
575151937Sjkim *
576100966Siwasaki * FUNCTION:    AcpiDmWordDescriptor
577100966Siwasaki *
578272444Sjkim * PARAMETERS:  Info                - Extra resource info
579272444Sjkim *              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 (
591272444Sjkim    ACPI_OP_WALK_INFO       *Info,
592151937Sjkim    AML_RESOURCE            *Resource,
593100966Siwasaki    UINT32                  Length,
594100966Siwasaki    UINT32                  Level)
595100966Siwasaki{
596100966Siwasaki
597151937Sjkim    /* Dump resource name and flags */
598100966Siwasaki
599151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS16, Level);
600100966Siwasaki
601151937Sjkim    /* Dump the 5 contiguous WORD values */
602100966Siwasaki
603151937Sjkim    AcpiDmAddressFields (&Resource->Address16.Granularity, 16, Level);
604100966Siwasaki
605151937Sjkim    /* The ResourceSource fields are optional */
606151937Sjkim
607100966Siwasaki    AcpiDmIndent (Level + 1);
608151937Sjkim    AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS16), Length);
609100966Siwasaki
610167802Sjkim    /* Insert a descriptor name */
611167802Sjkim
612167802Sjkim    AcpiDmDescriptorName ();
613167802Sjkim
614151937Sjkim    /* Type-specific flags */
615100966Siwasaki
616151937Sjkim    AcpiDmAddressFlags (Resource);
617100966Siwasaki    AcpiOsPrintf (")\n");
618100966Siwasaki}
619100966Siwasaki
620100966Siwasaki
621100966Siwasaki/*******************************************************************************
622100966Siwasaki *
623100966Siwasaki * FUNCTION:    AcpiDmDwordDescriptor
624100966Siwasaki *
625272444Sjkim * PARAMETERS:  Info                - Extra resource info
626272444Sjkim *              Resource            - Pointer to the resource descriptor
627100966Siwasaki *              Length              - Length of the descriptor in bytes
628100966Siwasaki *              Level               - Current source code indentation level
629100966Siwasaki *
630100966Siwasaki * RETURN:      None
631100966Siwasaki *
632100966Siwasaki * DESCRIPTION: Decode a DWord Address Space descriptor
633100966Siwasaki *
634100966Siwasaki ******************************************************************************/
635100966Siwasaki
636100966Siwasakivoid
637100966SiwasakiAcpiDmDwordDescriptor (
638272444Sjkim    ACPI_OP_WALK_INFO       *Info,
639151937Sjkim    AML_RESOURCE            *Resource,
640100966Siwasaki    UINT32                  Length,
641100966Siwasaki    UINT32                  Level)
642100966Siwasaki{
643100966Siwasaki
644151937Sjkim    /* Dump resource name and flags */
645100966Siwasaki
646151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS32, Level);
647100966Siwasaki
648151937Sjkim    /* Dump the 5 contiguous DWORD values */
649100966Siwasaki
650151937Sjkim    AcpiDmAddressFields (&Resource->Address32.Granularity, 32, Level);
651151937Sjkim
652151937Sjkim    /* The ResourceSource fields are optional */
653151937Sjkim
654100966Siwasaki    AcpiDmIndent (Level + 1);
655151937Sjkim    AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS32), Length);
656100966Siwasaki
657167802Sjkim    /* Insert a descriptor name */
658167802Sjkim
659167802Sjkim    AcpiDmDescriptorName ();
660167802Sjkim
661151937Sjkim    /* Type-specific flags */
662100966Siwasaki
663151937Sjkim    AcpiDmAddressFlags (Resource);
664100966Siwasaki    AcpiOsPrintf (")\n");
665100966Siwasaki}
666100966Siwasaki
667100966Siwasaki
668100966Siwasaki/*******************************************************************************
669100966Siwasaki *
670100966Siwasaki * FUNCTION:    AcpiDmQwordDescriptor
671100966Siwasaki *
672272444Sjkim * PARAMETERS:  Info                - Extra resource info
673272444Sjkim *              Resource            - Pointer to the resource descriptor
674100966Siwasaki *              Length              - Length of the descriptor in bytes
675100966Siwasaki *              Level               - Current source code indentation level
676100966Siwasaki *
677100966Siwasaki * RETURN:      None
678100966Siwasaki *
679100966Siwasaki * DESCRIPTION: Decode a QWord Address Space descriptor
680100966Siwasaki *
681100966Siwasaki ******************************************************************************/
682100966Siwasaki
683100966Siwasakivoid
684100966SiwasakiAcpiDmQwordDescriptor (
685272444Sjkim    ACPI_OP_WALK_INFO       *Info,
686151937Sjkim    AML_RESOURCE            *Resource,
687100966Siwasaki    UINT32                  Length,
688100966Siwasaki    UINT32                  Level)
689100966Siwasaki{
690100966Siwasaki
691151937Sjkim    /* Dump resource name and flags */
692100966Siwasaki
693151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS64, Level);
694100966Siwasaki
695151937Sjkim    /* Dump the 5 contiguous QWORD values */
696100966Siwasaki
697151937Sjkim    AcpiDmAddressFields (&Resource->Address64.Granularity, 64, Level);
698100966Siwasaki
699151937Sjkim    /* The ResourceSource fields are optional */
700100966Siwasaki
701100966Siwasaki    AcpiDmIndent (Level + 1);
702151937Sjkim    AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS64), Length);
703100966Siwasaki
704167802Sjkim    /* Insert a descriptor name */
705167802Sjkim
706167802Sjkim    AcpiDmDescriptorName ();
707167802Sjkim
708151937Sjkim    /* Type-specific flags */
709100966Siwasaki
710151937Sjkim    AcpiDmAddressFlags (Resource);
711151937Sjkim    AcpiOsPrintf (")\n");
712151937Sjkim}
713151937Sjkim
714151937Sjkim
715151937Sjkim/*******************************************************************************
716151937Sjkim *
717151937Sjkim * FUNCTION:    AcpiDmExtendedDescriptor
718151937Sjkim *
719272444Sjkim * PARAMETERS:  Info                - Extra resource info
720272444Sjkim *              Resource            - Pointer to the resource descriptor
721151937Sjkim *              Length              - Length of the descriptor in bytes
722151937Sjkim *              Level               - Current source code indentation level
723151937Sjkim *
724151937Sjkim * RETURN:      None
725151937Sjkim *
726151937Sjkim * DESCRIPTION: Decode a Extended Address Space descriptor
727151937Sjkim *
728151937Sjkim ******************************************************************************/
729151937Sjkim
730151937Sjkimvoid
731151937SjkimAcpiDmExtendedDescriptor (
732272444Sjkim    ACPI_OP_WALK_INFO       *Info,
733151937Sjkim    AML_RESOURCE            *Resource,
734151937Sjkim    UINT32                  Length,
735151937Sjkim    UINT32                  Level)
736151937Sjkim{
737151937Sjkim
738151937Sjkim    /* Dump resource name and flags */
739151937Sjkim
740151937Sjkim    AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, Level);
741151937Sjkim
742151937Sjkim    /* Dump the 5 contiguous QWORD values */
743151937Sjkim
744151937Sjkim    AcpiDmAddressFields (&Resource->ExtAddress64.Granularity, 64, Level);
745151937Sjkim
746151937Sjkim    /* Extra field for this descriptor only */
747151937Sjkim
748100966Siwasaki    AcpiDmIndent (Level + 1);
749151937Sjkim    AcpiDmDumpInteger64 (Resource->ExtAddress64.TypeSpecific,
750151937Sjkim        "Type-Specific Attributes");
751100966Siwasaki
752167802Sjkim    /* Insert a descriptor name */
753167802Sjkim
754167802Sjkim    AcpiDmIndent (Level + 1);
755167802Sjkim    AcpiDmDescriptorName ();
756167802Sjkim
757151937Sjkim    /* Type-specific flags */
758100966Siwasaki
759151937Sjkim    AcpiDmAddressFlags (Resource);
760100966Siwasaki    AcpiOsPrintf (")\n");
761100966Siwasaki}
762100966Siwasaki
763100966Siwasaki
764100966Siwasaki/*******************************************************************************
765100966Siwasaki *
766100966Siwasaki * FUNCTION:    AcpiDmMemory24Descriptor
767100966Siwasaki *
768272444Sjkim * PARAMETERS:  Info                - Extra resource info
769272444Sjkim *              Resource            - Pointer to the resource descriptor
770100966Siwasaki *              Length              - Length of the descriptor in bytes
771100966Siwasaki *              Level               - Current source code indentation level
772100966Siwasaki *
773100966Siwasaki * RETURN:      None
774100966Siwasaki *
775100966Siwasaki * DESCRIPTION: Decode a Memory24 descriptor
776100966Siwasaki *
777100966Siwasaki ******************************************************************************/
778100966Siwasaki
779100966Siwasakivoid
780100966SiwasakiAcpiDmMemory24Descriptor (
781272444Sjkim    ACPI_OP_WALK_INFO       *Info,
782151937Sjkim    AML_RESOURCE            *Resource,
783100966Siwasaki    UINT32                  Length,
784100966Siwasaki    UINT32                  Level)
785100966Siwasaki{
786100966Siwasaki
787151937Sjkim    /* Dump name and read/write flag */
788151937Sjkim
789100966Siwasaki    AcpiDmIndent (Level);
790151937Sjkim    AcpiOsPrintf ("Memory24 (%s,\n",
791243347Sjkim        AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory24.Flags)]);
792151937Sjkim
793151937Sjkim    /* Dump the 4 contiguous WORD values */
794151937Sjkim
795151937Sjkim    AcpiDmMemoryFields (&Resource->Memory24.Minimum, 16, Level);
796151937Sjkim
797167802Sjkim    /* Insert a descriptor name */
798167802Sjkim
799151937Sjkim    AcpiDmIndent (Level + 1);
800167802Sjkim    AcpiDmDescriptorName ();
801151937Sjkim    AcpiOsPrintf (")\n");
802100966Siwasaki}
803100966Siwasaki
804100966Siwasaki
805100966Siwasaki/*******************************************************************************
806100966Siwasaki *
807100966Siwasaki * FUNCTION:    AcpiDmMemory32Descriptor
808100966Siwasaki *
809272444Sjkim * PARAMETERS:  Info                - Extra resource info
810272444Sjkim *              Resource            - Pointer to the resource descriptor
811100966Siwasaki *              Length              - Length of the descriptor in bytes
812100966Siwasaki *              Level               - Current source code indentation level
813100966Siwasaki *
814100966Siwasaki * RETURN:      None
815100966Siwasaki *
816100966Siwasaki * DESCRIPTION: Decode a Memory32 descriptor
817100966Siwasaki *
818100966Siwasaki ******************************************************************************/
819100966Siwasaki
820100966Siwasakivoid
821100966SiwasakiAcpiDmMemory32Descriptor (
822272444Sjkim    ACPI_OP_WALK_INFO       *Info,
823151937Sjkim    AML_RESOURCE            *Resource,
824100966Siwasaki    UINT32                  Length,
825100966Siwasaki    UINT32                  Level)
826100966Siwasaki{
827100966Siwasaki
828151937Sjkim    /* Dump name and read/write flag */
829151937Sjkim
830100966Siwasaki    AcpiDmIndent (Level);
831151937Sjkim    AcpiOsPrintf ("Memory32 (%s,\n",
832243347Sjkim        AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory32.Flags)]);
833151937Sjkim
834151937Sjkim    /* Dump the 4 contiguous DWORD values */
835151937Sjkim
836151937Sjkim    AcpiDmMemoryFields (&Resource->Memory32.Minimum, 32, Level);
837151937Sjkim
838167802Sjkim    /* Insert a descriptor name */
839167802Sjkim
840151937Sjkim    AcpiDmIndent (Level + 1);
841167802Sjkim    AcpiDmDescriptorName ();
842151937Sjkim    AcpiOsPrintf (")\n");
843100966Siwasaki}
844100966Siwasaki
845100966Siwasaki
846100966Siwasaki/*******************************************************************************
847100966Siwasaki *
848151937Sjkim * FUNCTION:    AcpiDmFixedMemory32Descriptor
849100966Siwasaki *
850272444Sjkim * PARAMETERS:  Info                - Extra resource info
851272444Sjkim *              Resource            - Pointer to the resource descriptor
852100966Siwasaki *              Length              - Length of the descriptor in bytes
853100966Siwasaki *              Level               - Current source code indentation level
854100966Siwasaki *
855100966Siwasaki * RETURN:      None
856100966Siwasaki *
857100966Siwasaki * DESCRIPTION: Decode a Fixed Memory32 descriptor
858100966Siwasaki *
859100966Siwasaki ******************************************************************************/
860100966Siwasaki
861100966Siwasakivoid
862151937SjkimAcpiDmFixedMemory32Descriptor (
863272444Sjkim    ACPI_OP_WALK_INFO       *Info,
864151937Sjkim    AML_RESOURCE            *Resource,
865100966Siwasaki    UINT32                  Length,
866100966Siwasaki    UINT32                  Level)
867100966Siwasaki{
868100966Siwasaki
869151937Sjkim    /* Dump name and read/write flag */
870151937Sjkim
871100966Siwasaki    AcpiDmIndent (Level);
872151937Sjkim    AcpiOsPrintf ("Memory32Fixed (%s,\n",
873243347Sjkim        AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]);
874151937Sjkim
875151937Sjkim    AcpiDmIndent (Level + 1);
876151937Sjkim    AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, "Address Base");
877151937Sjkim
878151937Sjkim    AcpiDmIndent (Level + 1);
879151937Sjkim    AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, "Address Length");
880151937Sjkim
881167802Sjkim    /* Insert a descriptor name */
882167802Sjkim
883151937Sjkim    AcpiDmIndent (Level + 1);
884167802Sjkim    AcpiDmDescriptorName ();
885151937Sjkim    AcpiOsPrintf (")\n");
886100966Siwasaki}
887100966Siwasaki
888100966Siwasaki
889100966Siwasaki/*******************************************************************************
890100966Siwasaki *
891100966Siwasaki * FUNCTION:    AcpiDmGenericRegisterDescriptor
892100966Siwasaki *
893272444Sjkim * PARAMETERS:  Info                - Extra resource info
894272444Sjkim *              Resource            - Pointer to the resource descriptor
895100966Siwasaki *              Length              - Length of the descriptor in bytes
896100966Siwasaki *              Level               - Current source code indentation level
897100966Siwasaki *
898100966Siwasaki * RETURN:      None
899100966Siwasaki *
900100966Siwasaki * DESCRIPTION: Decode a Generic Register descriptor
901100966Siwasaki *
902100966Siwasaki ******************************************************************************/
903100966Siwasaki
904100966Siwasakivoid
905100966SiwasakiAcpiDmGenericRegisterDescriptor (
906272444Sjkim    ACPI_OP_WALK_INFO       *Info,
907151937Sjkim    AML_RESOURCE            *Resource,
908100966Siwasaki    UINT32                  Length,
909100966Siwasaki    UINT32                  Level)
910100966Siwasaki{
911100966Siwasaki
912100966Siwasaki    AcpiDmIndent (Level);
913100966Siwasaki    AcpiOsPrintf ("Register (");
914151937Sjkim    AcpiDmAddressSpace (Resource->GenericReg.AddressSpaceId);
915151937Sjkim    AcpiOsPrintf ("\n");
916102550Siwasaki
917151937Sjkim    AcpiDmIndent (Level + 1);
918167802Sjkim    AcpiDmDumpInteger8 (Resource->GenericReg.BitWidth, "Bit Width");
919102550Siwasaki
920151937Sjkim    AcpiDmIndent (Level + 1);
921167802Sjkim    AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset");
922151937Sjkim
923151937Sjkim    AcpiDmIndent (Level + 1);
924167802Sjkim    AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address");
925151937Sjkim
926151937Sjkim    /* Optional field for ACPI 3.0 */
927151937Sjkim
928167802Sjkim    AcpiDmIndent (Level + 1);
929151937Sjkim    if (Resource->GenericReg.AccessSize)
930151937Sjkim    {
931167802Sjkim        AcpiOsPrintf ("0x%2.2X,               // %s\n",
932167802Sjkim            Resource->GenericReg.AccessSize, "Access Size");
933151937Sjkim        AcpiDmIndent (Level + 1);
934151937Sjkim    }
935167802Sjkim    else
936167802Sjkim    {
937167802Sjkim        AcpiOsPrintf (",");
938167802Sjkim    }
939151937Sjkim
940167802Sjkim    /* DescriptorName was added for ACPI 3.0+ */
941167802Sjkim
942167802Sjkim    AcpiDmDescriptorName ();
943151937Sjkim    AcpiOsPrintf (")\n");
944100966Siwasaki}
945100966Siwasaki
946100966Siwasaki
947100966Siwasaki/*******************************************************************************
948100966Siwasaki *
949100966Siwasaki * FUNCTION:    AcpiDmInterruptDescriptor
950100966Siwasaki *
951272444Sjkim * PARAMETERS:  Info                - Extra resource info
952272444Sjkim *              Resource            - Pointer to the resource descriptor
953100966Siwasaki *              Length              - Length of the descriptor in bytes
954100966Siwasaki *              Level               - Current source code indentation level
955100966Siwasaki *
956100966Siwasaki * RETURN:      None
957100966Siwasaki *
958100966Siwasaki * DESCRIPTION: Decode a extended Interrupt descriptor
959100966Siwasaki *
960100966Siwasaki ******************************************************************************/
961100966Siwasaki
962100966Siwasakivoid
963100966SiwasakiAcpiDmInterruptDescriptor (
964272444Sjkim    ACPI_OP_WALK_INFO       *Info,
965151937Sjkim    AML_RESOURCE            *Resource,
966100966Siwasaki    UINT32                  Length,
967100966Siwasaki    UINT32                  Level)
968100966Siwasaki{
969100966Siwasaki    UINT32                  i;
970100966Siwasaki
971100966Siwasaki
972100966Siwasaki    AcpiDmIndent (Level);
973151937Sjkim    AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ",
974243347Sjkim        AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->ExtendedIrq.Flags)],
975243347Sjkim        AcpiGbl_HeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 1)],
976243347Sjkim        AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 2)],
977243347Sjkim        AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->ExtendedIrq.Flags, 3)]);
978100966Siwasaki
979151937Sjkim    /*
980151937Sjkim     * The ResourceSource fields are optional and appear after the interrupt
981151937Sjkim     * list. Must compute length based on length of the list. First xrupt
982151937Sjkim     * is included in the struct (reason for -1 below)
983151937Sjkim     */
984151937Sjkim    AcpiDmResourceSource (Resource,
985151937Sjkim        sizeof (AML_RESOURCE_EXTENDED_IRQ) +
986193267Sjkim            ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32),
987151937Sjkim        Resource->ExtendedIrq.ResourceLength);
988100966Siwasaki
989167802Sjkim    /* Insert a descriptor name */
990167802Sjkim
991167802Sjkim    AcpiDmDescriptorName ();
992167802Sjkim    AcpiOsPrintf (")\n");
993167802Sjkim
994151937Sjkim    /* Dump the interrupt list */
995114237Snjl
996100966Siwasaki    AcpiDmIndent (Level);
997100966Siwasaki    AcpiOsPrintf ("{\n");
998151937Sjkim    for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++)
999100966Siwasaki    {
1000100966Siwasaki        AcpiDmIndent (Level + 1);
1001151937Sjkim        AcpiOsPrintf ("0x%8.8X,\n",
1002151937Sjkim            (UINT32) Resource->ExtendedIrq.Interrupts[i]);
1003100966Siwasaki    }
1004100966Siwasaki
1005100966Siwasaki    AcpiDmIndent (Level);
1006100966Siwasaki    AcpiOsPrintf ("}\n");
1007100966Siwasaki}
1008100966Siwasaki
1009100966Siwasaki
1010100966Siwasaki/*******************************************************************************
1011100966Siwasaki *
1012151937Sjkim * FUNCTION:    AcpiDmVendorCommon
1013100966Siwasaki *
1014151937Sjkim * PARAMETERS:  Name                - Descriptor name suffix
1015151937Sjkim *              ByteData            - Pointer to the vendor byte data
1016151937Sjkim *              Length              - Length of the byte data
1017100966Siwasaki *              Level               - Current source code indentation level
1018100966Siwasaki *
1019100966Siwasaki * RETURN:      None
1020100966Siwasaki *
1021151937Sjkim * DESCRIPTION: Decode a Vendor descriptor, both Large and Small
1022100966Siwasaki *
1023100966Siwasaki ******************************************************************************/
1024100966Siwasaki
1025100966Siwasakivoid
1026151937SjkimAcpiDmVendorCommon (
1027151937Sjkim    char                    *Name,
1028151937Sjkim    UINT8                   *ByteData,
1029100966Siwasaki    UINT32                  Length,
1030100966Siwasaki    UINT32                  Level)
1031100966Siwasaki{
1032100966Siwasaki
1033167802Sjkim    /* Dump macro name */
1034151937Sjkim
1035100966Siwasaki    AcpiDmIndent (Level);
1036167802Sjkim    AcpiOsPrintf ("Vendor%s (", Name);
1037151937Sjkim
1038167802Sjkim    /* Insert a descriptor name */
1039167802Sjkim
1040167802Sjkim    AcpiDmDescriptorName ();
1041167802Sjkim    AcpiOsPrintf (")      // Length = 0x%.2X\n", Length);
1042167802Sjkim
1043151937Sjkim    /* Dump the vendor bytes */
1044151937Sjkim
1045100966Siwasaki    AcpiDmIndent (Level);
1046100966Siwasaki    AcpiOsPrintf ("{\n");
1047100966Siwasaki
1048151937Sjkim    AcpiDmDisasmByteList (Level + 1, ByteData, Length);
1049151937Sjkim
1050100966Siwasaki    AcpiDmIndent (Level);
1051100966Siwasaki    AcpiOsPrintf ("}\n");
1052100966Siwasaki}
1053100966Siwasaki
1054100966Siwasaki
1055151937Sjkim/*******************************************************************************
1056151937Sjkim *
1057151937Sjkim * FUNCTION:    AcpiDmVendorLargeDescriptor
1058151937Sjkim *
1059272444Sjkim * PARAMETERS:  Info                - Extra resource info
1060272444Sjkim *              Resource            - Pointer to the resource descriptor
1061151937Sjkim *              Length              - Length of the descriptor in bytes
1062151937Sjkim *              Level               - Current source code indentation level
1063151937Sjkim *
1064151937Sjkim * RETURN:      None
1065151937Sjkim *
1066151937Sjkim * DESCRIPTION: Decode a Vendor Large descriptor
1067151937Sjkim *
1068151937Sjkim ******************************************************************************/
1069151937Sjkim
1070151937Sjkimvoid
1071151937SjkimAcpiDmVendorLargeDescriptor (
1072272444Sjkim    ACPI_OP_WALK_INFO       *Info,
1073151937Sjkim    AML_RESOURCE            *Resource,
1074151937Sjkim    UINT32                  Length,
1075151937Sjkim    UINT32                  Level)
1076151937Sjkim{
1077151937Sjkim
1078167802Sjkim    AcpiDmVendorCommon ("Long ",
1079167802Sjkim        ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_LARGE_HEADER)),
1080151937Sjkim        Length, Level);
1081151937Sjkim}
1082151937Sjkim
1083100966Siwasaki#endif
1084