dmresrcl.c revision 114237
1114902Sscottl/*******************************************************************************
2114902Sscottl *
3114902Sscottl * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly
4114902Sscottl *              $Revision: 10 $
5114902Sscottl *
6114902Sscottl ******************************************************************************/
7114902Sscottl
8114902Sscottl/******************************************************************************
9114902Sscottl *
10114902Sscottl * 1. Copyright Notice
11114902Sscottl *
12114902Sscottl * Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
13114902Sscottl * All rights reserved.
14114902Sscottl *
15114902Sscottl * 2. License
16114902Sscottl *
17114902Sscottl * 2.1. This is your license from Intel Corp. under its intellectual property
18114902Sscottl * rights.  You may have additional license terms from the party that provided
19114902Sscottl * you this software, covering your right to use that party's intellectual
20114902Sscottl * property rights.
21114902Sscottl *
22114902Sscottl * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
23114902Sscottl * copy of the source code appearing in this file ("Covered Code") an
24114902Sscottl * irrevocable, perpetual, worldwide license under Intel's copyrights in the
25114902Sscottl * base code distributed originally by Intel ("Original Intel Code") to copy,
26114902Sscottl * make derivatives, distribute, use and display any portion of the Covered
27114902Sscottl * Code in any form, with the right to sublicense such rights; and
28114902Sscottl *
29114902Sscottl * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
30114902Sscottl * license (with the right to sublicense), under only those claims of Intel
31114902Sscottl * patents that are infringed by the Original Intel Code, to make, use, sell,
32114902Sscottl * offer to sell, and import the Covered Code and derivative works thereof
33114902Sscottl * solely to the minimum extent necessary to exercise the above copyright
34114902Sscottl * license, and in no event shall the patent license extend to any additions
35129879Sphk * to or modifications of the Original Intel Code.  No other license or right
36114902Sscottl * is granted directly or by implication, estoppel or otherwise;
37114902Sscottl *
38114902Sscottl * The above copyright and patent license is granted only if the following
39114902Sscottl * conditions are met:
40114902Sscottl *
41114902Sscottl * 3. Conditions
42114902Sscottl *
43126364Sscottl * 3.1. Redistribution of Source with Rights to Further Distribute Source.
44122999Smbr * Redistribution of source code of any substantial portion of the Covered
45114902Sscottl * Code or modification with rights to further distribute source must include
46114902Sscottl * the above Copyright Notice, the above License, this list of Conditions,
47114902Sscottl * and the following Disclaimer and Export Compliance provision.  In addition,
48114902Sscottl * Licensee must cause all Covered Code to which Licensee contributes to
49114902Sscottl * contain a file documenting the changes Licensee made to create that Covered
50119280Simp * Code and the date of any change.  Licensee must include in that file the
51119280Simp * documentation of any changes made by any predecessor Licensee.  Licensee
52114902Sscottl * must include a prominent statement that the modification is derived,
53129859Sscottl * directly or indirectly, from Original Intel Code.
54129859Sscottl *
55114902Sscottl * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
56114902Sscottl * Redistribution of source code of any substantial portion of the Covered
57114902Sscottl * Code or modification without rights to further distribute source must
58114902Sscottl * include the following Disclaimer and Export Compliance provision in the
59127205Sscottl * documentation and/or other materials provided with distribution.  In
60114902Sscottl * addition, Licensee may not authorize further sublicense of source of any
61114902Sscottl * portion of the Covered Code, and must include terms to the effect that the
62127487Sscottl * license from Licensee to its licensee is limited to the intellectual
63114902Sscottl * property embodied in the software Licensee provides to its licensee, and
64114902Sscottl * not to intellectual property embodied in modifications its licensee may
65114902Sscottl * make.
66114902Sscottl *
67114902Sscottl * 3.3. Redistribution of Executable. Redistribution in executable form of any
68114902Sscottl * substantial portion of the Covered Code or modification must reproduce the
69114902Sscottl * above Copyright Notice, and the following Disclaimer and Export Compliance
70114902Sscottl * provision in the documentation and/or other materials provided with the
71114902Sscottl * distribution.
72114902Sscottl *
73140923Sscottl * 3.4. Intel retains all right, title, and interest in and to the Original
74114902Sscottl * Intel Code.
75114902Sscottl *
76114902Sscottl * 3.5. Neither the name Intel nor any other trademark owned or controlled by
77114902Sscottl * Intel shall be used in advertising or otherwise to promote the sale, use or
78114902Sscottl * other dealings in products derived from or relating to the Covered Code
79140923Sscottl * without prior written authorization from Intel.
80114902Sscottl *
81114902Sscottl * 4. Disclaimer and Export Compliance
82114902Sscottl *
83114902Sscottl * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
84114902Sscottl * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
85114902Sscottl * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
86114902Sscottl * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
87114902Sscottl * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
88114902Sscottl * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
89114902Sscottl * PARTICULAR PURPOSE.
90114902Sscottl *
91114902Sscottl * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
92122999Smbr * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
93114902Sscottl * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
94114902Sscottl * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
95114902Sscottl * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
96114902Sscottl * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
97114902Sscottl * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
98114902Sscottl * LIMITED REMEDY.
99114902Sscottl *
100114902Sscottl * 4.3. Licensee shall not export, either directly or indirectly, any of this
101114902Sscottl * software or system incorporating such software without first obtaining any
102114902Sscottl * required license or other approval from the U. S. Department of Commerce or
103114902Sscottl * any other agency or department of the United States Government.  In the
104114902Sscottl * event Licensee exports any such software from the United States or
105114902Sscottl * re-exports any such software from a foreign destination, Licensee shall
106114902Sscottl * ensure that the distribution and export/re-export of the software is in
107114902Sscottl * compliance with all laws, regulations, orders, or other restrictions of the
108114902Sscottl * U.S. Export Administration Regulations. Licensee agrees that neither it nor
109114902Sscottl * any of its subsidiaries will export/re-export any technical data, process,
110114902Sscottl * software, or service, directly or indirectly, to any country for which the
111114902Sscottl * United States government or any agency thereof requires an export license,
112114902Sscottl * other governmental approval, or letter of assurance, without first obtaining
113114902Sscottl * such license, approval or letter.
114114902Sscottl *
115114902Sscottl *****************************************************************************/
116114902Sscottl
117114902Sscottl
118114902Sscottl#include "acpi.h"
119114902Sscottl#include "acdisasm.h"
120114902Sscottl
121114902Sscottl
122114902Sscottl#ifdef ACPI_DISASSEMBLER
123114902Sscottl
124114902Sscottl#define _COMPONENT          ACPI_CA_DEBUGGER
125114902Sscottl        ACPI_MODULE_NAME    ("dbresrcl")
126114902Sscottl
127114902Sscottl
128114902Sscottl/*******************************************************************************
129114902Sscottl *
130114902Sscottl * FUNCTION:    AcpiDmIoFlags
131114902Sscottl *
132114902Sscottl * PARAMETERS:  Flags               - Flag byte to be decoded
133114902Sscottl *
134114902Sscottl * RETURN:      None
135114902Sscottl *
136114902Sscottl * DESCRIPTION: Decode the flags specific to IO Address space descriptors
137114902Sscottl *
138114902Sscottl ******************************************************************************/
139114902Sscottl
140114902Sscottlvoid
141114902SscottlAcpiDmIoFlags (
142114902Sscottl        UINT8               Flags)
143114902Sscottl{
144114902Sscottl    AcpiOsPrintf ("%s, %s, %s, %s,",
145114902Sscottl        AcpiGbl_ConsumeDecode [(Flags & 1)],
146114902Sscottl        AcpiGbl_MinDecode [(Flags & 0x4) >> 2],
147114902Sscottl        AcpiGbl_MaxDecode [(Flags & 0x8) >> 3],
148114902Sscottl        AcpiGbl_DECDecode [(Flags & 0x2) >> 1]);
149114902Sscottl}
150114902Sscottl
151122999Smbr
152114902Sscottl/*******************************************************************************
153150535Sscottl *
154114902Sscottl * FUNCTION:    AcpiDmMemoryFlags
155150535Sscottl *
156150535Sscottl * PARAMETERS:  Flags               - Flag byte to be decoded
157150535Sscottl *              SpecificFlags       - "Specific" flag byte to be decoded
158150535Sscottl *
159150535Sscottl * RETURN:      None
160150535Sscottl *
161150535Sscottl * DESCRIPTION: Decode flags specific to Memory Address Space descriptors
162150535Sscottl *
163150535Sscottl ******************************************************************************/
164150535Sscottl
165150535Sscottlvoid
166150535SscottlAcpiDmMemoryFlags (
167150535Sscottl    UINT8                   Flags,
168114902Sscottl    UINT8                   SpecificFlags)
169150535Sscottl{
170150535Sscottl    AcpiOsPrintf ("%s, %s, %s, %s, %s, %s,",
171150535Sscottl        AcpiGbl_ConsumeDecode [(Flags & 1)],
172150535Sscottl        AcpiGbl_DECDecode [(Flags & 0x2) >> 1],
173150535Sscottl        AcpiGbl_MinDecode [(Flags & 0x4) >> 2],
174150535Sscottl        AcpiGbl_MaxDecode [(Flags & 0x8) >> 3],
175150535Sscottl        AcpiGbl_MEMDecode [(SpecificFlags & 0x6) >> 1],
176150535Sscottl        AcpiGbl_RWDecode [(SpecificFlags & 0x1)]);
177122999Smbr}
178114902Sscottl
179122999Smbr
180114902Sscottl/*******************************************************************************
181122999Smbr *
182122999Smbr * FUNCTION:    AcpiDmWordDescriptor
183122999Smbr *
184122999Smbr * PARAMETERS:  Resource            - Pointer to the resource descriptor
185122999Smbr *              Length              - Length of the descriptor in bytes
186122999Smbr *              Level               - Current source code indentation level
187122999Smbr *
188122999Smbr * RETURN:      None
189122999Smbr *
190122999Smbr * DESCRIPTION: Decode a Word Address Space descriptor
191122999Smbr *
192122999Smbr ******************************************************************************/
193122999Smbr
194122999Smbrvoid
195122999SmbrAcpiDmWordDescriptor (
196122999Smbr    ASL_WORD_ADDRESS_DESC   *Resource,
197122999Smbr    UINT32                  Length,
198122999Smbr    UINT32                  Level)
199122999Smbr{
200122999Smbr
201122999Smbr    AcpiDmIndent (Level);
202122999Smbr    AcpiOsPrintf ("%s (",
203122999Smbr        AcpiGbl_WordDecode [(Resource->ResourceType & 3)]);
204122999Smbr
205122999Smbr    AcpiDmIoFlags (Resource->Flags);
206122999Smbr
207122999Smbr    if ((Resource->ResourceType & 0x3) == 1)
208122999Smbr    {
209122999Smbr        AcpiOsPrintf (" %s,",
210122999Smbr            AcpiGbl_RNGDecode [(Resource->SpecificFlags & 0x3)]);
211122999Smbr    }
212122999Smbr
213114902Sscottl    /* The WORD values */
214114902Sscottl
215114902Sscottl    AcpiOsPrintf ("\n");
216114902Sscottl    AcpiDmIndent (Level + 1);
217114902Sscottl    AcpiOsPrintf ("0x%4.4X,\n",
218114902Sscottl        (UINT32) Resource->Granularity);
219114902Sscottl    AcpiDmIndent (Level + 1);
220114902Sscottl    AcpiOsPrintf ("0x%4.4X,\n",
221114902Sscottl        (UINT32) Resource->AddressMin);
222114902Sscottl    AcpiDmIndent (Level + 1);
223114902Sscottl    AcpiOsPrintf ("0x%4.4X,\n",
224114902Sscottl        (UINT32) Resource->AddressMax);
225114902Sscottl    AcpiDmIndent (Level + 1);
226114902Sscottl    AcpiOsPrintf ("0x%4.4X,\n",
227114902Sscottl        (UINT32) Resource->TranslationOffset);
228114902Sscottl    AcpiDmIndent (Level + 1);
229114902Sscottl    AcpiOsPrintf ("0x%4.4X",
230150535Sscottl        (UINT32) Resource->AddressLength);
231114902Sscottl
232150535Sscottl    /* Optional fields */
233150535Sscottl
234150535Sscottl    if (Length > 13)
235150535Sscottl    {
236150535Sscottl        AcpiOsPrintf (", 0x%2.2X",
237114902Sscottl            (UINT32) Resource->OptionalFields[0]);
238114902Sscottl    }
239114902Sscottl
240114902Sscottl    if (Length > 14)
241114902Sscottl    {
242114902Sscottl        AcpiOsPrintf (", %s",
243114902Sscottl            &Resource->OptionalFields[1]);
244150535Sscottl    }
245114902Sscottl    AcpiOsPrintf (")\n");
246114902Sscottl}
247114902Sscottl
248114902Sscottl
249114902Sscottl/*******************************************************************************
250114902Sscottl *
251114902Sscottl * FUNCTION:    AcpiDmDwordDescriptor
252114902Sscottl *
253114902Sscottl * PARAMETERS:  Resource            - Pointer to the resource descriptor
254114902Sscottl *              Length              - Length of the descriptor in bytes
255114902Sscottl *              Level               - Current source code indentation level
256114902Sscottl *
257114902Sscottl * RETURN:      None
258114902Sscottl *
259114902Sscottl * DESCRIPTION: Decode a DWord Address Space descriptor
260114902Sscottl *
261114902Sscottl ******************************************************************************/
262114902Sscottl
263114902Sscottlvoid
264114902SscottlAcpiDmDwordDescriptor (
265114902Sscottl    ASL_DWORD_ADDRESS_DESC  *Resource,
266114902Sscottl    UINT32                  Length,
267114902Sscottl    UINT32                  Level)
268114902Sscottl{
269114902Sscottl
270114902Sscottl    AcpiDmIndent (Level);
271114902Sscottl    AcpiOsPrintf ("D%s (",
272114902Sscottl        AcpiGbl_WordDecode [(Resource->ResourceType & 3)]);
273114902Sscottl
274114902Sscottl    if ((Resource->ResourceType & 0x3) == 1)
275114902Sscottl    {
276114902Sscottl        AcpiDmIoFlags (Resource->Flags);
277114902Sscottl        AcpiOsPrintf (" %s,",
278114902Sscottl            AcpiGbl_RNGDecode [(Resource->SpecificFlags & 0x3)]);
279114902Sscottl    }
280114902Sscottl    else
281114902Sscottl    {
282114902Sscottl        AcpiDmMemoryFlags (Resource->Flags, Resource->SpecificFlags);
283114902Sscottl    }
284114902Sscottl
285114902Sscottl    /* The DWORD values */
286114902Sscottl
287114902Sscottl    AcpiOsPrintf ("\n");
288114902Sscottl    AcpiDmIndent (Level + 1);
289114902Sscottl    AcpiOsPrintf ("0x%8.8X,\n",
290114902Sscottl        Resource->Granularity);
291114902Sscottl    AcpiDmIndent (Level + 1);
292114902Sscottl    AcpiOsPrintf ("0x%8.8X,\n",
293114902Sscottl        Resource->AddressMin);
294114902Sscottl    AcpiDmIndent (Level + 1);
295114902Sscottl    AcpiOsPrintf ("0x%8.8X,\n",
296114902Sscottl        Resource->AddressMax);
297114902Sscottl    AcpiDmIndent (Level + 1);
298114902Sscottl    AcpiOsPrintf ("0x%8.8X,\n",
299114902Sscottl        Resource->TranslationOffset);
300114902Sscottl    AcpiDmIndent (Level + 1);
301114902Sscottl    AcpiOsPrintf ("0x%8.8X",
302122999Smbr        Resource->AddressLength);
303122999Smbr
304122999Smbr    /* Optional fields */
305122999Smbr
306122999Smbr    if (Length > 23)
307122999Smbr    {
308122999Smbr        AcpiOsPrintf (", 0x%2.2X",
309122999Smbr            Resource->OptionalFields[0]);
310122999Smbr    }
311122999Smbr    if (Length > 24)
312122999Smbr    {
313122999Smbr        AcpiOsPrintf (", %s",
314122999Smbr            &Resource->OptionalFields[1]);
315122999Smbr    }
316122999Smbr    AcpiOsPrintf (")\n");
317122999Smbr}
318114902Sscottl
319114902Sscottl
320114902Sscottl/*******************************************************************************
321114902Sscottl *
322114902Sscottl * FUNCTION:    AcpiDmQwordDescriptor
323114902Sscottl *
324114902Sscottl * PARAMETERS:  Resource            - Pointer to the resource descriptor
325114902Sscottl *              Length              - Length of the descriptor in bytes
326114902Sscottl *              Level               - Current source code indentation level
327114902Sscottl *
328114902Sscottl * RETURN:      None
329114902Sscottl *
330114902Sscottl * DESCRIPTION: Decode a QWord Address Space descriptor
331114902Sscottl *
332114902Sscottl ******************************************************************************/
333114902Sscottl
334114902Sscottlvoid
335114902SscottlAcpiDmQwordDescriptor (
336114902Sscottl    ASL_QWORD_ADDRESS_DESC  *Resource,
337114902Sscottl    UINT32                  Length,
338114902Sscottl    UINT32                  Level)
339114902Sscottl{
340114902Sscottl
341114902Sscottl    AcpiDmIndent (Level);
342114902Sscottl    AcpiOsPrintf ("Q%s (",
343114902Sscottl        AcpiGbl_WordDecode [(Resource->ResourceType & 3)]);
344114902Sscottl
345114902Sscottl    if ((Resource->ResourceType & 0x3) == 1)
346114902Sscottl    {
347114902Sscottl        AcpiDmIoFlags (Resource->Flags);
348114902Sscottl        AcpiOsPrintf (" %s,",
349114902Sscottl            AcpiGbl_RNGDecode [(Resource->SpecificFlags & 0x3)]);
350114902Sscottl    }
351114902Sscottl    else
352114902Sscottl    {
353114902Sscottl        AcpiDmMemoryFlags (Resource->Flags, Resource->SpecificFlags);
354114902Sscottl    }
355114902Sscottl
356114902Sscottl    /* The QWORD values */
357114902Sscottl
358114902Sscottl    AcpiOsPrintf ("\n");
359114902Sscottl    AcpiDmIndent (Level + 1);
360114902Sscottl    AcpiOsPrintf ("0x%8.8X%8.8X,\n",
361114902Sscottl        ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->Granularity)),
362114902Sscottl        ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->Granularity)));
363114902Sscottl
364114902Sscottl    AcpiDmIndent (Level + 1);
365114902Sscottl    AcpiOsPrintf ("0x%8.8X%8.8X,\n",
366114902Sscottl        ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->AddressMin)),
367114902Sscottl        ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->AddressMin)));
368114902Sscottl
369114902Sscottl    AcpiDmIndent (Level + 1);
370114902Sscottl    AcpiOsPrintf ("0x%8.8X%8.8X,\n",
371114902Sscottl        ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->AddressMax)),
372114902Sscottl        ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->AddressMax)));
373114902Sscottl
374114902Sscottl    AcpiDmIndent (Level + 1);
375114902Sscottl    AcpiOsPrintf ("0x%8.8X%8.8X,\n",
376114902Sscottl        ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->TranslationOffset)),
377114902Sscottl        ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->TranslationOffset)));
378114902Sscottl
379114902Sscottl    AcpiDmIndent (Level + 1);
380114902Sscottl    AcpiOsPrintf ("0x%8.8X%8.8X",
381114902Sscottl        ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->AddressLength)),
382114902Sscottl        ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->AddressLength)));
383114902Sscottl
384114902Sscottl    /* Optional fields */
385114902Sscottl
386114902Sscottl    if (Length > 43)
387114902Sscottl    {
388114902Sscottl        AcpiOsPrintf (", 0x%2.2X",
389114902Sscottl            Resource->OptionalFields[0]);
390114902Sscottl    }
391114902Sscottl    if (Length > 44)
392114902Sscottl    {
393114902Sscottl        AcpiOsPrintf (", %s",
394114902Sscottl            &Resource->OptionalFields[1]);
395114902Sscottl    }
396114902Sscottl
397114902Sscottl    AcpiOsPrintf (")\n");
398114902Sscottl}
399114902Sscottl
400114902Sscottl
401114902Sscottl/*******************************************************************************
402114902Sscottl *
403114902Sscottl * FUNCTION:    AcpiDmMemory24Descriptor
404114902Sscottl *
405114902Sscottl * PARAMETERS:  Resource            - Pointer to the resource descriptor
406114902Sscottl *              Length              - Length of the descriptor in bytes
407114902Sscottl *              Level               - Current source code indentation level
408140923Sscottl *
409140923Sscottl * RETURN:      None
410114902Sscottl *
411114902Sscottl * DESCRIPTION: Decode a Memory24 descriptor
412114902Sscottl *
413114902Sscottl ******************************************************************************/
414114902Sscottl
415114902Sscottlvoid
416140923SscottlAcpiDmMemory24Descriptor (
417114902Sscottl    ASL_MEMORY_24_DESC      *Resource,
418114902Sscottl    UINT32                  Length,
419114902Sscottl    UINT32                  Level)
420114902Sscottl{
421114902Sscottl
422114902Sscottl    AcpiDmIndent (Level);
423119997Sps    AcpiOsPrintf ("Memory24 (%s, 0x%4.4X, 0x%4.4X, 0x%4.4X, 0x%4.4X)\n",
424116852Sscottl        AcpiGbl_RWDecode [Resource->Information & 1],
425116852Sscottl        (UINT32) Resource->AddressMin,
426114902Sscottl        (UINT32) Resource->AddressMax,
427114902Sscottl        (UINT32) Resource->Alignment,
428114902Sscottl        (UINT32) Resource->RangeLength);
429114902Sscottl}
430114902Sscottl
431114902Sscottl
432114902Sscottl/*******************************************************************************
433114902Sscottl *
434114902Sscottl * FUNCTION:    AcpiDmMemory32Descriptor
435114902Sscottl *
436130585Sphk * PARAMETERS:  Resource            - Pointer to the resource descriptor
437114902Sscottl *              Length              - Length of the descriptor in bytes
438122999Smbr *              Level               - Current source code indentation level
439114902Sscottl *
440114902Sscottl * RETURN:      None
441114902Sscottl *
442114902Sscottl * DESCRIPTION: Decode a Memory32 descriptor
443122999Smbr *
444122999Smbr ******************************************************************************/
445114902Sscottl
446114902Sscottlvoid
447114902SscottlAcpiDmMemory32Descriptor (
448140923Sscottl    ASL_MEMORY_32_DESC      *Resource,
449140923Sscottl    UINT32                  Length,
450114902Sscottl    UINT32                  Level)
451114902Sscottl{
452114902Sscottl
453114902Sscottl    AcpiDmIndent (Level);
454114902Sscottl    AcpiOsPrintf ("Memory32 (%s, 0x%8.8X, 0x%8.8X, 0x%8.8X, 0x%8.8X)\n",
455141062Sscottl        AcpiGbl_RWDecode [Resource->Information & 1],
456114902Sscottl        Resource->AddressMin,
457126364Sscottl        Resource->AddressMax,
458126364Sscottl        Resource->Alignment,
459140923Sscottl        Resource->RangeLength);
460126364Sscottl}
461114902Sscottl
462114902Sscottl
463114902Sscottl/*******************************************************************************
464114902Sscottl *
465114902Sscottl * FUNCTION:    AcpiDmFixedMem32Descriptor
466114902Sscottl *
467114902Sscottl * PARAMETERS:  Resource            - Pointer to the resource descriptor
468114902Sscottl *              Length              - Length of the descriptor in bytes
469114902Sscottl *              Level               - Current source code indentation level
470114902Sscottl *
471126364Sscottl * RETURN:      None
472114902Sscottl *
473114902Sscottl * DESCRIPTION: Decode a Fixed Memory32 descriptor
474122999Smbr *
475114902Sscottl ******************************************************************************/
476114902Sscottl
477114902Sscottlvoid
478114902SscottlAcpiDmFixedMem32Descriptor (
479140923Sscottl    ASL_FIXED_MEMORY_32_DESC *Resource,
480114902Sscottl    UINT32                  Length,
481114902Sscottl    UINT32                  Level)
482114902Sscottl{
483114902Sscottl
484114902Sscottl    AcpiDmIndent (Level);
485114902Sscottl    AcpiOsPrintf ("Memory32Fixed (%s, 0x%8.8X, 0x%8.8X)\n",
486141062Sscottl        AcpiGbl_RWDecode [Resource->Information & 1],
487114902Sscottl        Resource->BaseAddress,
488114902Sscottl        Resource->RangeLength);
489114902Sscottl}
490141062Sscottl
491114902Sscottl
492/*******************************************************************************
493 *
494 * FUNCTION:    AcpiDmGenericRegisterDescriptor
495 *
496 * PARAMETERS:  Resource            - Pointer to the resource descriptor
497 *              Length              - Length of the descriptor in bytes
498 *              Level               - Current source code indentation level
499 *
500 * RETURN:      None
501 *
502 * DESCRIPTION: Decode a Generic Register descriptor
503 *
504 ******************************************************************************/
505
506void
507AcpiDmGenericRegisterDescriptor (
508    ASL_GENERAL_REGISTER_DESC *Resource,
509    UINT32                  Length,
510    UINT32                  Level)
511{
512
513    AcpiDmIndent (Level);
514    AcpiOsPrintf ("Register (");
515
516    AcpiDmAddressSpace (Resource->AddressSpaceId);
517
518    AcpiOsPrintf ("0x%2.2X, 0x%2.2X, 0x%8.8X%8.8X)\n",
519        (UINT32) Resource->BitWidth,
520        (UINT32) Resource->BitOffset,
521        ACPI_HIDWORD (ACPI_GET_ADDRESS (Resource->Address)),
522        ACPI_LODWORD (ACPI_GET_ADDRESS (Resource->Address)));
523}
524
525
526/*******************************************************************************
527 *
528 * FUNCTION:    AcpiDmInterruptDescriptor
529 *
530 * PARAMETERS:  Resource            - Pointer to the resource descriptor
531 *              Length              - Length of the descriptor in bytes
532 *              Level               - Current source code indentation level
533 *
534 * RETURN:      None
535 *
536 * DESCRIPTION: Decode a extended Interrupt descriptor
537 *
538 ******************************************************************************/
539
540void
541AcpiDmInterruptDescriptor (
542    ASL_EXTENDED_XRUPT_DESC *Resource,
543    UINT32                  Length,
544    UINT32                  Level)
545{
546    UINT32                  i;
547    UINT8                   *Rover;
548
549
550    AcpiDmIndent (Level);
551    AcpiOsPrintf ("Interrupt (%s, %s, %s, %s",
552        AcpiGbl_ConsumeDecode [(Resource->Flags & 1)],
553        AcpiGbl_HEDecode [(Resource->Flags >> 1) & 1],
554        AcpiGbl_LLDecode [(Resource->Flags >> 2) & 1],
555        AcpiGbl_SHRDecode [(Resource->Flags >> 3) & 1]);
556
557    /* Resource Index/Source, optional -- at end of descriptor */
558
559    if (Resource->Length > (UINT16) (4 * Resource->TableLength) + 2)
560    {
561        /* Get a pointer past the interrupt values */
562
563        Rover = ((UINT8 *) Resource) + ((4 * Resource->TableLength) + 5);
564
565        /* Resource Index */
566        /* Resource Source */
567
568        AcpiOsPrintf (", 0x%X, \"%s\"", (UINT32) Rover[0], (char *) &Rover[1]);
569    }
570
571    AcpiOsPrintf (")\n");
572    AcpiDmIndent (Level);
573    AcpiOsPrintf ("{\n");
574    for (i = 0; i < Resource->TableLength; i++)
575    {
576        AcpiDmIndent (Level + 1);
577        AcpiOsPrintf ("0x%8.8X,\n", (UINT32) Resource->InterruptNumber[i]);
578    }
579
580    AcpiDmIndent (Level);
581    AcpiOsPrintf ("}\n");
582}
583
584
585/*******************************************************************************
586 *
587 * FUNCTION:    AcpiDmVendorLargeDescriptor
588 *
589 * PARAMETERS:  Resource            - Pointer to the resource descriptor
590 *              Length              - Length of the descriptor in bytes
591 *              Level               - Current source code indentation level
592 *
593 * RETURN:      None
594 *
595 * DESCRIPTION: Decode a Vendor Large descriptor
596 *
597 ******************************************************************************/
598
599void
600AcpiDmVendorLargeDescriptor (
601    ASL_LARGE_VENDOR_DESC   *Resource,
602    UINT32                  Length,
603    UINT32                  Level)
604{
605
606    AcpiDmIndent (Level);
607    AcpiOsPrintf ("VendorLong ()\n");
608    AcpiDmIndent (Level);
609
610    AcpiOsPrintf ("{\n");
611
612    AcpiDmDisasmByteList (Level + 1, (UINT8 *) Resource->VendorDefined, Length);
613    AcpiDmIndent (Level);
614    AcpiOsPrintf ("}\n");
615}
616
617
618#endif
619
620