Deleted Added
full compact
dmresrcs.c (241973) dmresrcs.c (243347)
1/*******************************************************************************
2 *
3 * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly
4 *
5 ******************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44
45#include <contrib/dev/acpica/include/acpi.h>
46#include <contrib/dev/acpica/include/accommon.h>
47#include <contrib/dev/acpica/include/acdisasm.h>
48
49
50#ifdef ACPI_DISASSEMBLER
51
52#define _COMPONENT ACPI_CA_DEBUGGER
53 ACPI_MODULE_NAME ("dbresrcs")
54
55
56/*******************************************************************************
57 *
58 * FUNCTION: AcpiDmIrqDescriptor
59 *
60 * PARAMETERS: Resource - Pointer to the resource descriptor
61 * Length - Length of the descriptor in bytes
62 * Level - Current source code indentation level
63 *
64 * RETURN: None
65 *
66 * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags()
67 *
68 ******************************************************************************/
69
70void
71AcpiDmIrqDescriptor (
72 AML_RESOURCE *Resource,
73 UINT32 Length,
74 UINT32 Level)
75{
76
77 AcpiDmIndent (Level);
78 AcpiOsPrintf ("%s (",
1/*******************************************************************************
2 *
3 * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly
4 *
5 ******************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2012, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44
45#include <contrib/dev/acpica/include/acpi.h>
46#include <contrib/dev/acpica/include/accommon.h>
47#include <contrib/dev/acpica/include/acdisasm.h>
48
49
50#ifdef ACPI_DISASSEMBLER
51
52#define _COMPONENT ACPI_CA_DEBUGGER
53 ACPI_MODULE_NAME ("dbresrcs")
54
55
56/*******************************************************************************
57 *
58 * FUNCTION: AcpiDmIrqDescriptor
59 *
60 * PARAMETERS: Resource - Pointer to the resource descriptor
61 * Length - Length of the descriptor in bytes
62 * Level - Current source code indentation level
63 *
64 * RETURN: None
65 *
66 * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags()
67 *
68 ******************************************************************************/
69
70void
71AcpiDmIrqDescriptor (
72 AML_RESOURCE *Resource,
73 UINT32 Length,
74 UINT32 Level)
75{
76
77 AcpiDmIndent (Level);
78 AcpiOsPrintf ("%s (",
79 AcpiGbl_IrqDecode [Length & 1]);
79 AcpiGbl_IrqDecode [ACPI_GET_1BIT_FLAG (Length)]);
80
81 /* Decode flags byte if present */
82
83 if (Length & 1)
84 {
85 AcpiOsPrintf ("%s, %s, %s, ",
80
81 /* Decode flags byte if present */
82
83 if (Length & 1)
84 {
85 AcpiOsPrintf ("%s, %s, %s, ",
86 AcpiGbl_HeDecode [Resource->Irq.Flags & 1],
87 AcpiGbl_LlDecode [(Resource->Irq.Flags >> 3) & 1],
88 AcpiGbl_ShrDecode [(Resource->Irq.Flags >> 4) & 1]);
86 AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Irq.Flags)],
87 AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Irq.Flags, 3)],
88 AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Irq.Flags, 4)]);
89 }
90
91 /* Insert a descriptor name */
92
93 AcpiDmDescriptorName ();
94 AcpiOsPrintf (")\n");
95
96 AcpiDmIndent (Level + 1);
97 AcpiDmBitList (Resource->Irq.IrqMask);
98}
99
100
101/*******************************************************************************
102 *
103 * FUNCTION: AcpiDmDmaDescriptor
104 *
105 * PARAMETERS: Resource - Pointer to the resource descriptor
106 * Length - Length of the descriptor in bytes
107 * Level - Current source code indentation level
108 *
109 * RETURN: None
110 *
111 * DESCRIPTION: Decode a DMA descriptor
112 *
113 ******************************************************************************/
114
115void
116AcpiDmDmaDescriptor (
117 AML_RESOURCE *Resource,
118 UINT32 Length,
119 UINT32 Level)
120{
121
122 AcpiDmIndent (Level);
123 AcpiOsPrintf ("DMA (%s, %s, %s, ",
89 }
90
91 /* Insert a descriptor name */
92
93 AcpiDmDescriptorName ();
94 AcpiOsPrintf (")\n");
95
96 AcpiDmIndent (Level + 1);
97 AcpiDmBitList (Resource->Irq.IrqMask);
98}
99
100
101/*******************************************************************************
102 *
103 * FUNCTION: AcpiDmDmaDescriptor
104 *
105 * PARAMETERS: Resource - Pointer to the resource descriptor
106 * Length - Length of the descriptor in bytes
107 * Level - Current source code indentation level
108 *
109 * RETURN: None
110 *
111 * DESCRIPTION: Decode a DMA descriptor
112 *
113 ******************************************************************************/
114
115void
116AcpiDmDmaDescriptor (
117 AML_RESOURCE *Resource,
118 UINT32 Length,
119 UINT32 Level)
120{
121
122 AcpiDmIndent (Level);
123 AcpiOsPrintf ("DMA (%s, %s, %s, ",
124 AcpiGbl_TypDecode [(Resource->Dma.Flags >> 5) & 3],
125 AcpiGbl_BmDecode [(Resource->Dma.Flags >> 2) & 1],
126 AcpiGbl_SizDecode [(Resource->Dma.Flags >> 0) & 3]);
124 AcpiGbl_TypDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Dma.Flags, 5)],
125 AcpiGbl_BmDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Dma.Flags, 2)],
126 AcpiGbl_SizDecode [ACPI_GET_2BIT_FLAG (Resource->Dma.Flags)]);
127
128 /* Insert a descriptor name */
129
130 AcpiDmDescriptorName ();
131 AcpiOsPrintf (")\n");
132
133 AcpiDmIndent (Level + 1);
134 AcpiDmBitList (Resource->Dma.DmaChannelMask);
135}
136
137
138/*******************************************************************************
139 *
140 * FUNCTION: AcpiDmFixedDmaDescriptor
141 *
142 * PARAMETERS: Resource - Pointer to the resource descriptor
143 * Length - Length of the descriptor in bytes
144 * Level - Current source code indentation level
145 *
146 * RETURN: None
147 *
148 * DESCRIPTION: Decode a FixedDMA descriptor
149 *
150 ******************************************************************************/
151
152void
153AcpiDmFixedDmaDescriptor (
154 AML_RESOURCE *Resource,
155 UINT32 Length,
156 UINT32 Level)
157{
158
159 AcpiDmIndent (Level);
160 AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ",
161 Resource->FixedDma.RequestLines,
162 Resource->FixedDma.Channels);
163
164 if (Resource->FixedDma.Width <= 5)
165 {
166 AcpiOsPrintf ("%s, ",
167 AcpiGbl_DtsDecode [Resource->FixedDma.Width]);
168 }
169 else
170 {
171 AcpiOsPrintf ("%X /* INVALID DMA WIDTH */, ", Resource->FixedDma.Width);
172 }
173
174 /* Insert a descriptor name */
175
176 AcpiDmDescriptorName ();
177 AcpiOsPrintf (")\n");
178}
179
180
181/*******************************************************************************
182 *
183 * FUNCTION: AcpiDmIoDescriptor
184 *
185 * PARAMETERS: Resource - Pointer to the resource descriptor
186 * Length - Length of the descriptor in bytes
187 * Level - Current source code indentation level
188 *
189 * RETURN: None
190 *
191 * DESCRIPTION: Decode an IO descriptor
192 *
193 ******************************************************************************/
194
195void
196AcpiDmIoDescriptor (
197 AML_RESOURCE *Resource,
198 UINT32 Length,
199 UINT32 Level)
200{
201
202 AcpiDmIndent (Level);
203 AcpiOsPrintf ("IO (%s,\n",
127
128 /* Insert a descriptor name */
129
130 AcpiDmDescriptorName ();
131 AcpiOsPrintf (")\n");
132
133 AcpiDmIndent (Level + 1);
134 AcpiDmBitList (Resource->Dma.DmaChannelMask);
135}
136
137
138/*******************************************************************************
139 *
140 * FUNCTION: AcpiDmFixedDmaDescriptor
141 *
142 * PARAMETERS: Resource - Pointer to the resource descriptor
143 * Length - Length of the descriptor in bytes
144 * Level - Current source code indentation level
145 *
146 * RETURN: None
147 *
148 * DESCRIPTION: Decode a FixedDMA descriptor
149 *
150 ******************************************************************************/
151
152void
153AcpiDmFixedDmaDescriptor (
154 AML_RESOURCE *Resource,
155 UINT32 Length,
156 UINT32 Level)
157{
158
159 AcpiDmIndent (Level);
160 AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ",
161 Resource->FixedDma.RequestLines,
162 Resource->FixedDma.Channels);
163
164 if (Resource->FixedDma.Width <= 5)
165 {
166 AcpiOsPrintf ("%s, ",
167 AcpiGbl_DtsDecode [Resource->FixedDma.Width]);
168 }
169 else
170 {
171 AcpiOsPrintf ("%X /* INVALID DMA WIDTH */, ", Resource->FixedDma.Width);
172 }
173
174 /* Insert a descriptor name */
175
176 AcpiDmDescriptorName ();
177 AcpiOsPrintf (")\n");
178}
179
180
181/*******************************************************************************
182 *
183 * FUNCTION: AcpiDmIoDescriptor
184 *
185 * PARAMETERS: Resource - Pointer to the resource descriptor
186 * Length - Length of the descriptor in bytes
187 * Level - Current source code indentation level
188 *
189 * RETURN: None
190 *
191 * DESCRIPTION: Decode an IO descriptor
192 *
193 ******************************************************************************/
194
195void
196AcpiDmIoDescriptor (
197 AML_RESOURCE *Resource,
198 UINT32 Length,
199 UINT32 Level)
200{
201
202 AcpiDmIndent (Level);
203 AcpiOsPrintf ("IO (%s,\n",
204 AcpiGbl_IoDecode [(Resource->Io.Flags & 1)]);
204 AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]);
205
206 AcpiDmIndent (Level + 1);
207 AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum");
208
209 AcpiDmIndent (Level + 1);
210 AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum");
211
212 AcpiDmIndent (Level + 1);
213 AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment");
214
215 AcpiDmIndent (Level + 1);
216 AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length");
217
218 /* Insert a descriptor name */
219
220 AcpiDmIndent (Level + 1);
221 AcpiDmDescriptorName ();
222 AcpiOsPrintf (")\n");
223}
224
225
226/*******************************************************************************
227 *
228 * FUNCTION: AcpiDmFixedIoDescriptor
229 *
230 * PARAMETERS: Resource - Pointer to the resource descriptor
231 * Length - Length of the descriptor in bytes
232 * Level - Current source code indentation level
233 *
234 * RETURN: None
235 *
236 * DESCRIPTION: Decode a Fixed IO descriptor
237 *
238 ******************************************************************************/
239
240void
241AcpiDmFixedIoDescriptor (
242 AML_RESOURCE *Resource,
243 UINT32 Length,
244 UINT32 Level)
245{
246
247 AcpiDmIndent (Level);
248 AcpiOsPrintf ("FixedIO (\n");
249
250 AcpiDmIndent (Level + 1);
251 AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address");
252
253 AcpiDmIndent (Level + 1);
254 AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length");
255
256 /* Insert a descriptor name */
257
258 AcpiDmIndent (Level + 1);
259 AcpiDmDescriptorName ();
260 AcpiOsPrintf (")\n");
261}
262
263
264/*******************************************************************************
265 *
266 * FUNCTION: AcpiDmStartDependentDescriptor
267 *
268 * PARAMETERS: Resource - Pointer to the resource descriptor
269 * Length - Length of the descriptor in bytes
270 * Level - Current source code indentation level
271 *
272 * RETURN: None
273 *
274 * DESCRIPTION: Decode a Start Dependendent functions descriptor
275 *
276 ******************************************************************************/
277
278void
279AcpiDmStartDependentDescriptor (
280 AML_RESOURCE *Resource,
281 UINT32 Length,
282 UINT32 Level)
283{
284
285 AcpiDmIndent (Level);
286
287 if (Length & 1)
288 {
289 AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n",
205
206 AcpiDmIndent (Level + 1);
207 AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum");
208
209 AcpiDmIndent (Level + 1);
210 AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum");
211
212 AcpiDmIndent (Level + 1);
213 AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment");
214
215 AcpiDmIndent (Level + 1);
216 AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length");
217
218 /* Insert a descriptor name */
219
220 AcpiDmIndent (Level + 1);
221 AcpiDmDescriptorName ();
222 AcpiOsPrintf (")\n");
223}
224
225
226/*******************************************************************************
227 *
228 * FUNCTION: AcpiDmFixedIoDescriptor
229 *
230 * PARAMETERS: Resource - Pointer to the resource descriptor
231 * Length - Length of the descriptor in bytes
232 * Level - Current source code indentation level
233 *
234 * RETURN: None
235 *
236 * DESCRIPTION: Decode a Fixed IO descriptor
237 *
238 ******************************************************************************/
239
240void
241AcpiDmFixedIoDescriptor (
242 AML_RESOURCE *Resource,
243 UINT32 Length,
244 UINT32 Level)
245{
246
247 AcpiDmIndent (Level);
248 AcpiOsPrintf ("FixedIO (\n");
249
250 AcpiDmIndent (Level + 1);
251 AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address");
252
253 AcpiDmIndent (Level + 1);
254 AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length");
255
256 /* Insert a descriptor name */
257
258 AcpiDmIndent (Level + 1);
259 AcpiDmDescriptorName ();
260 AcpiOsPrintf (")\n");
261}
262
263
264/*******************************************************************************
265 *
266 * FUNCTION: AcpiDmStartDependentDescriptor
267 *
268 * PARAMETERS: Resource - Pointer to the resource descriptor
269 * Length - Length of the descriptor in bytes
270 * Level - Current source code indentation level
271 *
272 * RETURN: None
273 *
274 * DESCRIPTION: Decode a Start Dependendent functions descriptor
275 *
276 ******************************************************************************/
277
278void
279AcpiDmStartDependentDescriptor (
280 AML_RESOURCE *Resource,
281 UINT32 Length,
282 UINT32 Level)
283{
284
285 AcpiDmIndent (Level);
286
287 if (Length & 1)
288 {
289 AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n",
290 (UINT32) Resource->StartDpf.Flags & 3,
291 (UINT32) (Resource->StartDpf.Flags >> 2) & 3);
290 (UINT32) ACPI_GET_2BIT_FLAG (Resource->StartDpf.Flags),
291 (UINT32) ACPI_EXTRACT_2BIT_FLAG (Resource->StartDpf.Flags, 2));
292 }
293 else
294 {
295 AcpiOsPrintf ("StartDependentFnNoPri ()\n");
296 }
297
298 AcpiDmIndent (Level);
299 AcpiOsPrintf ("{\n");
300}
301
302
303/*******************************************************************************
304 *
305 * FUNCTION: AcpiDmEndDependentDescriptor
306 *
307 * PARAMETERS: Resource - Pointer to the resource descriptor
308 * Length - Length of the descriptor in bytes
309 * Level - Current source code indentation level
310 *
311 * RETURN: None
312 *
313 * DESCRIPTION: Decode an End Dependent functions descriptor
314 *
315 ******************************************************************************/
316
317void
318AcpiDmEndDependentDescriptor (
319 AML_RESOURCE *Resource,
320 UINT32 Length,
321 UINT32 Level)
322{
323
324 AcpiDmIndent (Level);
325 AcpiOsPrintf ("}\n");
326 AcpiDmIndent (Level);
327 AcpiOsPrintf ("EndDependentFn ()\n");
328}
329
330
331/*******************************************************************************
332 *
333 * FUNCTION: AcpiDmVendorSmallDescriptor
334 *
335 * PARAMETERS: Resource - Pointer to the resource descriptor
336 * Length - Length of the descriptor in bytes
337 * Level - Current source code indentation level
338 *
339 * RETURN: None
340 *
341 * DESCRIPTION: Decode a Vendor Small Descriptor
342 *
343 ******************************************************************************/
344
345void
346AcpiDmVendorSmallDescriptor (
347 AML_RESOURCE *Resource,
348 UINT32 Length,
349 UINT32 Level)
350{
351
352 AcpiDmVendorCommon ("Short",
353 ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)),
354 Length, Level);
355}
356
357#endif
292 }
293 else
294 {
295 AcpiOsPrintf ("StartDependentFnNoPri ()\n");
296 }
297
298 AcpiDmIndent (Level);
299 AcpiOsPrintf ("{\n");
300}
301
302
303/*******************************************************************************
304 *
305 * FUNCTION: AcpiDmEndDependentDescriptor
306 *
307 * PARAMETERS: Resource - Pointer to the resource descriptor
308 * Length - Length of the descriptor in bytes
309 * Level - Current source code indentation level
310 *
311 * RETURN: None
312 *
313 * DESCRIPTION: Decode an End Dependent functions descriptor
314 *
315 ******************************************************************************/
316
317void
318AcpiDmEndDependentDescriptor (
319 AML_RESOURCE *Resource,
320 UINT32 Length,
321 UINT32 Level)
322{
323
324 AcpiDmIndent (Level);
325 AcpiOsPrintf ("}\n");
326 AcpiDmIndent (Level);
327 AcpiOsPrintf ("EndDependentFn ()\n");
328}
329
330
331/*******************************************************************************
332 *
333 * FUNCTION: AcpiDmVendorSmallDescriptor
334 *
335 * PARAMETERS: Resource - Pointer to the resource descriptor
336 * Length - Length of the descriptor in bytes
337 * Level - Current source code indentation level
338 *
339 * RETURN: None
340 *
341 * DESCRIPTION: Decode a Vendor Small Descriptor
342 *
343 ******************************************************************************/
344
345void
346AcpiDmVendorSmallDescriptor (
347 AML_RESOURCE *Resource,
348 UINT32 Length,
349 UINT32 Level)
350{
351
352 AcpiDmVendorCommon ("Short",
353 ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)),
354 Length, Level);
355}
356
357#endif