1100966Siwasaki/*******************************************************************************
2100966Siwasaki *
3100966Siwasaki * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly
4100966Siwasaki *
5100966Siwasaki ******************************************************************************/
6100966Siwasaki
7217365Sjkim/*
8217365Sjkim * Copyright (C) 2000 - 2011, Intel Corp.
9100966Siwasaki * All rights reserved.
10100966Siwasaki *
11217365Sjkim * Redistribution and use in source and binary forms, with or without
12217365Sjkim * modification, are permitted provided that the following conditions
13217365Sjkim * are met:
14217365Sjkim * 1. Redistributions of source code must retain the above copyright
15217365Sjkim *    notice, this list of conditions, and the following disclaimer,
16217365Sjkim *    without modification.
17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18217365Sjkim *    substantially similar to the "NO WARRANTY" disclaimer below
19217365Sjkim *    ("Disclaimer") and any redistribution must be conditioned upon
20217365Sjkim *    including a substantially similar Disclaimer requirement for further
21217365Sjkim *    binary redistribution.
22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names
23217365Sjkim *    of any contributors may be used to endorse or promote products derived
24217365Sjkim *    from this software without specific prior written permission.
25100966Siwasaki *
26217365Sjkim * Alternatively, this software may be distributed under the terms of the
27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free
28217365Sjkim * Software Foundation.
29100966Siwasaki *
30217365Sjkim * NO WARRANTY
31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41217365Sjkim * POSSIBILITY OF SUCH DAMAGES.
42217365Sjkim */
43100966Siwasaki
44100966Siwasaki
45193341Sjkim#include <contrib/dev/acpica/include/acpi.h>
46193341Sjkim#include <contrib/dev/acpica/include/accommon.h>
47193341Sjkim#include <contrib/dev/acpica/include/acdisasm.h>
48100966Siwasaki
49100966Siwasaki
50100966Siwasaki#ifdef ACPI_DISASSEMBLER
51100966Siwasaki
52102550Siwasaki#define _COMPONENT          ACPI_CA_DEBUGGER
53100966Siwasaki        ACPI_MODULE_NAME    ("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 (",
79100966Siwasaki        AcpiGbl_IrqDecode [Length & 1]);
80100966Siwasaki
81151937Sjkim    /* Decode flags byte if present */
82151937Sjkim
83100966Siwasaki    if (Length & 1)
84100966Siwasaki    {
85167802Sjkim        AcpiOsPrintf ("%s, %s, %s, ",
86167802Sjkim            AcpiGbl_HeDecode [Resource->Irq.Flags & 1],
87167802Sjkim            AcpiGbl_LlDecode [(Resource->Irq.Flags >> 3) & 1],
88167802Sjkim            AcpiGbl_ShrDecode [(Resource->Irq.Flags >> 4) & 1]);
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, ",
124167802Sjkim            AcpiGbl_TypDecode [(Resource->Dma.Flags >> 5) & 3],
125167802Sjkim            AcpiGbl_BmDecode  [(Resource->Dma.Flags >> 2) & 1],
126167802Sjkim            AcpiGbl_SizDecode [(Resource->Dma.Flags >> 0) & 3]);
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 *
140100966Siwasaki * FUNCTION:    AcpiDmIoDescriptor
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 an IO descriptor
149100966Siwasaki *
150100966Siwasaki ******************************************************************************/
151100966Siwasaki
152100966Siwasakivoid
153100966SiwasakiAcpiDmIoDescriptor (
154151937Sjkim    AML_RESOURCE            *Resource,
155100966Siwasaki    UINT32                  Length,
156100966Siwasaki    UINT32                  Level)
157100966Siwasaki{
158100966Siwasaki
159100966Siwasaki    AcpiDmIndent (Level);
160151937Sjkim    AcpiOsPrintf ("IO (%s,\n",
161151937Sjkim        AcpiGbl_IoDecode [(Resource->Io.Flags & 1)]);
162151937Sjkim
163151937Sjkim    AcpiDmIndent (Level + 1);
164167802Sjkim    AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum");
165151937Sjkim
166151937Sjkim    AcpiDmIndent (Level + 1);
167167802Sjkim    AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum");
168151937Sjkim
169151937Sjkim    AcpiDmIndent (Level + 1);
170167802Sjkim    AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment");
171151937Sjkim
172151937Sjkim    AcpiDmIndent (Level + 1);
173167802Sjkim    AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length");
174151937Sjkim
175167802Sjkim    /* Insert a descriptor name */
176167802Sjkim
177151937Sjkim    AcpiDmIndent (Level + 1);
178167802Sjkim    AcpiDmDescriptorName ();
179151937Sjkim    AcpiOsPrintf (")\n");
180100966Siwasaki}
181100966Siwasaki
182100966Siwasaki
183100966Siwasaki/*******************************************************************************
184100966Siwasaki *
185100966Siwasaki * FUNCTION:    AcpiDmFixedIoDescriptor
186100966Siwasaki *
187100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
188100966Siwasaki *              Length              - Length of the descriptor in bytes
189100966Siwasaki *              Level               - Current source code indentation level
190100966Siwasaki *
191100966Siwasaki * RETURN:      None
192100966Siwasaki *
193100966Siwasaki * DESCRIPTION: Decode a Fixed IO descriptor
194100966Siwasaki *
195100966Siwasaki ******************************************************************************/
196100966Siwasaki
197100966Siwasakivoid
198100966SiwasakiAcpiDmFixedIoDescriptor (
199151937Sjkim    AML_RESOURCE            *Resource,
200100966Siwasaki    UINT32                  Length,
201100966Siwasaki    UINT32                  Level)
202100966Siwasaki{
203100966Siwasaki
204100966Siwasaki    AcpiDmIndent (Level);
205151937Sjkim    AcpiOsPrintf ("FixedIO (\n");
206151937Sjkim
207151937Sjkim    AcpiDmIndent (Level + 1);
208167802Sjkim    AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address");
209151937Sjkim
210151937Sjkim    AcpiDmIndent (Level + 1);
211167802Sjkim    AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length");
212151937Sjkim
213167802Sjkim    /* Insert a descriptor name */
214167802Sjkim
215151937Sjkim    AcpiDmIndent (Level + 1);
216167802Sjkim    AcpiDmDescriptorName ();
217151937Sjkim    AcpiOsPrintf (")\n");
218100966Siwasaki}
219100966Siwasaki
220100966Siwasaki
221100966Siwasaki/*******************************************************************************
222100966Siwasaki *
223100966Siwasaki * FUNCTION:    AcpiDmStartDependentDescriptor
224100966Siwasaki *
225100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
226100966Siwasaki *              Length              - Length of the descriptor in bytes
227100966Siwasaki *              Level               - Current source code indentation level
228100966Siwasaki *
229100966Siwasaki * RETURN:      None
230100966Siwasaki *
231100966Siwasaki * DESCRIPTION: Decode a Start Dependendent functions descriptor
232100966Siwasaki *
233100966Siwasaki ******************************************************************************/
234100966Siwasaki
235100966Siwasakivoid
236100966SiwasakiAcpiDmStartDependentDescriptor (
237151937Sjkim    AML_RESOURCE            *Resource,
238100966Siwasaki    UINT32                  Length,
239100966Siwasaki    UINT32                  Level)
240100966Siwasaki{
241100966Siwasaki
242100966Siwasaki    AcpiDmIndent (Level);
243100966Siwasaki
244100966Siwasaki    if (Length & 1)
245100966Siwasaki    {
246100966Siwasaki        AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n",
247151937Sjkim            (UINT32) Resource->StartDpf.Flags & 3,
248151937Sjkim            (UINT32) (Resource->StartDpf.Flags >> 2) & 3);
249100966Siwasaki    }
250100966Siwasaki    else
251100966Siwasaki    {
252100966Siwasaki        AcpiOsPrintf ("StartDependentFnNoPri ()\n");
253100966Siwasaki    }
254100966Siwasaki
255100966Siwasaki    AcpiDmIndent (Level);
256100966Siwasaki    AcpiOsPrintf ("{\n");
257100966Siwasaki}
258100966Siwasaki
259100966Siwasaki
260100966Siwasaki/*******************************************************************************
261100966Siwasaki *
262100966Siwasaki * FUNCTION:    AcpiDmEndDependentDescriptor
263100966Siwasaki *
264100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
265100966Siwasaki *              Length              - Length of the descriptor in bytes
266100966Siwasaki *              Level               - Current source code indentation level
267100966Siwasaki *
268100966Siwasaki * RETURN:      None
269100966Siwasaki *
270100966Siwasaki * DESCRIPTION: Decode an End Dependent functions descriptor
271100966Siwasaki *
272100966Siwasaki ******************************************************************************/
273100966Siwasaki
274100966Siwasakivoid
275100966SiwasakiAcpiDmEndDependentDescriptor (
276151937Sjkim    AML_RESOURCE            *Resource,
277100966Siwasaki    UINT32                  Length,
278100966Siwasaki    UINT32                  Level)
279100966Siwasaki{
280100966Siwasaki
281100966Siwasaki    AcpiDmIndent (Level);
282100966Siwasaki    AcpiOsPrintf ("}\n");
283100966Siwasaki    AcpiDmIndent (Level);
284100966Siwasaki    AcpiOsPrintf ("EndDependentFn ()\n");
285100966Siwasaki}
286100966Siwasaki
287100966Siwasaki
288100966Siwasaki/*******************************************************************************
289100966Siwasaki *
290100966Siwasaki * FUNCTION:    AcpiDmVendorSmallDescriptor
291100966Siwasaki *
292100966Siwasaki * PARAMETERS:  Resource            - Pointer to the resource descriptor
293100966Siwasaki *              Length              - Length of the descriptor in bytes
294100966Siwasaki *              Level               - Current source code indentation level
295100966Siwasaki *
296100966Siwasaki * RETURN:      None
297100966Siwasaki *
298100966Siwasaki * DESCRIPTION: Decode a Vendor Small Descriptor
299100966Siwasaki *
300100966Siwasaki ******************************************************************************/
301100966Siwasaki
302100966Siwasakivoid
303100966SiwasakiAcpiDmVendorSmallDescriptor (
304151937Sjkim    AML_RESOURCE            *Resource,
305100966Siwasaki    UINT32                  Length,
306100966Siwasaki    UINT32                  Level)
307100966Siwasaki{
308100966Siwasaki
309167802Sjkim    AcpiDmVendorCommon ("Short",
310167802Sjkim        ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)),
311151937Sjkim        Length, Level);
312100966Siwasaki}
313100966Siwasaki
314100966Siwasaki#endif
315100966Siwasaki
316