blob: 2f8990845b2db8418d4ca19f6c417d607202b3cf [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*******************************************************************************
2 *
3 * Module Name: rsdump - Functions to display the resource structures.
4 *
5 ******************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2005, R. Byron Moore
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
Linus Torvalds1da177e2005-04-16 15:20:36 -070044#include <acpi/acpi.h>
45#include <acpi/acresrc.h>
46
47#define _COMPONENT ACPI_RESOURCES
Len Brown4be44fc2005-08-05 00:44:28 -040048ACPI_MODULE_NAME("rsdump")
Robert Moore6f42ccf2005-05-13 00:00:00 -040049
50#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
Robert Moore44f6c012005-04-18 22:49:35 -040051/* Local prototypes */
Robert Moorebda663d2005-09-16 16:51:15 -040052static void acpi_rs_out_string(char *title, char *value);
53
54static void acpi_rs_out_integer8(char *title, u8 value);
55
56static void acpi_rs_out_integer16(char *title, u16 value);
57
58static void acpi_rs_out_integer32(char *title, u32 value);
59
60static void acpi_rs_out_integer64(char *title, u64 value);
61
62static void acpi_rs_out_title(char *title);
63
64static void acpi_rs_dump_byte_list(u32 length, u8 * data);
65
66static void acpi_rs_dump_dword_list(u32 length, u32 * data);
67
68static void acpi_rs_dump_short_byte_list(u32 length, u32 * data);
69
70static void
71acpi_rs_dump_resource_source(struct acpi_resource_source *resource_source);
72
73static void acpi_rs_dump_address_common(union acpi_resource_data *resource);
74
Linus Torvalds1da177e2005-04-16 15:20:36 -070075/*******************************************************************************
76 *
Robert Moorebda663d2005-09-16 16:51:15 -040077 * FUNCTION: acpi_rs_out*
Linus Torvalds1da177e2005-04-16 15:20:36 -070078 *
Robert Moorebda663d2005-09-16 16:51:15 -040079 * PARAMETERS: Title - Name of the resource field
80 * Value - Value of the resource field
Linus Torvalds1da177e2005-04-16 15:20:36 -070081 *
82 * RETURN: None
83 *
Robert Moorebda663d2005-09-16 16:51:15 -040084 * DESCRIPTION: Miscellaneous helper functions to consistently format the
85 * output of the resource dump routines
Linus Torvalds1da177e2005-04-16 15:20:36 -070086 *
87 ******************************************************************************/
88
Robert Moorebda663d2005-09-16 16:51:15 -040089static void acpi_rs_out_string(char *title, char *value)
Linus Torvalds1da177e2005-04-16 15:20:36 -070090{
Bob Moore50eca3e2005-09-30 19:03:00 -040091 acpi_os_printf("%27s : %s\n", title, value);
Robert Moorebda663d2005-09-16 16:51:15 -040092}
Linus Torvalds1da177e2005-04-16 15:20:36 -070093
Robert Moorebda663d2005-09-16 16:51:15 -040094static void acpi_rs_out_integer8(char *title, u8 value)
95{
Bob Moore50eca3e2005-09-30 19:03:00 -040096 acpi_os_printf("%27s : %2.2X\n", title, value);
Robert Moorebda663d2005-09-16 16:51:15 -040097}
Linus Torvalds1da177e2005-04-16 15:20:36 -070098
Robert Moorebda663d2005-09-16 16:51:15 -040099static void acpi_rs_out_integer16(char *title, u16 value)
100{
Bob Moore50eca3e2005-09-30 19:03:00 -0400101 acpi_os_printf("%27s : %4.4X\n", title, value);
Robert Moorebda663d2005-09-16 16:51:15 -0400102}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700103
Robert Moorebda663d2005-09-16 16:51:15 -0400104static void acpi_rs_out_integer32(char *title, u32 value)
105{
Bob Moore50eca3e2005-09-30 19:03:00 -0400106 acpi_os_printf("%27s : %8.8X\n", title, value);
Robert Moorebda663d2005-09-16 16:51:15 -0400107}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700108
Robert Moorebda663d2005-09-16 16:51:15 -0400109static void acpi_rs_out_integer64(char *title, u64 value)
110{
Bob Moore50eca3e2005-09-30 19:03:00 -0400111 acpi_os_printf("%27s : %8.8X%8.8X\n", title, ACPI_FORMAT_UINT64(value));
Robert Moorebda663d2005-09-16 16:51:15 -0400112}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700113
Robert Moorebda663d2005-09-16 16:51:15 -0400114static void acpi_rs_out_title(char *title)
115{
Bob Moore50eca3e2005-09-30 19:03:00 -0400116 acpi_os_printf("%27s : ", title);
Robert Moorebda663d2005-09-16 16:51:15 -0400117}
Linus Torvalds1da177e2005-04-16 15:20:36 -0700118
Robert Moorebda663d2005-09-16 16:51:15 -0400119/*******************************************************************************
120 *
121 * FUNCTION: acpi_rs_dump*List
122 *
123 * PARAMETERS: Length - Number of elements in the list
124 * Data - Start of the list
125 *
126 * RETURN: None
127 *
128 * DESCRIPTION: Miscellaneous functions to dump lists of raw data
129 *
130 ******************************************************************************/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700131
Robert Moorebda663d2005-09-16 16:51:15 -0400132static void acpi_rs_dump_byte_list(u32 length, u8 * data)
133{
134 u32 i;
135
136 for (i = 0; i < length; i++) {
Bob Moore50eca3e2005-09-30 19:03:00 -0400137 acpi_os_printf("%25s%2.2X : %2.2X\n", "Byte", i, data[i]);
Robert Moorebda663d2005-09-16 16:51:15 -0400138 }
139}
140
141static void acpi_rs_dump_dword_list(u32 length, u32 * data)
142{
143 u32 i;
144
145 for (i = 0; i < length; i++) {
Bob Moore50eca3e2005-09-30 19:03:00 -0400146 acpi_os_printf("%25s%2.2X : %8.8X\n", "Dword", i, data[i]);
Robert Moorebda663d2005-09-16 16:51:15 -0400147 }
148}
149
150static void acpi_rs_dump_short_byte_list(u32 length, u32 * data)
151{
152 u32 i;
153
154 for (i = 0; i < length; i++) {
155 acpi_os_printf("%X ", data[i]);
156 }
157 acpi_os_printf("\n");
158}
159
Bob Moore50eca3e2005-09-30 19:03:00 -0400160static void acpi_rs_dump_memory_attribute(u32 read_write_attribute)
161{
162
163 acpi_rs_out_string("Read/Write Attribute",
164 ACPI_READ_WRITE_MEMORY == read_write_attribute ?
165 "Read/Write" : "Read-Only");
166}
167
Robert Moorebda663d2005-09-16 16:51:15 -0400168/*******************************************************************************
169 *
170 * FUNCTION: acpi_rs_dump_resource_source
171 *
172 * PARAMETERS: resource_source - Pointer to a Resource Source struct
173 *
174 * RETURN: None
175 *
176 * DESCRIPTION: Common routine for dumping the optional resource_source and the
177 * corresponding resource_source_index.
178 *
179 ******************************************************************************/
180
181static void
182acpi_rs_dump_resource_source(struct acpi_resource_source *resource_source)
183{
Bob Moore50eca3e2005-09-30 19:03:00 -0400184 ACPI_FUNCTION_ENTRY();
Robert Moorebda663d2005-09-16 16:51:15 -0400185
186 if (resource_source->index == 0xFF) {
187 return;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700188 }
189
Robert Moorebda663d2005-09-16 16:51:15 -0400190 acpi_rs_out_integer8("Resource Source Index",
191 (u8) resource_source->index);
192
193 acpi_rs_out_string("Resource Source",
194 resource_source->string_ptr ?
195 resource_source->string_ptr : "[Not Specified]");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700196}
197
Linus Torvalds1da177e2005-04-16 15:20:36 -0700198/*******************************************************************************
199 *
Robert Moorebda663d2005-09-16 16:51:15 -0400200 * FUNCTION: acpi_rs_dump_address_common
Linus Torvalds1da177e2005-04-16 15:20:36 -0700201 *
Robert Moorebda663d2005-09-16 16:51:15 -0400202 * PARAMETERS: Resource - Pointer to an internal resource descriptor
Linus Torvalds1da177e2005-04-16 15:20:36 -0700203 *
204 * RETURN: None
205 *
Robert Moorebda663d2005-09-16 16:51:15 -0400206 * DESCRIPTION: Dump the fields that are common to all Address resource
207 * descriptors
Linus Torvalds1da177e2005-04-16 15:20:36 -0700208 *
209 ******************************************************************************/
210
Robert Moorebda663d2005-09-16 16:51:15 -0400211static void acpi_rs_dump_address_common(union acpi_resource_data *resource)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700212{
Len Brown4be44fc2005-08-05 00:44:28 -0400213 ACPI_FUNCTION_ENTRY();
Linus Torvalds1da177e2005-04-16 15:20:36 -0700214
Robert Moorebda663d2005-09-16 16:51:15 -0400215 /* Decode the type-specific flags */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700216
Robert Moorebda663d2005-09-16 16:51:15 -0400217 switch (resource->address.resource_type) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700218 case ACPI_MEMORY_RANGE:
219
Robert Moorebda663d2005-09-16 16:51:15 -0400220 acpi_rs_out_string("Resource Type", "Memory Range");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700221
Robert Moorebda663d2005-09-16 16:51:15 -0400222 acpi_rs_out_title("Type-Specific Flags");
223
224 switch (resource->address.attribute.memory.cache_attribute) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700225 case ACPI_NON_CACHEABLE_MEMORY:
Robert Moorebda663d2005-09-16 16:51:15 -0400226 acpi_os_printf("Noncacheable memory\n");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700227 break;
228
229 case ACPI_CACHABLE_MEMORY:
Robert Moorebda663d2005-09-16 16:51:15 -0400230 acpi_os_printf("Cacheable memory\n");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700231 break;
232
233 case ACPI_WRITE_COMBINING_MEMORY:
Robert Moorebda663d2005-09-16 16:51:15 -0400234 acpi_os_printf("Write-combining memory\n");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700235 break;
236
237 case ACPI_PREFETCHABLE_MEMORY:
Robert Moorebda663d2005-09-16 16:51:15 -0400238 acpi_os_printf("Prefetchable memory\n");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700239 break;
240
241 default:
Robert Moorebda663d2005-09-16 16:51:15 -0400242 acpi_os_printf("Invalid cache attribute\n");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700243 break;
244 }
245
Bob Moore50eca3e2005-09-30 19:03:00 -0400246 acpi_rs_dump_memory_attribute(resource->address.attribute.
247 memory.read_write_attribute);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700248 break;
249
250 case ACPI_IO_RANGE:
251
Robert Moorebda663d2005-09-16 16:51:15 -0400252 acpi_rs_out_string("Resource Type", "I/O Range");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700253
Robert Moorebda663d2005-09-16 16:51:15 -0400254 acpi_rs_out_title("Type-Specific Flags");
255
256 switch (resource->address.attribute.io.range_attribute) {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700257 case ACPI_NON_ISA_ONLY_RANGES:
Robert Moorebda663d2005-09-16 16:51:15 -0400258 acpi_os_printf("Non-ISA I/O Addresses\n");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700259 break;
260
261 case ACPI_ISA_ONLY_RANGES:
Robert Moorebda663d2005-09-16 16:51:15 -0400262 acpi_os_printf("ISA I/O Addresses\n");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700263 break;
264
265 case ACPI_ENTIRE_RANGE:
Robert Moorebda663d2005-09-16 16:51:15 -0400266 acpi_os_printf("ISA and non-ISA I/O Addresses\n");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700267 break;
268
269 default:
Robert Moorebda663d2005-09-16 16:51:15 -0400270 acpi_os_printf("Invalid range attribute\n");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700271 break;
272 }
273
Robert Moorebda663d2005-09-16 16:51:15 -0400274 acpi_rs_out_string("Translation Attribute",
275 ACPI_SPARSE_TRANSLATION ==
276 resource->address.attribute.io.
277 translation_attribute ? "Sparse Translation"
278 : "Dense Translation");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700279 break;
280
281 case ACPI_BUS_NUMBER_RANGE:
282
Robert Moorebda663d2005-09-16 16:51:15 -0400283 acpi_rs_out_string("Resource Type", "Bus Number Range");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700284 break;
285
286 default:
287
Robert Moorebda663d2005-09-16 16:51:15 -0400288 acpi_rs_out_integer8("Resource Type",
289 (u8) resource->address.resource_type);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700290 break;
291 }
292
Robert Moorebda663d2005-09-16 16:51:15 -0400293 /* Decode the general flags */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700294
Robert Moorebda663d2005-09-16 16:51:15 -0400295 acpi_rs_out_string("Resource",
296 ACPI_CONSUMER ==
297 resource->address.
298 producer_consumer ? "Consumer" : "Producer");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700299
Robert Moorebda663d2005-09-16 16:51:15 -0400300 acpi_rs_out_string("Decode",
301 ACPI_SUB_DECODE == resource->address.decode ?
302 "Subtractive" : "Positive");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700303
Robert Moorebda663d2005-09-16 16:51:15 -0400304 acpi_rs_out_string("Min Address",
305 ACPI_ADDRESS_FIXED ==
306 resource->address.
307 min_address_fixed ? "Fixed" : "Not Fixed");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700308
Robert Moorebda663d2005-09-16 16:51:15 -0400309 acpi_rs_out_string("Max Address",
310 ACPI_ADDRESS_FIXED ==
311 resource->address.
312 max_address_fixed ? "Fixed" : "Not Fixed");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700313}
314
Linus Torvalds1da177e2005-04-16 15:20:36 -0700315/*******************************************************************************
316 *
317 * FUNCTION: acpi_rs_dump_resource_list
318 *
Robert Moorebda663d2005-09-16 16:51:15 -0400319 * PARAMETERS: resource_list - Pointer to a resource descriptor list
Linus Torvalds1da177e2005-04-16 15:20:36 -0700320 *
321 * RETURN: None
322 *
323 * DESCRIPTION: Dispatches the structure to the correct dump routine.
324 *
325 ******************************************************************************/
326
Robert Moorebda663d2005-09-16 16:51:15 -0400327void acpi_rs_dump_resource_list(struct acpi_resource *resource_list)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700328{
Robert Moorebda663d2005-09-16 16:51:15 -0400329 u32 count = 0;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700330
Len Brown4be44fc2005-08-05 00:44:28 -0400331 ACPI_FUNCTION_ENTRY();
Linus Torvalds1da177e2005-04-16 15:20:36 -0700332
Robert Moorebda663d2005-09-16 16:51:15 -0400333 if (!(acpi_dbg_level & ACPI_LV_RESOURCES)
334 || !(_COMPONENT & acpi_dbg_layer)) {
335 return;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700336 }
337
Robert Moorebda663d2005-09-16 16:51:15 -0400338 /* Dump all resource descriptors in the list */
339
340 while (resource_list) {
341 acpi_os_printf("\n[%02X] ", count);
342
343 /* Validate Type before dispatch */
344
Bob Moore50eca3e2005-09-30 19:03:00 -0400345 if (resource_list->type > ACPI_RESOURCE_TYPE_MAX) {
Robert Moorebda663d2005-09-16 16:51:15 -0400346 acpi_os_printf
347 ("Invalid descriptor type (%X) in resource list\n",
348 resource_list->type);
349 return;
350 }
351
352 /* Dump the resource descriptor */
353
354 acpi_gbl_dump_resource_dispatch[resource_list->
355 type] (&resource_list->data);
356
357 /* Exit on end tag */
358
Bob Moore50eca3e2005-09-30 19:03:00 -0400359 if (resource_list->type == ACPI_RESOURCE_TYPE_END_TAG) {
Robert Moorebda663d2005-09-16 16:51:15 -0400360 return;
361 }
362
363 /* Get the next resource structure */
364
365 resource_list =
366 ACPI_PTR_ADD(struct acpi_resource, resource_list,
367 resource_list->length);
368 count++;
369 }
370}
371
372/*******************************************************************************
373 *
374 * FUNCTION: acpi_rs_dump_irq
375 *
376 * PARAMETERS: Resource - Pointer to an internal resource descriptor
377 *
378 * RETURN: None
379 *
380 * DESCRIPTION: Dump the field names and values of the resource descriptor
381 *
382 ******************************************************************************/
383
Bob Moore50eca3e2005-09-30 19:03:00 -0400384void acpi_rs_dump_irq(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400385{
386 ACPI_FUNCTION_ENTRY();
387
388 acpi_os_printf("IRQ Resource\n");
389
390 acpi_rs_out_string("Triggering",
391 ACPI_LEVEL_SENSITIVE ==
Bob Moore50eca3e2005-09-30 19:03:00 -0400392 resource->irq.triggering ? "Level" : "Edge");
Robert Moorebda663d2005-09-16 16:51:15 -0400393
394 acpi_rs_out_string("Active",
395 ACPI_ACTIVE_LOW ==
Bob Moore50eca3e2005-09-30 19:03:00 -0400396 resource->irq.polarity ? "Low" : "High");
Robert Moorebda663d2005-09-16 16:51:15 -0400397
398 acpi_rs_out_string("Sharing",
399 ACPI_SHARED ==
Bob Moore50eca3e2005-09-30 19:03:00 -0400400 resource->irq.sharable ? "Shared" : "Exclusive");
Robert Moorebda663d2005-09-16 16:51:15 -0400401
402 acpi_rs_out_integer8("Interrupt Count",
Bob Moore50eca3e2005-09-30 19:03:00 -0400403 (u8) resource->irq.interrupt_count);
Robert Moorebda663d2005-09-16 16:51:15 -0400404
405 acpi_rs_out_title("Interrupt List");
Bob Moore50eca3e2005-09-30 19:03:00 -0400406 acpi_rs_dump_short_byte_list(resource->irq.interrupt_count,
Robert Moorebda663d2005-09-16 16:51:15 -0400407 resource->irq.interrupts);
408}
409
410/*******************************************************************************
411 *
412 * FUNCTION: acpi_rs_dump_dma
413 *
414 * PARAMETERS: Resource - Pointer to an internal resource descriptor
415 *
416 * RETURN: None
417 *
418 * DESCRIPTION: Dump the field names and values of the resource descriptor
419 *
420 ******************************************************************************/
421
Bob Moore50eca3e2005-09-30 19:03:00 -0400422void acpi_rs_dump_dma(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400423{
424 ACPI_FUNCTION_ENTRY();
425
426 acpi_os_printf("DMA Resource\n");
427
428 acpi_rs_out_title("DMA Type");
429 switch (resource->dma.type) {
430 case ACPI_COMPATIBILITY:
431 acpi_os_printf("Compatibility mode\n");
432 break;
433
434 case ACPI_TYPE_A:
435 acpi_os_printf("Type A\n");
436 break;
437
438 case ACPI_TYPE_B:
439 acpi_os_printf("Type B\n");
440 break;
441
442 case ACPI_TYPE_F:
443 acpi_os_printf("Type F\n");
444 break;
445
446 default:
447 acpi_os_printf("**** Invalid DMA type\n");
448 break;
449 }
450
451 acpi_rs_out_string("Bus Master",
452 ACPI_BUS_MASTER ==
453 resource->dma.bus_master ? "Yes" : "No");
454
455 acpi_rs_out_title("Transfer Type");
456 switch (resource->dma.transfer) {
457 case ACPI_TRANSFER_8:
458 acpi_os_printf("8-bit transfers only\n");
459 break;
460
461 case ACPI_TRANSFER_8_16:
462 acpi_os_printf("8-bit and 16-bit transfers\n");
463 break;
464
465 case ACPI_TRANSFER_16:
466 acpi_os_printf("16-bit transfers only\n");
467 break;
468
469 default:
470 acpi_os_printf("**** Invalid transfer preference\n");
471 break;
472 }
473
474 acpi_rs_out_integer8("DMA Channel Count",
Bob Moore50eca3e2005-09-30 19:03:00 -0400475 (u8) resource->dma.channel_count);
Robert Moorebda663d2005-09-16 16:51:15 -0400476
477 acpi_rs_out_title("Channel List");
Bob Moore50eca3e2005-09-30 19:03:00 -0400478 acpi_rs_dump_short_byte_list(resource->dma.channel_count,
Robert Moorebda663d2005-09-16 16:51:15 -0400479 resource->dma.channels);
480}
481
482/*******************************************************************************
483 *
Bob Moore50eca3e2005-09-30 19:03:00 -0400484 * FUNCTION: acpi_rs_dump_start_dpf
Robert Moorebda663d2005-09-16 16:51:15 -0400485 *
486 * PARAMETERS: Resource - Pointer to an internal resource descriptor
487 *
488 * RETURN: None
489 *
490 * DESCRIPTION: Dump the field names and values of the resource descriptor
491 *
492 ******************************************************************************/
493
Bob Moore50eca3e2005-09-30 19:03:00 -0400494void acpi_rs_dump_start_dpf(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400495{
496 ACPI_FUNCTION_ENTRY();
497
498 acpi_os_printf("Start Dependent Functions Resource\n");
499
500 acpi_rs_out_title("Compatibility Priority");
501 switch (resource->start_dpf.compatibility_priority) {
502 case ACPI_GOOD_CONFIGURATION:
503 acpi_os_printf("Good configuration\n");
504 break;
505
506 case ACPI_ACCEPTABLE_CONFIGURATION:
507 acpi_os_printf("Acceptable configuration\n");
508 break;
509
510 case ACPI_SUB_OPTIMAL_CONFIGURATION:
511 acpi_os_printf("Sub-optimal configuration\n");
512 break;
513
514 default:
515 acpi_os_printf("**** Invalid compatibility priority\n");
516 break;
517 }
518
519 acpi_rs_out_title("Performance/Robustness");
520 switch (resource->start_dpf.performance_robustness) {
521 case ACPI_GOOD_CONFIGURATION:
522 acpi_os_printf("Good configuration\n");
523 break;
524
525 case ACPI_ACCEPTABLE_CONFIGURATION:
526 acpi_os_printf("Acceptable configuration\n");
527 break;
528
529 case ACPI_SUB_OPTIMAL_CONFIGURATION:
530 acpi_os_printf("Sub-optimal configuration\n");
531 break;
532
533 default:
534 acpi_os_printf
535 ("**** Invalid performance robustness preference\n");
536 break;
537 }
538}
539
540/*******************************************************************************
541 *
542 * FUNCTION: acpi_rs_dump_io
543 *
544 * PARAMETERS: Resource - Pointer to an internal resource descriptor
545 *
546 * RETURN: None
547 *
548 * DESCRIPTION: Dump the field names and values of the resource descriptor
549 *
550 ******************************************************************************/
551
Bob Moore50eca3e2005-09-30 19:03:00 -0400552void acpi_rs_dump_io(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400553{
554 ACPI_FUNCTION_ENTRY();
555
556 acpi_os_printf("I/O Resource\n");
557
558 acpi_rs_out_string("Decode",
559 ACPI_DECODE_16 ==
560 resource->io.io_decode ? "16-bit" : "10-bit");
561
Bob Moore50eca3e2005-09-30 19:03:00 -0400562 acpi_rs_out_integer32("Address Minimum", resource->io.minimum);
Robert Moorebda663d2005-09-16 16:51:15 -0400563
Bob Moore50eca3e2005-09-30 19:03:00 -0400564 acpi_rs_out_integer32("Address Maximum", resource->io.maximum);
Robert Moorebda663d2005-09-16 16:51:15 -0400565
566 acpi_rs_out_integer32("Alignment", resource->io.alignment);
567
Bob Moore50eca3e2005-09-30 19:03:00 -0400568 acpi_rs_out_integer32("Address Length", resource->io.address_length);
Robert Moorebda663d2005-09-16 16:51:15 -0400569}
570
571/*******************************************************************************
572 *
573 * FUNCTION: acpi_rs_dump_fixed_io
574 *
575 * PARAMETERS: Resource - Pointer to an internal resource descriptor
576 *
577 * RETURN: None
578 *
579 * DESCRIPTION: Dump the field names and values of the resource descriptor
580 *
581 ******************************************************************************/
582
Bob Moore50eca3e2005-09-30 19:03:00 -0400583void acpi_rs_dump_fixed_io(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400584{
585 ACPI_FUNCTION_ENTRY();
586
587 acpi_os_printf("Fixed I/O Resource\n");
588
Bob Moore50eca3e2005-09-30 19:03:00 -0400589 acpi_rs_out_integer32("Address", resource->fixed_io.address);
Robert Moorebda663d2005-09-16 16:51:15 -0400590
Bob Moore50eca3e2005-09-30 19:03:00 -0400591 acpi_rs_out_integer32("Address Length",
592 resource->fixed_io.address_length);
Robert Moorebda663d2005-09-16 16:51:15 -0400593}
594
595/*******************************************************************************
596 *
Bob Moore50eca3e2005-09-30 19:03:00 -0400597 * FUNCTION: acpi_rs_dump_vendor
Robert Moorebda663d2005-09-16 16:51:15 -0400598 *
599 * PARAMETERS: Resource - Pointer to an internal resource descriptor
600 *
601 * RETURN: None
602 *
603 * DESCRIPTION: Dump the field names and values of the resource descriptor
604 *
605 ******************************************************************************/
606
Bob Moore50eca3e2005-09-30 19:03:00 -0400607void acpi_rs_dump_vendor(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400608{
609 ACPI_FUNCTION_ENTRY();
610
611 acpi_os_printf("Vendor Specific Resource\n");
612
Bob Moore50eca3e2005-09-30 19:03:00 -0400613 acpi_rs_out_integer16("Length", (u16) resource->vendor.byte_length);
Robert Moorebda663d2005-09-16 16:51:15 -0400614
Bob Moore50eca3e2005-09-30 19:03:00 -0400615 acpi_rs_dump_byte_list(resource->vendor.byte_length,
616 resource->vendor.byte_data);
Robert Moorebda663d2005-09-16 16:51:15 -0400617}
618
619/*******************************************************************************
620 *
621 * FUNCTION: acpi_rs_dump_memory24
622 *
623 * PARAMETERS: Resource - Pointer to an internal resource descriptor
624 *
625 * RETURN: None
626 *
627 * DESCRIPTION: Dump the field names and values of the resource descriptor
628 *
629 ******************************************************************************/
630
Bob Moore50eca3e2005-09-30 19:03:00 -0400631void acpi_rs_dump_memory24(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400632{
633 ACPI_FUNCTION_ENTRY();
634
635 acpi_os_printf("24-Bit Memory Range Resource\n");
636
Bob Moore50eca3e2005-09-30 19:03:00 -0400637 acpi_rs_dump_memory_attribute(resource->memory24.read_write_attribute);
Robert Moorebda663d2005-09-16 16:51:15 -0400638
Bob Moore50eca3e2005-09-30 19:03:00 -0400639 acpi_rs_out_integer16("Address Minimum",
640 (u16) resource->memory24.minimum);
Robert Moorebda663d2005-09-16 16:51:15 -0400641
Bob Moore50eca3e2005-09-30 19:03:00 -0400642 acpi_rs_out_integer16("Address Maximum",
643 (u16) resource->memory24.maximum);
Robert Moorebda663d2005-09-16 16:51:15 -0400644
645 acpi_rs_out_integer16("Alignment", (u16) resource->memory24.alignment);
646
Bob Moore50eca3e2005-09-30 19:03:00 -0400647 acpi_rs_out_integer16("Address Length",
648 (u16) resource->memory24.address_length);
Robert Moorebda663d2005-09-16 16:51:15 -0400649}
650
651/*******************************************************************************
652 *
653 * FUNCTION: acpi_rs_dump_memory32
654 *
655 * PARAMETERS: Resource - Pointer to an internal resource descriptor
656 *
657 * RETURN: None
658 *
659 * DESCRIPTION: Dump the field names and values of the resource descriptor
660 *
661 ******************************************************************************/
662
Bob Moore50eca3e2005-09-30 19:03:00 -0400663void acpi_rs_dump_memory32(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400664{
665 ACPI_FUNCTION_ENTRY();
666
667 acpi_os_printf("32-Bit Memory Range Resource\n");
668
Bob Moore50eca3e2005-09-30 19:03:00 -0400669 acpi_rs_dump_memory_attribute(resource->memory32.read_write_attribute);
Robert Moorebda663d2005-09-16 16:51:15 -0400670
Bob Moore50eca3e2005-09-30 19:03:00 -0400671 acpi_rs_out_integer32("Address Minimum", resource->memory32.minimum);
Robert Moorebda663d2005-09-16 16:51:15 -0400672
Bob Moore50eca3e2005-09-30 19:03:00 -0400673 acpi_rs_out_integer32("Address Maximum", resource->memory32.maximum);
Robert Moorebda663d2005-09-16 16:51:15 -0400674
675 acpi_rs_out_integer32("Alignment", resource->memory32.alignment);
676
Bob Moore50eca3e2005-09-30 19:03:00 -0400677 acpi_rs_out_integer32("Address Length",
678 resource->memory32.address_length);
Robert Moorebda663d2005-09-16 16:51:15 -0400679}
680
681/*******************************************************************************
682 *
683 * FUNCTION: acpi_rs_dump_fixed_memory32
684 *
685 * PARAMETERS: Resource - Pointer to an internal resource descriptor
686 *
687 * RETURN:
688 *
689 * DESCRIPTION: Dump the field names and values of the resource descriptor
690 *
691 ******************************************************************************/
692
Bob Moore50eca3e2005-09-30 19:03:00 -0400693void acpi_rs_dump_fixed_memory32(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400694{
695 ACPI_FUNCTION_ENTRY();
696
697 acpi_os_printf("32-Bit Fixed Location Memory Range Resource\n");
698
Bob Moore50eca3e2005-09-30 19:03:00 -0400699 acpi_rs_dump_memory_attribute(resource->fixed_memory32.
700 read_write_attribute);
Robert Moorebda663d2005-09-16 16:51:15 -0400701
Bob Moore50eca3e2005-09-30 19:03:00 -0400702 acpi_rs_out_integer32("Address", resource->fixed_memory32.address);
Robert Moorebda663d2005-09-16 16:51:15 -0400703
Bob Moore50eca3e2005-09-30 19:03:00 -0400704 acpi_rs_out_integer32("Address Length",
705 resource->fixed_memory32.address_length);
Robert Moorebda663d2005-09-16 16:51:15 -0400706}
707
708/*******************************************************************************
709 *
710 * FUNCTION: acpi_rs_dump_address16
711 *
712 * PARAMETERS: Resource - Pointer to an internal resource descriptor
713 *
714 * RETURN: None
715 *
716 * DESCRIPTION: Dump the field names and values of the resource descriptor
717 *
718 ******************************************************************************/
719
Bob Moore50eca3e2005-09-30 19:03:00 -0400720void acpi_rs_dump_address16(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400721{
722 ACPI_FUNCTION_ENTRY();
723
Bob Moore50eca3e2005-09-30 19:03:00 -0400724 acpi_os_printf("16-Bit WORD Address Space Resource\n");
Robert Moorebda663d2005-09-16 16:51:15 -0400725
726 acpi_rs_dump_address_common(resource);
727
728 acpi_rs_out_integer16("Granularity",
729 (u16) resource->address16.granularity);
730
Bob Moore50eca3e2005-09-30 19:03:00 -0400731 acpi_rs_out_integer16("Address Minimum",
732 (u16) resource->address16.minimum);
Robert Moorebda663d2005-09-16 16:51:15 -0400733
Bob Moore50eca3e2005-09-30 19:03:00 -0400734 acpi_rs_out_integer16("Address Maximum",
735 (u16) resource->address16.maximum);
Robert Moorebda663d2005-09-16 16:51:15 -0400736
Bob Moore50eca3e2005-09-30 19:03:00 -0400737 acpi_rs_out_integer16("Translation Offset",
738 (u16) resource->address16.translation_offset);
Robert Moorebda663d2005-09-16 16:51:15 -0400739
740 acpi_rs_out_integer16("Address Length",
741 (u16) resource->address16.address_length);
742
743 acpi_rs_dump_resource_source(&resource->address16.resource_source);
744}
745
746/*******************************************************************************
747 *
748 * FUNCTION: acpi_rs_dump_address32
749 *
750 * PARAMETERS: Resource - Pointer to an internal resource descriptor
751 *
752 * RETURN: None
753 *
754 * DESCRIPTION: Dump the field names and values of the resource descriptor
755 *
756 ******************************************************************************/
757
Bob Moore50eca3e2005-09-30 19:03:00 -0400758void acpi_rs_dump_address32(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400759{
760 ACPI_FUNCTION_ENTRY();
761
Bob Moore50eca3e2005-09-30 19:03:00 -0400762 acpi_os_printf("32-Bit DWORD Address Space Resource\n");
Robert Moorebda663d2005-09-16 16:51:15 -0400763
764 acpi_rs_dump_address_common(resource);
765
766 acpi_rs_out_integer32("Granularity", resource->address32.granularity);
767
Bob Moore50eca3e2005-09-30 19:03:00 -0400768 acpi_rs_out_integer32("Address Minimum", resource->address32.minimum);
Robert Moorebda663d2005-09-16 16:51:15 -0400769
Bob Moore50eca3e2005-09-30 19:03:00 -0400770 acpi_rs_out_integer32("Address Maximum", resource->address32.maximum);
Robert Moorebda663d2005-09-16 16:51:15 -0400771
Bob Moore50eca3e2005-09-30 19:03:00 -0400772 acpi_rs_out_integer32("Translation Offset",
773 resource->address32.translation_offset);
Robert Moorebda663d2005-09-16 16:51:15 -0400774
775 acpi_rs_out_integer32("Address Length",
776 resource->address32.address_length);
777
778 acpi_rs_dump_resource_source(&resource->address32.resource_source);
779}
780
781/*******************************************************************************
782 *
783 * FUNCTION: acpi_rs_dump_address64
784 *
785 * PARAMETERS: Resource - Pointer to an internal resource descriptor
786 *
787 * RETURN: None
788 *
789 * DESCRIPTION: Dump the field names and values of the resource descriptor
790 *
791 ******************************************************************************/
792
Bob Moore50eca3e2005-09-30 19:03:00 -0400793void acpi_rs_dump_address64(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400794{
795 ACPI_FUNCTION_ENTRY();
796
Bob Moore50eca3e2005-09-30 19:03:00 -0400797 acpi_os_printf("64-Bit QWORD Address Space Resource\n");
Robert Moorebda663d2005-09-16 16:51:15 -0400798
799 acpi_rs_dump_address_common(resource);
800
801 acpi_rs_out_integer64("Granularity", resource->address64.granularity);
802
Bob Moore50eca3e2005-09-30 19:03:00 -0400803 acpi_rs_out_integer64("Address Minimum", resource->address64.minimum);
Robert Moorebda663d2005-09-16 16:51:15 -0400804
Bob Moore50eca3e2005-09-30 19:03:00 -0400805 acpi_rs_out_integer64("Address Maximum", resource->address64.maximum);
Robert Moorebda663d2005-09-16 16:51:15 -0400806
Bob Moore50eca3e2005-09-30 19:03:00 -0400807 acpi_rs_out_integer64("Translation Offset",
808 resource->address64.translation_offset);
Robert Moorebda663d2005-09-16 16:51:15 -0400809
810 acpi_rs_out_integer64("Address Length",
811 resource->address64.address_length);
812
Robert Moorebda663d2005-09-16 16:51:15 -0400813 acpi_rs_dump_resource_source(&resource->address64.resource_source);
814}
815
816/*******************************************************************************
817 *
Bob Moore50eca3e2005-09-30 19:03:00 -0400818 * FUNCTION: acpi_rs_dump_ext_address64
Robert Moorebda663d2005-09-16 16:51:15 -0400819 *
820 * PARAMETERS: Resource - Pointer to an internal resource descriptor
821 *
822 * RETURN: None
823 *
824 * DESCRIPTION: Dump the field names and values of the resource descriptor
825 *
826 ******************************************************************************/
827
Bob Moore50eca3e2005-09-30 19:03:00 -0400828void acpi_rs_dump_ext_address64(union acpi_resource_data *resource)
829{
830 ACPI_FUNCTION_ENTRY();
831
832 acpi_os_printf("64-Bit Extended Address Space Resource\n");
833
834 acpi_rs_dump_address_common(resource);
835
836 acpi_rs_out_integer64("Granularity",
837 resource->ext_address64.granularity);
838
839 acpi_rs_out_integer64("Address Minimum",
840 resource->ext_address64.minimum);
841
842 acpi_rs_out_integer64("Address Maximum",
843 resource->ext_address64.maximum);
844
845 acpi_rs_out_integer64("Translation Offset",
846 resource->ext_address64.translation_offset);
847
848 acpi_rs_out_integer64("Address Length",
849 resource->ext_address64.address_length);
850
851 acpi_rs_out_integer64("Type-Specific Attribute",
852 resource->ext_address64.type_specific_attributes);
853}
854
855/*******************************************************************************
856 *
857 * FUNCTION: acpi_rs_dump_ext_irq
858 *
859 * PARAMETERS: Resource - Pointer to an internal resource descriptor
860 *
861 * RETURN: None
862 *
863 * DESCRIPTION: Dump the field names and values of the resource descriptor
864 *
865 ******************************************************************************/
866
867void acpi_rs_dump_ext_irq(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400868{
869 ACPI_FUNCTION_ENTRY();
870
871 acpi_os_printf("Extended IRQ Resource\n");
872
873 acpi_rs_out_string("Resource",
874 ACPI_CONSUMER ==
875 resource->extended_irq.
876 producer_consumer ? "Consumer" : "Producer");
877
878 acpi_rs_out_string("Triggering",
879 ACPI_LEVEL_SENSITIVE ==
880 resource->extended_irq.
Bob Moore50eca3e2005-09-30 19:03:00 -0400881 triggering ? "Level" : "Edge");
Robert Moorebda663d2005-09-16 16:51:15 -0400882
883 acpi_rs_out_string("Active",
Bob Moore50eca3e2005-09-30 19:03:00 -0400884 ACPI_ACTIVE_LOW == resource->extended_irq.polarity ?
885 "Low" : "High");
Robert Moorebda663d2005-09-16 16:51:15 -0400886
887 acpi_rs_out_string("Sharing",
Bob Moore50eca3e2005-09-30 19:03:00 -0400888 ACPI_SHARED == resource->extended_irq.sharable ?
889 "Shared" : "Exclusive");
Robert Moorebda663d2005-09-16 16:51:15 -0400890
891 acpi_rs_dump_resource_source(&resource->extended_irq.resource_source);
892
893 acpi_rs_out_integer8("Interrupts",
Bob Moore50eca3e2005-09-30 19:03:00 -0400894 (u8) resource->extended_irq.interrupt_count);
Robert Moorebda663d2005-09-16 16:51:15 -0400895
Bob Moore50eca3e2005-09-30 19:03:00 -0400896 acpi_rs_dump_dword_list(resource->extended_irq.interrupt_count,
Robert Moorebda663d2005-09-16 16:51:15 -0400897 resource->extended_irq.interrupts);
898}
899
900/*******************************************************************************
901 *
902 * FUNCTION: acpi_rs_dump_generic_reg
903 *
904 * PARAMETERS: Resource - Pointer to an internal resource descriptor
905 *
906 * RETURN: None
907 *
908 * DESCRIPTION: Dump the field names and values of the resource descriptor
909 *
910 ******************************************************************************/
911
Bob Moore50eca3e2005-09-30 19:03:00 -0400912void acpi_rs_dump_generic_reg(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400913{
Robert Moorebda663d2005-09-16 16:51:15 -0400914 ACPI_FUNCTION_ENTRY();
915
916 acpi_os_printf("Generic Register Resource\n");
917
918 acpi_rs_out_integer8("Space ID", (u8) resource->generic_reg.space_id);
919
920 acpi_rs_out_integer8("Bit Width", (u8) resource->generic_reg.bit_width);
921
922 acpi_rs_out_integer8("Bit Offset",
923 (u8) resource->generic_reg.bit_offset);
924
Bob Moore50eca3e2005-09-30 19:03:00 -0400925 acpi_rs_out_integer8("Access Size",
926 (u8) resource->generic_reg.access_size);
Robert Moorebda663d2005-09-16 16:51:15 -0400927
928 acpi_rs_out_integer64("Address", resource->generic_reg.address);
929}
930
931/*******************************************************************************
932 *
Bob Moore50eca3e2005-09-30 19:03:00 -0400933 * FUNCTION: acpi_rs_dump_end_dpf
Robert Moorebda663d2005-09-16 16:51:15 -0400934 *
935 * PARAMETERS: Resource - Pointer to an internal resource descriptor
936 *
937 * RETURN: None
938 *
939 * DESCRIPTION: Print type, no data.
940 *
941 ******************************************************************************/
942
Bob Moore50eca3e2005-09-30 19:03:00 -0400943void acpi_rs_dump_end_dpf(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400944{
945 ACPI_FUNCTION_ENTRY();
946
947 acpi_os_printf("end_dependent_functions Resource\n");
948}
949
950/*******************************************************************************
951 *
952 * FUNCTION: acpi_rs_dump_end_tag
953 *
954 * PARAMETERS: Resource - Pointer to an internal resource descriptor
955 *
956 * RETURN: None
957 *
958 * DESCRIPTION: Print type, no data.
959 *
960 ******************************************************************************/
961
Bob Moore50eca3e2005-09-30 19:03:00 -0400962void acpi_rs_dump_end_tag(union acpi_resource_data *resource)
Robert Moorebda663d2005-09-16 16:51:15 -0400963{
964 ACPI_FUNCTION_ENTRY();
965
966 acpi_os_printf("end_tag Resource\n");
Linus Torvalds1da177e2005-04-16 15:20:36 -0700967}
968
969/*******************************************************************************
970 *
971 * FUNCTION: acpi_rs_dump_irq_list
972 *
Robert Moorebda663d2005-09-16 16:51:15 -0400973 * PARAMETERS: route_table - Pointer to the routing table to dump.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700974 *
975 * RETURN: None
976 *
Robert Moorebda663d2005-09-16 16:51:15 -0400977 * DESCRIPTION: Print IRQ routing table
Linus Torvalds1da177e2005-04-16 15:20:36 -0700978 *
979 ******************************************************************************/
980
Len Brown4be44fc2005-08-05 00:44:28 -0400981void acpi_rs_dump_irq_list(u8 * route_table)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700982{
Len Brown4be44fc2005-08-05 00:44:28 -0400983 u8 *buffer = route_table;
984 u8 count = 0;
Len Brown4be44fc2005-08-05 00:44:28 -0400985 struct acpi_pci_routing_table *prt_element;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700986
Len Brown4be44fc2005-08-05 00:44:28 -0400987 ACPI_FUNCTION_ENTRY();
Linus Torvalds1da177e2005-04-16 15:20:36 -0700988
Robert Moorebda663d2005-09-16 16:51:15 -0400989 if (!(acpi_dbg_level & ACPI_LV_RESOURCES)
990 || !(_COMPONENT & acpi_dbg_layer)) {
991 return;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700992 }
993
Robert Moorebda663d2005-09-16 16:51:15 -0400994 prt_element = ACPI_CAST_PTR(struct acpi_pci_routing_table, buffer);
995
996 /* Dump all table elements, Exit on null length element */
997
998 while (prt_element->length) {
999 acpi_os_printf("\n[%02X] PCI IRQ Routing Table Package\n",
1000 count);
1001
1002 acpi_rs_out_integer64("Address", prt_element->address);
1003
1004 acpi_rs_out_integer32("Pin", prt_element->pin);
1005 acpi_rs_out_string("Source", prt_element->source);
1006 acpi_rs_out_integer32("Source Index",
1007 prt_element->source_index);
1008
1009 buffer += prt_element->length;
1010 prt_element =
1011 ACPI_CAST_PTR(struct acpi_pci_routing_table, buffer);
1012 count++;
1013 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001014}
1015
1016#endif