1 /*******************************************************************************
3 * Module Name: rsdump - Functions to display the resource structures.
6 ******************************************************************************/
9 * Copyright (C) 2000, 2001 R. Byron Moore
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30 #define _COMPONENT ACPI_RESOURCES
31 MODULE_NAME ("rsdump")
36 /*******************************************************************************
38 * FUNCTION: Acpi_rs_dump_irq
40 * PARAMETERS: Data - pointer to the resource structure to dump.
44 * DESCRIPTION: Prints out the various members of the Data structure type.
46 ******************************************************************************/
50 acpi_resource_data *data)
52 acpi_resource_irq *irq_data = (acpi_resource_irq *) data;
59 acpi_os_printf ("IRQ Resource\n");
61 acpi_os_printf (" %s Triggered\n",
62 LEVEL_SENSITIVE == irq_data->edge_level ? "Level" : "Edge");
64 acpi_os_printf (" Active %s\n",
65 ACTIVE_LOW == irq_data->active_high_low ? "Low" : "High");
67 acpi_os_printf (" %s\n",
68 SHARED == irq_data->shared_exclusive ? "Shared" : "Exclusive");
70 acpi_os_printf (" %X Interrupts ( ", irq_data->number_of_interrupts);
72 for (index = 0; index < irq_data->number_of_interrupts; index++) {
73 acpi_os_printf ("%X ", irq_data->interrupts[index]);
76 acpi_os_printf (")\n");
81 /*******************************************************************************
83 * FUNCTION: Acpi_rs_dump_dma
85 * PARAMETERS: Data - pointer to the resource structure to dump.
89 * DESCRIPTION: Prints out the various members of the Data structure type.
91 ******************************************************************************/
95 acpi_resource_data *data)
97 acpi_resource_dma *dma_data = (acpi_resource_dma *) data;
104 acpi_os_printf ("DMA Resource\n");
106 switch (dma_data->type) {
108 acpi_os_printf (" Compatibility mode\n");
112 acpi_os_printf (" Type A\n");
116 acpi_os_printf (" Type B\n");
120 acpi_os_printf (" Type F\n");
124 acpi_os_printf (" Invalid DMA type\n");
128 acpi_os_printf (" %sBus Master\n",
129 BUS_MASTER == dma_data->bus_master ? "" : "Not a ");
132 switch (dma_data->transfer) {
134 acpi_os_printf (" 8-bit only transfer\n");
138 acpi_os_printf (" 8 and 16-bit transfer\n");
142 acpi_os_printf (" 16 bit only transfer\n");
146 acpi_os_printf (" Invalid transfer preference\n");
150 acpi_os_printf (" Number of Channels: %X ( ", dma_data->number_of_channels);
152 for (index = 0; index < dma_data->number_of_channels; index++) {
153 acpi_os_printf ("%X ", dma_data->channels[index]);
156 acpi_os_printf (")\n");
161 /*******************************************************************************
163 * FUNCTION: Acpi_rs_dump_start_dependent_functions
165 * PARAMETERS: Data - pointer to the resource structure to dump.
169 * DESCRIPTION: Prints out the various members of the Data structure type.
171 ******************************************************************************/
174 acpi_rs_dump_start_dependent_functions (
175 acpi_resource_data *data)
177 acpi_resource_start_dpf *sdf_data = (acpi_resource_start_dpf *) data;
183 acpi_os_printf ("Start Dependent Functions Resource\n");
185 switch (sdf_data->compatibility_priority) {
186 case GOOD_CONFIGURATION:
187 acpi_os_printf (" Good configuration\n");
190 case ACCEPTABLE_CONFIGURATION:
191 acpi_os_printf (" Acceptable configuration\n");
194 case SUB_OPTIMAL_CONFIGURATION:
195 acpi_os_printf (" Sub-optimal configuration\n");
199 acpi_os_printf (" Invalid compatibility priority\n");
203 switch(sdf_data->performance_robustness) {
204 case GOOD_CONFIGURATION:
205 acpi_os_printf (" Good configuration\n");
208 case ACCEPTABLE_CONFIGURATION:
209 acpi_os_printf (" Acceptable configuration\n");
212 case SUB_OPTIMAL_CONFIGURATION:
213 acpi_os_printf (" Sub-optimal configuration\n");
217 acpi_os_printf (" Invalid performance "
218 "robustness preference\n");
226 /*******************************************************************************
228 * FUNCTION: Acpi_rs_dump_io
230 * PARAMETERS: Data - pointer to the resource structure to dump.
234 * DESCRIPTION: Prints out the various members of the Data structure type.
236 ******************************************************************************/
240 acpi_resource_data *data)
242 acpi_resource_io *io_data = (acpi_resource_io *) data;
248 acpi_os_printf ("Io Resource\n");
250 acpi_os_printf (" %d bit decode\n",
251 DECODE_16 == io_data->io_decode ? 16 : 10);
253 acpi_os_printf (" Range minimum base: %08X\n",
254 io_data->min_base_address);
256 acpi_os_printf (" Range maximum base: %08X\n",
257 io_data->max_base_address);
259 acpi_os_printf (" Alignment: %08X\n",
262 acpi_os_printf (" Range Length: %08X\n",
263 io_data->range_length);
269 /*******************************************************************************
271 * FUNCTION: Acpi_rs_dump_fixed_io
273 * PARAMETERS: Data - pointer to the resource structure to dump.
277 * DESCRIPTION: Prints out the various members of the Data structure type.
279 ******************************************************************************/
282 acpi_rs_dump_fixed_io (
283 acpi_resource_data *data)
285 acpi_resource_fixed_io *fixed_io_data = (acpi_resource_fixed_io *) data;
291 acpi_os_printf ("Fixed Io Resource\n");
292 acpi_os_printf (" Range base address: %08X",
293 fixed_io_data->base_address);
295 acpi_os_printf (" Range length: %08X",
296 fixed_io_data->range_length);
302 /*******************************************************************************
304 * FUNCTION: Acpi_rs_dump_vendor_specific
306 * PARAMETERS: Data - pointer to the resource structure to dump.
310 * DESCRIPTION: Prints out the various members of the Data structure type.
312 ******************************************************************************/
315 acpi_rs_dump_vendor_specific (
316 acpi_resource_data *data)
318 acpi_resource_vendor *vendor_data = (acpi_resource_vendor *) data;
325 acpi_os_printf ("Vendor Specific Resource\n");
327 acpi_os_printf (" Length: %08X\n", vendor_data->length);
329 for (index = 0; index < vendor_data->length; index++) {
330 acpi_os_printf (" Byte %X: %08X\n",
331 index, vendor_data->reserved[index]);
338 /*******************************************************************************
340 * FUNCTION: Acpi_rs_dump_memory24
342 * PARAMETERS: Data - pointer to the resource structure to dump.
346 * DESCRIPTION: Prints out the various members of the Data structure type.
348 ******************************************************************************/
351 acpi_rs_dump_memory24 (
352 acpi_resource_data *data)
354 acpi_resource_mem24 *memory24_data = (acpi_resource_mem24 *) data;
360 acpi_os_printf ("24-Bit Memory Range Resource\n");
362 acpi_os_printf (" Read%s\n",
364 memory24_data->read_write_attribute ?
367 acpi_os_printf (" Range minimum base: %08X\n",
368 memory24_data->min_base_address);
370 acpi_os_printf (" Range maximum base: %08X\n",
371 memory24_data->max_base_address);
373 acpi_os_printf (" Alignment: %08X\n",
374 memory24_data->alignment);
376 acpi_os_printf (" Range length: %08X\n",
377 memory24_data->range_length);
383 /*******************************************************************************
385 * FUNCTION: Acpi_rs_dump_memory32
387 * PARAMETERS: Data - pointer to the resource structure to dump.
391 * DESCRIPTION: Prints out the various members of the Data structure type.
393 ******************************************************************************/
396 acpi_rs_dump_memory32 (
397 acpi_resource_data *data)
399 acpi_resource_mem32 *memory32_data = (acpi_resource_mem32 *) data;
405 acpi_os_printf ("32-Bit Memory Range Resource\n");
407 acpi_os_printf (" Read%s\n",
409 memory32_data->read_write_attribute ?
412 acpi_os_printf (" Range minimum base: %08X\n",
413 memory32_data->min_base_address);
415 acpi_os_printf (" Range maximum base: %08X\n",
416 memory32_data->max_base_address);
418 acpi_os_printf (" Alignment: %08X\n",
419 memory32_data->alignment);
421 acpi_os_printf (" Range length: %08X\n",
422 memory32_data->range_length);
428 /*******************************************************************************
430 * FUNCTION: Acpi_rs_dump_fixed_memory32
432 * PARAMETERS: Data - pointer to the resource structure to dump.
436 * DESCRIPTION: Prints out the various members of the Data structure type.
438 ******************************************************************************/
441 acpi_rs_dump_fixed_memory32 (
442 acpi_resource_data *data)
444 acpi_resource_fixed_mem32 *fixed_memory32_data = (acpi_resource_fixed_mem32 *) data;
450 acpi_os_printf ("32-Bit Fixed Location Memory Range Resource\n");
452 acpi_os_printf (" Read%s\n",
454 fixed_memory32_data->read_write_attribute ?
457 acpi_os_printf (" Range base address: %08X\n",
458 fixed_memory32_data->range_base_address);
460 acpi_os_printf (" Range length: %08X\n",
461 fixed_memory32_data->range_length);
467 /*******************************************************************************
469 * FUNCTION: Acpi_rs_dump_address16
471 * PARAMETERS: Data - pointer to the resource structure to dump.
475 * DESCRIPTION: Prints out the various members of the Data structure type.
477 ******************************************************************************/
480 acpi_rs_dump_address16 (
481 acpi_resource_data *data)
483 acpi_resource_address16 *address16_data = (acpi_resource_address16 *) data;
489 acpi_os_printf ("16-Bit Address Space Resource\n");
490 acpi_os_printf (" Resource Type: ");
492 switch (address16_data->resource_type) {
495 acpi_os_printf ("Memory Range\n");
497 switch (address16_data->attribute.memory.cache_attribute) {
498 case NON_CACHEABLE_MEMORY:
499 acpi_os_printf (" Type Specific: "
500 "Noncacheable memory\n");
503 case CACHABLE_MEMORY:
504 acpi_os_printf (" Type Specific: "
505 "Cacheable memory\n");
508 case WRITE_COMBINING_MEMORY:
509 acpi_os_printf (" Type Specific: "
510 "Write-combining memory\n");
513 case PREFETCHABLE_MEMORY:
514 acpi_os_printf (" Type Specific: "
515 "Prefetchable memory\n");
519 acpi_os_printf (" Type Specific: "
520 "Invalid cache attribute\n");
524 acpi_os_printf (" Type Specific: Read%s\n",
526 address16_data->attribute.memory.read_write_attribute ?
532 acpi_os_printf ("I/O Range\n");
534 switch (address16_data->attribute.io.range_attribute) {
535 case NON_ISA_ONLY_RANGES:
536 acpi_os_printf (" Type Specific: "
537 "Non-ISA Io Addresses\n");
540 case ISA_ONLY_RANGES:
541 acpi_os_printf (" Type Specific: "
542 "ISA Io Addresses\n");
546 acpi_os_printf (" Type Specific: "
547 "ISA and non-ISA Io Addresses\n");
551 acpi_os_printf (" Type Specific: "
552 "Invalid range attribute\n");
557 case BUS_NUMBER_RANGE:
559 acpi_os_printf ("Bus Number Range\n");
564 acpi_os_printf ("Invalid resource type. Exiting.\n");
568 acpi_os_printf (" Resource %s\n",
569 CONSUMER == address16_data->producer_consumer ?
570 "Consumer" : "Producer");
572 acpi_os_printf (" %s decode\n",
573 SUB_DECODE == address16_data->decode ?
574 "Subtractive" : "Positive");
576 acpi_os_printf (" Min address is %s fixed\n",
577 ADDRESS_FIXED == address16_data->min_address_fixed ?
580 acpi_os_printf (" Max address is %s fixed\n",
581 ADDRESS_FIXED == address16_data->max_address_fixed ?
584 acpi_os_printf (" Granularity: %08X\n",
585 address16_data->granularity);
587 acpi_os_printf (" Address range min: %08X\n",
588 address16_data->min_address_range);
590 acpi_os_printf (" Address range max: %08X\n",
591 address16_data->max_address_range);
593 acpi_os_printf (" Address translation offset: %08X\n",
594 address16_data->address_translation_offset);
596 acpi_os_printf (" Address Length: %08X\n",
597 address16_data->address_length);
599 if (0xFF != address16_data->resource_source.index) {
600 acpi_os_printf (" Resource Source Index: %X\n",
601 address16_data->resource_source.index);
602 acpi_os_printf (" Resource Source: %s\n",
603 address16_data->resource_source.string_ptr);
610 /*******************************************************************************
612 * FUNCTION: Acpi_rs_dump_address32
614 * PARAMETERS: Data - pointer to the resource structure to dump.
618 * DESCRIPTION: Prints out the various members of the Data structure type.
620 ******************************************************************************/
623 acpi_rs_dump_address32 (
624 acpi_resource_data *data)
626 acpi_resource_address32 *address32_data = (acpi_resource_address32 *) data;
632 acpi_os_printf ("32-Bit Address Space Resource\n");
634 switch (address32_data->resource_type) {
637 acpi_os_printf (" Resource Type: Memory Range\n");
639 switch (address32_data->attribute.memory.cache_attribute) {
640 case NON_CACHEABLE_MEMORY:
641 acpi_os_printf (" Type Specific: "
642 "Noncacheable memory\n");
645 case CACHABLE_MEMORY:
646 acpi_os_printf (" Type Specific: "
647 "Cacheable memory\n");
650 case WRITE_COMBINING_MEMORY:
651 acpi_os_printf (" Type Specific: "
652 "Write-combining memory\n");
655 case PREFETCHABLE_MEMORY:
656 acpi_os_printf (" Type Specific: "
657 "Prefetchable memory\n");
661 acpi_os_printf (" Type Specific: "
662 "Invalid cache attribute\n");
666 acpi_os_printf (" Type Specific: Read%s\n",
668 address32_data->attribute.memory.read_write_attribute ?
674 acpi_os_printf (" Resource Type: Io Range\n");
676 switch (address32_data->attribute.io.range_attribute) {
677 case NON_ISA_ONLY_RANGES:
678 acpi_os_printf (" Type Specific: "
679 "Non-ISA Io Addresses\n");
682 case ISA_ONLY_RANGES:
683 acpi_os_printf (" Type Specific: "
684 "ISA Io Addresses\n");
688 acpi_os_printf (" Type Specific: "
689 "ISA and non-ISA Io Addresses\n");
693 acpi_os_printf (" Type Specific: "
694 "Invalid Range attribute");
699 case BUS_NUMBER_RANGE:
701 acpi_os_printf (" Resource Type: Bus Number Range\n");
706 acpi_os_printf (" Invalid Resource Type..exiting.\n");
710 acpi_os_printf (" Resource %s\n",
711 CONSUMER == address32_data->producer_consumer ?
712 "Consumer" : "Producer");
714 acpi_os_printf (" %s decode\n",
715 SUB_DECODE == address32_data->decode ?
716 "Subtractive" : "Positive");
718 acpi_os_printf (" Min address is %s fixed\n",
719 ADDRESS_FIXED == address32_data->min_address_fixed ?
722 acpi_os_printf (" Max address is %s fixed\n",
723 ADDRESS_FIXED == address32_data->max_address_fixed ?
726 acpi_os_printf (" Granularity: %08X\n",
727 address32_data->granularity);
729 acpi_os_printf (" Address range min: %08X\n",
730 address32_data->min_address_range);
732 acpi_os_printf (" Address range max: %08X\n",
733 address32_data->max_address_range);
735 acpi_os_printf (" Address translation offset: %08X\n",
736 address32_data->address_translation_offset);
738 acpi_os_printf (" Address Length: %08X\n",
739 address32_data->address_length);
741 if(0xFF != address32_data->resource_source.index) {
742 acpi_os_printf (" Resource Source Index: %X\n",
743 address32_data->resource_source.index);
744 acpi_os_printf (" Resource Source: %s\n",
745 address32_data->resource_source.string_ptr);
752 /*******************************************************************************
754 * FUNCTION: Acpi_rs_dump_address64
756 * PARAMETERS: Data - pointer to the resource structure to dump.
760 * DESCRIPTION: Prints out the various members of the Data structure type.
762 ******************************************************************************/
765 acpi_rs_dump_address64 (
766 acpi_resource_data *data)
768 acpi_resource_address64 *address64_data = (acpi_resource_address64 *) data;
774 acpi_os_printf ("64-Bit Address Space Resource\n");
776 switch (address64_data->resource_type) {
779 acpi_os_printf (" Resource Type: Memory Range\n");
781 switch (address64_data->attribute.memory.cache_attribute) {
782 case NON_CACHEABLE_MEMORY:
783 acpi_os_printf (" Type Specific: "
784 "Noncacheable memory\n");
787 case CACHABLE_MEMORY:
788 acpi_os_printf (" Type Specific: "
789 "Cacheable memory\n");
792 case WRITE_COMBINING_MEMORY:
793 acpi_os_printf (" Type Specific: "
794 "Write-combining memory\n");
797 case PREFETCHABLE_MEMORY:
798 acpi_os_printf (" Type Specific: "
799 "Prefetchable memory\n");
803 acpi_os_printf (" Type Specific: "
804 "Invalid cache attribute\n");
808 acpi_os_printf (" Type Specific: Read%s\n",
810 address64_data->attribute.memory.read_write_attribute ?
816 acpi_os_printf (" Resource Type: Io Range\n");
818 switch (address64_data->attribute.io.range_attribute) {
819 case NON_ISA_ONLY_RANGES:
820 acpi_os_printf (" Type Specific: "
821 "Non-ISA Io Addresses\n");
824 case ISA_ONLY_RANGES:
825 acpi_os_printf (" Type Specific: "
826 "ISA Io Addresses\n");
830 acpi_os_printf (" Type Specific: "
831 "ISA and non-ISA Io Addresses\n");
835 acpi_os_printf (" Type Specific: "
836 "Invalid Range attribute");
841 case BUS_NUMBER_RANGE:
843 acpi_os_printf (" Resource Type: Bus Number Range\n");
848 acpi_os_printf (" Invalid Resource Type..exiting.\n");
852 acpi_os_printf (" Resource %s\n",
853 CONSUMER == address64_data->producer_consumer ?
854 "Consumer" : "Producer");
856 acpi_os_printf (" %s decode\n",
857 SUB_DECODE == address64_data->decode ?
858 "Subtractive" : "Positive");
860 acpi_os_printf (" Min address is %s fixed\n",
861 ADDRESS_FIXED == address64_data->min_address_fixed ?
864 acpi_os_printf (" Max address is %s fixed\n",
865 ADDRESS_FIXED == address64_data->max_address_fixed ?
868 acpi_os_printf (" Granularity: %16X\n",
869 address64_data->granularity);
871 acpi_os_printf (" Address range min: %16X\n",
872 address64_data->min_address_range);
874 acpi_os_printf (" Address range max: %16X\n",
875 address64_data->max_address_range);
877 acpi_os_printf (" Address translation offset: %16X\n",
878 address64_data->address_translation_offset);
880 acpi_os_printf (" Address Length: %16X\n",
881 address64_data->address_length);
883 if(0xFF != address64_data->resource_source.index) {
884 acpi_os_printf (" Resource Source Index: %X\n",
885 address64_data->resource_source.index);
886 acpi_os_printf (" Resource Source: %s\n",
887 address64_data->resource_source.string_ptr);
894 /*******************************************************************************
896 * FUNCTION: Acpi_rs_dump_extended_irq
898 * PARAMETERS: Data - pointer to the resource structure to dump.
902 * DESCRIPTION: Prints out the various members of the Data structure type.
904 ******************************************************************************/
907 acpi_rs_dump_extended_irq (
908 acpi_resource_data *data)
910 acpi_resource_ext_irq *ext_irq_data = (acpi_resource_ext_irq *) data;
917 acpi_os_printf ("Extended IRQ Resource\n");
919 acpi_os_printf (" Resource %s\n",
920 CONSUMER == ext_irq_data->producer_consumer ?
921 "Consumer" : "Producer");
923 acpi_os_printf (" %s\n",
924 LEVEL_SENSITIVE == ext_irq_data->edge_level ?
927 acpi_os_printf (" Active %s\n",
928 ACTIVE_LOW == ext_irq_data->active_high_low ?
931 acpi_os_printf (" %s\n",
932 SHARED == ext_irq_data->shared_exclusive ?
933 "Shared" : "Exclusive");
935 acpi_os_printf (" Interrupts : %X ( ",
936 ext_irq_data->number_of_interrupts);
938 for (index = 0; index < ext_irq_data->number_of_interrupts; index++) {
939 acpi_os_printf ("%X ", ext_irq_data->interrupts[index]);
942 acpi_os_printf (")\n");
944 if(0xFF != ext_irq_data->resource_source.index) {
945 acpi_os_printf (" Resource Source Index: %X",
946 ext_irq_data->resource_source.index);
947 acpi_os_printf (" Resource Source: %s",
948 ext_irq_data->resource_source.string_ptr);
955 /*******************************************************************************
957 * FUNCTION: Acpi_rs_dump_resource_list
959 * PARAMETERS: Data - pointer to the resource structure to dump.
963 * DESCRIPTION: Dispatches the structure to the correct dump routine.
965 ******************************************************************************/
968 acpi_rs_dump_resource_list (
969 acpi_resource *resource)
978 if (acpi_dbg_level & ACPI_LV_RESOURCES && _COMPONENT & acpi_dbg_layer) {
980 acpi_os_printf ("Resource structure %x.\n", count++);
982 switch (resource->id) {
983 case ACPI_RSTYPE_IRQ:
984 acpi_rs_dump_irq (&resource->data);
987 case ACPI_RSTYPE_DMA:
988 acpi_rs_dump_dma (&resource->data);
991 case ACPI_RSTYPE_START_DPF:
992 acpi_rs_dump_start_dependent_functions (&resource->data);
995 case ACPI_RSTYPE_END_DPF:
996 acpi_os_printf ("End_dependent_functions Resource\n");
997 /* Acpi_rs_dump_end_dependent_functions (Resource->Data);*/
1000 case ACPI_RSTYPE_IO:
1001 acpi_rs_dump_io (&resource->data);
1004 case ACPI_RSTYPE_FIXED_IO:
1005 acpi_rs_dump_fixed_io (&resource->data);
1008 case ACPI_RSTYPE_VENDOR:
1009 acpi_rs_dump_vendor_specific (&resource->data);
1012 case ACPI_RSTYPE_END_TAG:
1013 /*Rs_dump_end_tag (Resource->Data);*/
1014 acpi_os_printf ("End_tag Resource\n");
1018 case ACPI_RSTYPE_MEM24:
1019 acpi_rs_dump_memory24 (&resource->data);
1022 case ACPI_RSTYPE_MEM32:
1023 acpi_rs_dump_memory32 (&resource->data);
1026 case ACPI_RSTYPE_FIXED_MEM32:
1027 acpi_rs_dump_fixed_memory32 (&resource->data);
1030 case ACPI_RSTYPE_ADDRESS16:
1031 acpi_rs_dump_address16 (&resource->data);
1034 case ACPI_RSTYPE_ADDRESS32:
1035 acpi_rs_dump_address32 (&resource->data);
1038 case ACPI_RSTYPE_ADDRESS64:
1039 acpi_rs_dump_address64 (&resource->data);
1042 case ACPI_RSTYPE_EXT_IRQ:
1043 acpi_rs_dump_extended_irq (&resource->data);
1047 acpi_os_printf ("Invalid resource type\n");
1052 resource = POINTER_ADD (acpi_resource, resource, resource->length);
1059 /*******************************************************************************
1061 * FUNCTION: Acpi_rs_dump_irq_list
1063 * PARAMETERS: Data - pointer to the routing table to dump.
1067 * DESCRIPTION: Dispatches the structures to the correct dump routine.
1069 ******************************************************************************/
1072 acpi_rs_dump_irq_list (
1075 u8 *buffer = route_table;
1078 pci_routing_table *prt_element;
1084 if (acpi_dbg_level & ACPI_LV_RESOURCES && _COMPONENT & acpi_dbg_layer) {
1085 prt_element = (pci_routing_table *) buffer;
1088 acpi_os_printf ("PCI IRQ Routing Table structure %X.\n", count++);
1090 acpi_os_printf (" Address: %X\n",
1091 prt_element->address);
1093 acpi_os_printf (" Pin: %X\n", prt_element->pin);
1095 acpi_os_printf (" Source: %s\n", prt_element->source);
1097 acpi_os_printf (" Source_index: %X\n",
1098 prt_element->source_index);
1100 buffer += prt_element->length;
1102 prt_element = (pci_routing_table *) buffer;
1104 if(0 == prt_element->length) {