dmresrcs.c revision 228110
1100966Siwasaki/*******************************************************************************
2100966Siwasaki *
3100966Siwasaki * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly
4100966Siwasaki *
5100966Siwasaki ******************************************************************************/
6100966Siwasaki
7100966Siwasaki/*
8100966Siwasaki * Copyright (C) 2000 - 2011, Intel Corp.
9100966Siwasaki * All rights reserved.
10100966Siwasaki *
11100966Siwasaki * Redistribution and use in source and binary forms, with or without
12100966Siwasaki * modification, are permitted provided that the following conditions
13100966Siwasaki * are met:
14100966Siwasaki * 1. Redistributions of source code must retain the above copyright
15100966Siwasaki *    notice, this list of conditions, and the following disclaimer,
16100966Siwasaki *    without modification.
17100966Siwasaki * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18100966Siwasaki *    substantially similar to the "NO WARRANTY" disclaimer below
19100966Siwasaki *    ("Disclaimer") and any redistribution must be conditioned upon
20100966Siwasaki *    including a substantially similar Disclaimer requirement for further
21100966Siwasaki *    binary redistribution.
22100966Siwasaki * 3. Neither the names of the above-listed copyright holders nor the names
23100966Siwasaki *    of any contributors may be used to endorse or promote products derived
24100966Siwasaki *    from this software without specific prior written permission.
25100966Siwasaki *
26100966Siwasaki * Alternatively, this software may be distributed under the terms of the
27100966Siwasaki * GNU General Public License ("GPL") version 2 as published by the Free
28100966Siwasaki * Software Foundation.
29100966Siwasaki *
30100966Siwasaki * NO WARRANTY
31100966Siwasaki * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32100966Siwasaki * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33100966Siwasaki * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34100966Siwasaki * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35100966Siwasaki * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36100966Siwasaki * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37100966Siwasaki * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38100966Siwasaki * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39100966Siwasaki * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40100966Siwasaki * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41100966Siwasaki * POSSIBILITY OF SUCH DAMAGES.
42100966Siwasaki */
43100966Siwasaki
44100966Siwasaki
45100966Siwasaki#include <contrib/dev/acpica/include/acpi.h>
46100966Siwasaki#include <contrib/dev/acpica/include/accommon.h>
47100966Siwasaki#include <contrib/dev/acpica/include/acdisasm.h>
48100966Siwasaki
49100966Siwasaki
50100966Siwasaki#ifdef ACPI_DISASSEMBLER
51100966Siwasaki
52100966Siwasaki#define _COMPONENT          ACPI_CA_DEBUGGER
53100966Siwasaki        ACPI_MODULE_NAME    ("dbresrcs")
54100966Siwasaki
55100966Siwasaki
56100966Siwasaki/*******************************************************************************
57100966Siwasaki *
58100966Siwasaki * FUNCTION:    AcpiDmIrqDescriptor
59100966Siwasaki *
60100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
61100966Siwasaki *              Length              - Length of the descriptor in bytes
62100966Siwasaki *              Level               - Current source code indentation level
63100966Siwasaki *
64100966Siwasaki * RETURN:      None
65100966Siwasaki *
66100966Siwasaki * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags()
67100966Siwasaki *
68100966Siwasaki ******************************************************************************/
69100966Siwasaki
70100966Siwasakivoid
71100966SiwasakiAcpiDmIrqDescriptor (
72100966Siwasaki    AML_RESOURCE            *Resource,
73100966Siwasaki    UINT32                  Length,
74100966Siwasaki    UINT32                  Level)
75100966Siwasaki{
76100966Siwasaki
77100966Siwasaki    AcpiDmIndent (Level);
78100966Siwasaki    AcpiOsPrintf ("%s (",
79100966Siwasaki        AcpiGbl_IrqDecode [Length & 1]);
80100966Siwasaki
81100966Siwasaki    /* Decode flags byte if present */
82100966Siwasaki
83100966Siwasaki    if (Length & 1)
84100966Siwasaki    {
85100966Siwasaki        AcpiOsPrintf ("%s, %s, %s, ",
86100966Siwasaki            AcpiGbl_HeDecode [Resource->Irq.Flags & 1],
87100966Siwasaki            AcpiGbl_LlDecode [(Resource->Irq.Flags >> 3) & 1],
88100966Siwasaki            AcpiGbl_ShrDecode [(Resource->Irq.Flags >> 4) & 1]);
89100966Siwasaki    }
90100966Siwasaki
91100966Siwasaki    /* Insert a descriptor name */
92100966Siwasaki
93100966Siwasaki    AcpiDmDescriptorName ();
94100966Siwasaki    AcpiOsPrintf (")\n");
95100966Siwasaki
96100966Siwasaki    AcpiDmIndent (Level + 1);
97100966Siwasaki    AcpiDmBitList (Resource->Irq.IrqMask);
98100966Siwasaki}
99100966Siwasaki
100100966Siwasaki
101100966Siwasaki/*******************************************************************************
102100966Siwasaki *
103100966Siwasaki * FUNCTION:    AcpiDmDmaDescriptor
104100966Siwasaki *
105100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
106100966Siwasaki *              Length              - Length of the descriptor in bytes
107100966Siwasaki *              Level               - Current source code indentation level
108100966Siwasaki *
109100966Siwasaki * RETURN:      None
110100966Siwasaki *
111100966Siwasaki * DESCRIPTION: Decode a DMA descriptor
112100966Siwasaki *
113100966Siwasaki ******************************************************************************/
114100966Siwasaki
115100966Siwasakivoid
116100966SiwasakiAcpiDmDmaDescriptor (
117100966Siwasaki    AML_RESOURCE            *Resource,
118100966Siwasaki    UINT32                  Length,
119100966Siwasaki    UINT32                  Level)
120100966Siwasaki{
121100966Siwasaki
122100966Siwasaki    AcpiDmIndent (Level);
123100966Siwasaki    AcpiOsPrintf ("DMA (%s, %s, %s, ",
124100966Siwasaki        AcpiGbl_TypDecode [(Resource->Dma.Flags >> 5) & 3],
125100966Siwasaki        AcpiGbl_BmDecode  [(Resource->Dma.Flags >> 2) & 1],
126100966Siwasaki        AcpiGbl_SizDecode [(Resource->Dma.Flags >> 0) & 3]);
127100966Siwasaki
128100966Siwasaki    /* Insert a descriptor name */
129100966Siwasaki
130100966Siwasaki    AcpiDmDescriptorName ();
131100966Siwasaki    AcpiOsPrintf (")\n");
132100966Siwasaki
133100966Siwasaki    AcpiDmIndent (Level + 1);
134100966Siwasaki    AcpiDmBitList (Resource->Dma.DmaChannelMask);
135100966Siwasaki}
136100966Siwasaki
137100966Siwasaki
138100966Siwasaki/*******************************************************************************
139100966Siwasaki *
140100966Siwasaki * FUNCTION:    AcpiDmFixedDmaDescriptor
141100966Siwasaki *
142100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
143100966Siwasaki *              Length              - Length of the descriptor in bytes
144100966Siwasaki *              Level               - Current source code indentation level
145100966Siwasaki *
146100966Siwasaki * RETURN:      None
147100966Siwasaki *
148100966Siwasaki * DESCRIPTION: Decode a FixedDMA descriptor
149100966Siwasaki *
150100966Siwasaki ******************************************************************************/
151100966Siwasaki
152100966Siwasakivoid
153100966SiwasakiAcpiDmFixedDmaDescriptor (
154100966Siwasaki    AML_RESOURCE            *Resource,
155100966Siwasaki    UINT32                  Length,
156100966Siwasaki    UINT32                  Level)
157100966Siwasaki{
158100966Siwasaki
159100966Siwasaki    AcpiDmIndent (Level);
160100966Siwasaki    AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ",
161100966Siwasaki        Resource->FixedDma.RequestLines,
162100966Siwasaki        Resource->FixedDma.Channels);
163100966Siwasaki
164100966Siwasaki    if (Resource->FixedDma.Width <= 5)
165100966Siwasaki    {
166100966Siwasaki        AcpiOsPrintf ("%s, ",
167100966Siwasaki            AcpiGbl_DtsDecode [Resource->FixedDma.Width]);
168100966Siwasaki    }
169100966Siwasaki    else
170100966Siwasaki    {
171100966Siwasaki        AcpiOsPrintf ("%X /* INVALID DMA WIDTH */, ", Resource->FixedDma.Width);
172100966Siwasaki    }
173100966Siwasaki
174100966Siwasaki    /* Insert a descriptor name */
175100966Siwasaki
176100966Siwasaki    AcpiDmDescriptorName ();
177100966Siwasaki    AcpiOsPrintf (")\n");
178100966Siwasaki}
179100966Siwasaki
180100966Siwasaki
181100966Siwasaki/*******************************************************************************
182100966Siwasaki *
183100966Siwasaki * FUNCTION:    AcpiDmIoDescriptor
184100966Siwasaki *
185100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
186100966Siwasaki *              Length              - Length of the descriptor in bytes
187100966Siwasaki *              Level               - Current source code indentation level
188100966Siwasaki *
189100966Siwasaki * RETURN:      None
190100966Siwasaki *
191100966Siwasaki * DESCRIPTION: Decode an IO descriptor
192100966Siwasaki *
193100966Siwasaki ******************************************************************************/
194100966Siwasaki
195100966Siwasakivoid
196100966SiwasakiAcpiDmIoDescriptor (
197100966Siwasaki    AML_RESOURCE            *Resource,
198100966Siwasaki    UINT32                  Length,
199100966Siwasaki    UINT32                  Level)
200100966Siwasaki{
201100966Siwasaki
202100966Siwasaki    AcpiDmIndent (Level);
203100966Siwasaki    AcpiOsPrintf ("IO (%s,\n",
204100966Siwasaki        AcpiGbl_IoDecode [(Resource->Io.Flags & 1)]);
205100966Siwasaki
206100966Siwasaki    AcpiDmIndent (Level + 1);
207100966Siwasaki    AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum");
208100966Siwasaki
209100966Siwasaki    AcpiDmIndent (Level + 1);
210100966Siwasaki    AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum");
211100966Siwasaki
212100966Siwasaki    AcpiDmIndent (Level + 1);
213100966Siwasaki    AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment");
214100966Siwasaki
215100966Siwasaki    AcpiDmIndent (Level + 1);
216100966Siwasaki    AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length");
217100966Siwasaki
218100966Siwasaki    /* Insert a descriptor name */
219100966Siwasaki
220100966Siwasaki    AcpiDmIndent (Level + 1);
221100966Siwasaki    AcpiDmDescriptorName ();
222100966Siwasaki    AcpiOsPrintf (")\n");
223100966Siwasaki}
224100966Siwasaki
225100966Siwasaki
226100966Siwasaki/*******************************************************************************
227100966Siwasaki *
228100966Siwasaki * FUNCTION:    AcpiDmFixedIoDescriptor
229100966Siwasaki *
230100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
231100966Siwasaki *              Length              - Length of the descriptor in bytes
232100966Siwasaki *              Level               - Current source code indentation level
233100966Siwasaki *
234100966Siwasaki * RETURN:      None
235100966Siwasaki *
236100966Siwasaki * DESCRIPTION: Decode a Fixed IO descriptor
237100966Siwasaki *
238100966Siwasaki ******************************************************************************/
239100966Siwasaki
240100966Siwasakivoid
241100966SiwasakiAcpiDmFixedIoDescriptor (
242100966Siwasaki    AML_RESOURCE            *Resource,
243100966Siwasaki    UINT32                  Length,
244100966Siwasaki    UINT32                  Level)
245100966Siwasaki{
246100966Siwasaki
247100966Siwasaki    AcpiDmIndent (Level);
248100966Siwasaki    AcpiOsPrintf ("FixedIO (\n");
249100966Siwasaki
250100966Siwasaki    AcpiDmIndent (Level + 1);
251100966Siwasaki    AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address");
252100966Siwasaki
253100966Siwasaki    AcpiDmIndent (Level + 1);
254100966Siwasaki    AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length");
255100966Siwasaki
256100966Siwasaki    /* Insert a descriptor name */
257100966Siwasaki
258100966Siwasaki    AcpiDmIndent (Level + 1);
259100966Siwasaki    AcpiDmDescriptorName ();
260100966Siwasaki    AcpiOsPrintf (")\n");
261100966Siwasaki}
262100966Siwasaki
263100966Siwasaki
264100966Siwasaki/*******************************************************************************
265100966Siwasaki *
266100966Siwasaki * FUNCTION:    AcpiDmStartDependentDescriptor
267100966Siwasaki *
268100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
269100966Siwasaki *              Length              - Length of the descriptor in bytes
270100966Siwasaki *              Level               - Current source code indentation level
271100966Siwasaki *
272100966Siwasaki * RETURN:      None
273100966Siwasaki *
274100966Siwasaki * DESCRIPTION: Decode a Start Dependendent functions descriptor
275100966Siwasaki *
276100966Siwasaki ******************************************************************************/
277100966Siwasaki
278100966Siwasakivoid
279100966SiwasakiAcpiDmStartDependentDescriptor (
280100966Siwasaki    AML_RESOURCE            *Resource,
281100966Siwasaki    UINT32                  Length,
282100966Siwasaki    UINT32                  Level)
283100966Siwasaki{
284100966Siwasaki
285100966Siwasaki    AcpiDmIndent (Level);
286100966Siwasaki
287100966Siwasaki    if (Length & 1)
288100966Siwasaki    {
289100966Siwasaki        AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n",
290100966Siwasaki            (UINT32) Resource->StartDpf.Flags & 3,
291100966Siwasaki            (UINT32) (Resource->StartDpf.Flags >> 2) & 3);
292100966Siwasaki    }
293100966Siwasaki    else
294100966Siwasaki    {
295100966Siwasaki        AcpiOsPrintf ("StartDependentFnNoPri ()\n");
296100966Siwasaki    }
297100966Siwasaki
298100966Siwasaki    AcpiDmIndent (Level);
299100966Siwasaki    AcpiOsPrintf ("{\n");
300100966Siwasaki}
301100966Siwasaki
302100966Siwasaki
303100966Siwasaki/*******************************************************************************
304100966Siwasaki *
305100966Siwasaki * FUNCTION:    AcpiDmEndDependentDescriptor
306100966Siwasaki *
307100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
308100966Siwasaki *              Length              - Length of the descriptor in bytes
309100966Siwasaki *              Level               - Current source code indentation level
310100966Siwasaki *
311100966Siwasaki * RETURN:      None
312100966Siwasaki *
313100966Siwasaki * DESCRIPTION: Decode an End Dependent functions descriptor
314100966Siwasaki *
315100966Siwasaki ******************************************************************************/
316100966Siwasaki
317100966Siwasakivoid
318100966SiwasakiAcpiDmEndDependentDescriptor (
319100966Siwasaki    AML_RESOURCE            *Resource,
320100966Siwasaki    UINT32                  Length,
321100966Siwasaki    UINT32                  Level)
322100966Siwasaki{
323100966Siwasaki
324100966Siwasaki    AcpiDmIndent (Level);
325100966Siwasaki    AcpiOsPrintf ("}\n");
326100966Siwasaki    AcpiDmIndent (Level);
327100966Siwasaki    AcpiOsPrintf ("EndDependentFn ()\n");
328100966Siwasaki}
329100966Siwasaki
330100966Siwasaki
331100966Siwasaki/*******************************************************************************
332100966Siwasaki *
333100966Siwasaki * FUNCTION:    AcpiDmVendorSmallDescriptor
334100966Siwasaki *
335100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
336100966Siwasaki *              Length              - Length of the descriptor in bytes
337100966Siwasaki *              Level               - Current source code indentation level
338100966Siwasaki *
339100966Siwasaki * RETURN:      None
340100966Siwasaki *
341100966Siwasaki * DESCRIPTION: Decode a Vendor Small Descriptor
342100966Siwasaki *
343100966Siwasaki ******************************************************************************/
344100966Siwasaki
345100966Siwasakivoid
346100966SiwasakiAcpiDmVendorSmallDescriptor (
347100966Siwasaki    AML_RESOURCE            *Resource,
348100966Siwasaki    UINT32                  Length,
349100966Siwasaki    UINT32                  Level)
350100966Siwasaki{
351100966Siwasaki
352100966Siwasaki    AcpiDmVendorCommon ("Short",
353        ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)),
354        Length, Level);
355}
356
357#endif
358
359