dmresrcs.c revision 243347
1100966Siwasaki/*******************************************************************************
2100966Siwasaki *
3100966Siwasaki * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly
4100966Siwasaki *
5100966Siwasaki ******************************************************************************/
6100966Siwasaki
7217365Sjkim/*
8229989Sjkim * Copyright (C) 2000 - 2012, 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    ("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 *
66151937Sjkim * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags()
67100966Siwasaki *
68100966Siwasaki ******************************************************************************/
69100966Siwasaki
70100966Siwasakivoid
71100966SiwasakiAcpiDmIrqDescriptor (
72151937Sjkim    AML_RESOURCE            *Resource,
73100966Siwasaki    UINT32                  Length,
74100966Siwasaki    UINT32                  Level)
75100966Siwasaki{
76100966Siwasaki
77100966Siwasaki    AcpiDmIndent (Level);
78100966Siwasaki    AcpiOsPrintf ("%s (",
79243347Sjkim        AcpiGbl_IrqDecode [ACPI_GET_1BIT_FLAG (Length)]);
80100966Siwasaki
81151937Sjkim    /* Decode flags byte if present */
82151937Sjkim
83100966Siwasaki    if (Length & 1)
84100966Siwasaki    {
85167802Sjkim        AcpiOsPrintf ("%s, %s, %s, ",
86243347Sjkim            AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Irq.Flags)],
87243347Sjkim            AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Irq.Flags, 3)],
88243347Sjkim            AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Irq.Flags, 4)]);
89100966Siwasaki    }
90167802Sjkim
91167802Sjkim    /* Insert a descriptor name */
92167802Sjkim
93167802Sjkim    AcpiDmDescriptorName ();
94151937Sjkim    AcpiOsPrintf (")\n");
95100966Siwasaki
96151937Sjkim    AcpiDmIndent (Level + 1);
97151937Sjkim    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 (
117151937Sjkim    AML_RESOURCE            *Resource,
118100966Siwasaki    UINT32                  Length,
119100966Siwasaki    UINT32                  Level)
120100966Siwasaki{
121100966Siwasaki
122100966Siwasaki    AcpiDmIndent (Level);
123167802Sjkim    AcpiOsPrintf ("DMA (%s, %s, %s, ",
124243347Sjkim        AcpiGbl_TypDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Dma.Flags, 5)],
125243347Sjkim        AcpiGbl_BmDecode  [ACPI_EXTRACT_1BIT_FLAG (Resource->Dma.Flags, 2)],
126243347Sjkim        AcpiGbl_SizDecode [ACPI_GET_2BIT_FLAG (Resource->Dma.Flags)]);
127100966Siwasaki
128167802Sjkim    /* Insert a descriptor name */
129167802Sjkim
130167802Sjkim    AcpiDmDescriptorName ();
131167802Sjkim    AcpiOsPrintf (")\n");
132167802Sjkim
133151937Sjkim    AcpiDmIndent (Level + 1);
134151937Sjkim    AcpiDmBitList (Resource->Dma.DmaChannelMask);
135100966Siwasaki}
136100966Siwasaki
137100966Siwasaki
138100966Siwasaki/*******************************************************************************
139100966Siwasaki *
140228110Sjkim * FUNCTION:    AcpiDmFixedDmaDescriptor
141228110Sjkim *
142228110Sjkim * PARAMETERS:  Resource            - Pointer to the resource descriptor
143228110Sjkim *              Length              - Length of the descriptor in bytes
144228110Sjkim *              Level               - Current source code indentation level
145228110Sjkim *
146228110Sjkim * RETURN:      None
147228110Sjkim *
148228110Sjkim * DESCRIPTION: Decode a FixedDMA descriptor
149228110Sjkim *
150228110Sjkim ******************************************************************************/
151228110Sjkim
152228110Sjkimvoid
153228110SjkimAcpiDmFixedDmaDescriptor (
154228110Sjkim    AML_RESOURCE            *Resource,
155228110Sjkim    UINT32                  Length,
156228110Sjkim    UINT32                  Level)
157228110Sjkim{
158228110Sjkim
159228110Sjkim    AcpiDmIndent (Level);
160228110Sjkim    AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ",
161228110Sjkim        Resource->FixedDma.RequestLines,
162228110Sjkim        Resource->FixedDma.Channels);
163228110Sjkim
164228110Sjkim    if (Resource->FixedDma.Width <= 5)
165228110Sjkim    {
166228110Sjkim        AcpiOsPrintf ("%s, ",
167228110Sjkim            AcpiGbl_DtsDecode [Resource->FixedDma.Width]);
168228110Sjkim    }
169228110Sjkim    else
170228110Sjkim    {
171228110Sjkim        AcpiOsPrintf ("%X /* INVALID DMA WIDTH */, ", Resource->FixedDma.Width);
172228110Sjkim    }
173228110Sjkim
174228110Sjkim    /* Insert a descriptor name */
175228110Sjkim
176228110Sjkim    AcpiDmDescriptorName ();
177228110Sjkim    AcpiOsPrintf (")\n");
178228110Sjkim}
179228110Sjkim
180228110Sjkim
181228110Sjkim/*******************************************************************************
182228110Sjkim *
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 (
197151937Sjkim    AML_RESOURCE            *Resource,
198100966Siwasaki    UINT32                  Length,
199100966Siwasaki    UINT32                  Level)
200100966Siwasaki{
201100966Siwasaki
202100966Siwasaki    AcpiDmIndent (Level);
203151937Sjkim    AcpiOsPrintf ("IO (%s,\n",
204243347Sjkim        AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]);
205151937Sjkim
206151937Sjkim    AcpiDmIndent (Level + 1);
207167802Sjkim    AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum");
208151937Sjkim
209151937Sjkim    AcpiDmIndent (Level + 1);
210167802Sjkim    AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum");
211151937Sjkim
212151937Sjkim    AcpiDmIndent (Level + 1);
213167802Sjkim    AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment");
214151937Sjkim
215151937Sjkim    AcpiDmIndent (Level + 1);
216167802Sjkim    AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length");
217151937Sjkim
218167802Sjkim    /* Insert a descriptor name */
219167802Sjkim
220151937Sjkim    AcpiDmIndent (Level + 1);
221167802Sjkim    AcpiDmDescriptorName ();
222151937Sjkim    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 (
242151937Sjkim    AML_RESOURCE            *Resource,
243100966Siwasaki    UINT32                  Length,
244100966Siwasaki    UINT32                  Level)
245100966Siwasaki{
246100966Siwasaki
247100966Siwasaki    AcpiDmIndent (Level);
248151937Sjkim    AcpiOsPrintf ("FixedIO (\n");
249151937Sjkim
250151937Sjkim    AcpiDmIndent (Level + 1);
251167802Sjkim    AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address");
252151937Sjkim
253151937Sjkim    AcpiDmIndent (Level + 1);
254167802Sjkim    AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length");
255151937Sjkim
256167802Sjkim    /* Insert a descriptor name */
257167802Sjkim
258151937Sjkim    AcpiDmIndent (Level + 1);
259167802Sjkim    AcpiDmDescriptorName ();
260151937Sjkim    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 (
280151937Sjkim    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",
290243347Sjkim            (UINT32) ACPI_GET_2BIT_FLAG (Resource->StartDpf.Flags),
291243347Sjkim            (UINT32) ACPI_EXTRACT_2BIT_FLAG (Resource->StartDpf.Flags, 2));
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 (
319151937Sjkim    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 (
347151937Sjkim    AML_RESOURCE            *Resource,
348100966Siwasaki    UINT32                  Length,
349100966Siwasaki    UINT32                  Level)
350100966Siwasaki{
351100966Siwasaki
352167802Sjkim    AcpiDmVendorCommon ("Short",
353167802Sjkim        ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)),
354151937Sjkim        Length, Level);
355100966Siwasaki}
356100966Siwasaki
357100966Siwasaki#endif
358