rsdump.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:26k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*******************************************************************************
  2.  *
  3.  * Module Name: rsdump - Functions to display the resource structures.
  4.  *              $Revision: 23 $
  5.  *
  6.  ******************************************************************************/
  7. /*
  8.  *  Copyright (C) 2000, 2001 R. Byron Moore
  9.  *
  10.  *  This program is free software; you can redistribute it and/or modify
  11.  *  it under the terms of the GNU General Public License as published by
  12.  *  the Free Software Foundation; either version 2 of the License, or
  13.  *  (at your option) any later version.
  14.  *
  15.  *  This program is distributed in the hope that it will be useful,
  16.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  *  GNU General Public License for more details.
  19.  *
  20.  *  You should have received a copy of the GNU General Public License
  21.  *  along with this program; if not, write to the Free Software
  22.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  23.  */
  24. #include "acpi.h"
  25. #include "acresrc.h"
  26. #define _COMPONENT          ACPI_RESOURCES
  27.  MODULE_NAME         ("rsdump")
  28. #ifdef ACPI_DEBUG
  29. /*******************************************************************************
  30.  *
  31.  * FUNCTION:    Acpi_rs_dump_irq
  32.  *
  33.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  34.  *
  35.  * RETURN:      None
  36.  *
  37.  * DESCRIPTION: Prints out the various members of the Data structure type.
  38.  *
  39.  ******************************************************************************/
  40. void
  41. acpi_rs_dump_irq (
  42. acpi_resource_data      *data)
  43. {
  44. acpi_resource_irq       *irq_data = (acpi_resource_irq *) data;
  45. u8                      index = 0;
  46. FUNCTION_ENTRY ();
  47. acpi_os_printf ("IRQ Resourcen");
  48. acpi_os_printf ("  %s Triggeredn",
  49.  LEVEL_SENSITIVE == irq_data->edge_level ? "Level" : "Edge");
  50. acpi_os_printf ("  Active %sn",
  51.  ACTIVE_LOW == irq_data->active_high_low ? "Low" : "High");
  52. acpi_os_printf ("  %sn",
  53.  SHARED == irq_data->shared_exclusive ? "Shared" : "Exclusive");
  54. acpi_os_printf ("  %X Interrupts ( ", irq_data->number_of_interrupts);
  55. for (index = 0; index < irq_data->number_of_interrupts; index++) {
  56. acpi_os_printf ("%X ", irq_data->interrupts[index]);
  57. }
  58. acpi_os_printf (")n");
  59. return;
  60. }
  61. /*******************************************************************************
  62.  *
  63.  * FUNCTION:    Acpi_rs_dump_dma
  64.  *
  65.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  66.  *
  67.  * RETURN:      None
  68.  *
  69.  * DESCRIPTION: Prints out the various members of the Data structure type.
  70.  *
  71.  ******************************************************************************/
  72. void
  73. acpi_rs_dump_dma (
  74. acpi_resource_data      *data)
  75. {
  76. acpi_resource_dma       *dma_data = (acpi_resource_dma *) data;
  77. u8                      index = 0;
  78. FUNCTION_ENTRY ();
  79. acpi_os_printf ("DMA Resourcen");
  80. switch (dma_data->type) {
  81. case COMPATIBILITY:
  82. acpi_os_printf ("  Compatibility moden");
  83. break;
  84. case TYPE_A:
  85. acpi_os_printf ("  Type An");
  86. break;
  87. case TYPE_B:
  88. acpi_os_printf ("  Type Bn");
  89. break;
  90. case TYPE_F:
  91. acpi_os_printf ("  Type Fn");
  92. break;
  93. default:
  94. acpi_os_printf ("  Invalid DMA typen");
  95. break;
  96. }
  97. acpi_os_printf ("  %sBus Mastern",
  98.  BUS_MASTER == dma_data->bus_master ? "" : "Not a ");
  99. switch (dma_data->transfer) {
  100. case TRANSFER_8:
  101. acpi_os_printf ("  8-bit only transfern");
  102. break;
  103. case TRANSFER_8_16:
  104. acpi_os_printf ("  8 and 16-bit transfern");
  105. break;
  106. case TRANSFER_16:
  107. acpi_os_printf ("  16 bit only transfern");
  108. break;
  109. default:
  110. acpi_os_printf ("  Invalid transfer preferencen");
  111. break;
  112. }
  113. acpi_os_printf ("  Number of Channels: %X ( ", dma_data->number_of_channels);
  114. for (index = 0; index < dma_data->number_of_channels; index++) {
  115. acpi_os_printf ("%X ", dma_data->channels[index]);
  116. }
  117. acpi_os_printf (")n");
  118. return;
  119. }
  120. /*******************************************************************************
  121.  *
  122.  * FUNCTION:    Acpi_rs_dump_start_dependent_functions
  123.  *
  124.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  125.  *
  126.  * RETURN:      None
  127.  *
  128.  * DESCRIPTION: Prints out the various members of the Data structure type.
  129.  *
  130.  ******************************************************************************/
  131. void
  132. acpi_rs_dump_start_dependent_functions (
  133. acpi_resource_data          *data)
  134. {
  135. acpi_resource_start_dpf     *sdf_data = (acpi_resource_start_dpf *) data;
  136. FUNCTION_ENTRY ();
  137. acpi_os_printf ("Start Dependent Functions Resourcen");
  138. switch (sdf_data->compatibility_priority) {
  139. case GOOD_CONFIGURATION:
  140. acpi_os_printf ("  Good configurationn");
  141. break;
  142. case ACCEPTABLE_CONFIGURATION:
  143. acpi_os_printf ("  Acceptable configurationn");
  144. break;
  145. case SUB_OPTIMAL_CONFIGURATION:
  146. acpi_os_printf ("  Sub-optimal configurationn");
  147. break;
  148. default:
  149. acpi_os_printf ("  Invalid compatibility priorityn");
  150. break;
  151. }
  152. switch(sdf_data->performance_robustness) {
  153. case GOOD_CONFIGURATION:
  154. acpi_os_printf ("  Good configurationn");
  155. break;
  156. case ACCEPTABLE_CONFIGURATION:
  157. acpi_os_printf ("  Acceptable configurationn");
  158. break;
  159. case SUB_OPTIMAL_CONFIGURATION:
  160. acpi_os_printf ("  Sub-optimal configurationn");
  161. break;
  162. default:
  163. acpi_os_printf ("  Invalid performance "
  164.   "robustness preferencen");
  165. break;
  166. }
  167. return;
  168. }
  169. /*******************************************************************************
  170.  *
  171.  * FUNCTION:    Acpi_rs_dump_io
  172.  *
  173.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  174.  *
  175.  * RETURN:      None
  176.  *
  177.  * DESCRIPTION: Prints out the various members of the Data structure type.
  178.  *
  179.  ******************************************************************************/
  180. void
  181. acpi_rs_dump_io (
  182. acpi_resource_data      *data)
  183. {
  184. acpi_resource_io        *io_data = (acpi_resource_io *) data;
  185. FUNCTION_ENTRY ();
  186. acpi_os_printf ("Io Resourcen");
  187. acpi_os_printf ("  %d bit decoden",
  188.  DECODE_16 == io_data->io_decode ? 16 : 10);
  189. acpi_os_printf ("  Range minimum base: %08Xn",
  190.  io_data->min_base_address);
  191. acpi_os_printf ("  Range maximum base: %08Xn",
  192.  io_data->max_base_address);
  193. acpi_os_printf ("  Alignment: %08Xn",
  194.  io_data->alignment);
  195. acpi_os_printf ("  Range Length: %08Xn",
  196.  io_data->range_length);
  197. return;
  198. }
  199. /*******************************************************************************
  200.  *
  201.  * FUNCTION:    Acpi_rs_dump_fixed_io
  202.  *
  203.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  204.  *
  205.  * RETURN:      None
  206.  *
  207.  * DESCRIPTION: Prints out the various members of the Data structure type.
  208.  *
  209.  ******************************************************************************/
  210. void
  211. acpi_rs_dump_fixed_io (
  212. acpi_resource_data      *data)
  213. {
  214. acpi_resource_fixed_io  *fixed_io_data = (acpi_resource_fixed_io *) data;
  215. FUNCTION_ENTRY ();
  216. acpi_os_printf ("Fixed Io Resourcen");
  217. acpi_os_printf ("  Range base address: %08X",
  218.  fixed_io_data->base_address);
  219. acpi_os_printf ("  Range length: %08X",
  220.  fixed_io_data->range_length);
  221. return;
  222. }
  223. /*******************************************************************************
  224.  *
  225.  * FUNCTION:    Acpi_rs_dump_vendor_specific
  226.  *
  227.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  228.  *
  229.  * RETURN:      None
  230.  *
  231.  * DESCRIPTION: Prints out the various members of the Data structure type.
  232.  *
  233.  ******************************************************************************/
  234. void
  235. acpi_rs_dump_vendor_specific (
  236. acpi_resource_data      *data)
  237. {
  238. acpi_resource_vendor    *vendor_data = (acpi_resource_vendor *) data;
  239. u16                     index = 0;
  240. FUNCTION_ENTRY ();
  241. acpi_os_printf ("Vendor Specific Resourcen");
  242. acpi_os_printf ("  Length: %08Xn", vendor_data->length);
  243. for (index = 0; index < vendor_data->length; index++) {
  244. acpi_os_printf ("  Byte %X: %08Xn",
  245.  index, vendor_data->reserved[index]);
  246. }
  247. return;
  248. }
  249. /*******************************************************************************
  250.  *
  251.  * FUNCTION:    Acpi_rs_dump_memory24
  252.  *
  253.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  254.  *
  255.  * RETURN:      None
  256.  *
  257.  * DESCRIPTION: Prints out the various members of the Data structure type.
  258.  *
  259.  ******************************************************************************/
  260. void
  261. acpi_rs_dump_memory24 (
  262. acpi_resource_data      *data)
  263. {
  264. acpi_resource_mem24     *memory24_data = (acpi_resource_mem24 *) data;
  265. FUNCTION_ENTRY ();
  266. acpi_os_printf ("24-Bit Memory Range Resourcen");
  267. acpi_os_printf ("  Read%sn",
  268.  READ_WRITE_MEMORY ==
  269.  memory24_data->read_write_attribute ?
  270.  "/Write" : " only");
  271. acpi_os_printf ("  Range minimum base: %08Xn",
  272.  memory24_data->min_base_address);
  273. acpi_os_printf ("  Range maximum base: %08Xn",
  274.  memory24_data->max_base_address);
  275. acpi_os_printf ("  Alignment: %08Xn",
  276.  memory24_data->alignment);
  277. acpi_os_printf ("  Range length: %08Xn",
  278.  memory24_data->range_length);
  279. return;
  280. }
  281. /*******************************************************************************
  282.  *
  283.  * FUNCTION:    Acpi_rs_dump_memory32
  284.  *
  285.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  286.  *
  287.  * RETURN:      None
  288.  *
  289.  * DESCRIPTION: Prints out the various members of the Data structure type.
  290.  *
  291.  ******************************************************************************/
  292. void
  293. acpi_rs_dump_memory32 (
  294. acpi_resource_data      *data)
  295. {
  296. acpi_resource_mem32     *memory32_data = (acpi_resource_mem32 *) data;
  297. FUNCTION_ENTRY ();
  298. acpi_os_printf ("32-Bit Memory Range Resourcen");
  299. acpi_os_printf ("  Read%sn",
  300.  READ_WRITE_MEMORY ==
  301.  memory32_data->read_write_attribute ?
  302.  "/Write" : " only");
  303. acpi_os_printf ("  Range minimum base: %08Xn",
  304.  memory32_data->min_base_address);
  305. acpi_os_printf ("  Range maximum base: %08Xn",
  306.  memory32_data->max_base_address);
  307. acpi_os_printf ("  Alignment: %08Xn",
  308.  memory32_data->alignment);
  309. acpi_os_printf ("  Range length: %08Xn",
  310.  memory32_data->range_length);
  311. return;
  312. }
  313. /*******************************************************************************
  314.  *
  315.  * FUNCTION:    Acpi_rs_dump_fixed_memory32
  316.  *
  317.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  318.  *
  319.  * RETURN:
  320.  *
  321.  * DESCRIPTION: Prints out the various members of the Data structure type.
  322.  *
  323.  ******************************************************************************/
  324. void
  325. acpi_rs_dump_fixed_memory32 (
  326. acpi_resource_data          *data)
  327. {
  328. acpi_resource_fixed_mem32   *fixed_memory32_data = (acpi_resource_fixed_mem32 *) data;
  329. FUNCTION_ENTRY ();
  330. acpi_os_printf ("32-Bit Fixed Location Memory Range Resourcen");
  331. acpi_os_printf ("  Read%sn",
  332.  READ_WRITE_MEMORY ==
  333.  fixed_memory32_data->read_write_attribute ?
  334.  "/Write" : " Only");
  335. acpi_os_printf ("  Range base address: %08Xn",
  336.  fixed_memory32_data->range_base_address);
  337. acpi_os_printf ("  Range length: %08Xn",
  338.  fixed_memory32_data->range_length);
  339. return;
  340. }
  341. /*******************************************************************************
  342.  *
  343.  * FUNCTION:    Acpi_rs_dump_address16
  344.  *
  345.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  346.  *
  347.  * RETURN:      None
  348.  *
  349.  * DESCRIPTION: Prints out the various members of the Data structure type.
  350.  *
  351.  ******************************************************************************/
  352. void
  353. acpi_rs_dump_address16 (
  354. acpi_resource_data      *data)
  355. {
  356. acpi_resource_address16 *address16_data = (acpi_resource_address16 *) data;
  357. FUNCTION_ENTRY ();
  358. acpi_os_printf ("16-Bit Address Space Resourcen");
  359. acpi_os_printf ("  Resource Type: ");
  360. switch (address16_data->resource_type) {
  361. case MEMORY_RANGE:
  362. acpi_os_printf ("Memory Rangen");
  363. switch (address16_data->attribute.memory.cache_attribute) {
  364. case NON_CACHEABLE_MEMORY:
  365. acpi_os_printf ("  Type Specific: "
  366.   "Noncacheable memoryn");
  367. break;
  368. case CACHABLE_MEMORY:
  369. acpi_os_printf ("  Type Specific: "
  370.   "Cacheable memoryn");
  371. break;
  372. case WRITE_COMBINING_MEMORY:
  373. acpi_os_printf ("  Type Specific: "
  374.   "Write-combining memoryn");
  375. break;
  376. case PREFETCHABLE_MEMORY:
  377. acpi_os_printf ("  Type Specific: "
  378.   "Prefetchable memoryn");
  379. break;
  380. default:
  381. acpi_os_printf ("  Type Specific: "
  382.   "Invalid cache attributen");
  383. break;
  384. }
  385. acpi_os_printf ("  Type Specific: Read%sn",
  386. READ_WRITE_MEMORY ==
  387. address16_data->attribute.memory.read_write_attribute ?
  388. "/Write" : " Only");
  389. break;
  390. case IO_RANGE:
  391. acpi_os_printf ("I/O Rangen");
  392. switch (address16_data->attribute.io.range_attribute) {
  393. case NON_ISA_ONLY_RANGES:
  394. acpi_os_printf ("  Type Specific: "
  395.   "Non-ISA Io Addressesn");
  396. break;
  397. case ISA_ONLY_RANGES:
  398. acpi_os_printf ("  Type Specific: "
  399.   "ISA Io Addressesn");
  400. break;
  401. case ENTIRE_RANGE:
  402. acpi_os_printf ("  Type Specific: "
  403.   "ISA and non-ISA Io Addressesn");
  404. break;
  405. default:
  406. acpi_os_printf ("  Type Specific: "
  407.   "Invalid range attributen");
  408. break;
  409. }
  410. break;
  411. case BUS_NUMBER_RANGE:
  412. acpi_os_printf ("Bus Number Rangen");
  413. break;
  414. default:
  415. acpi_os_printf ("Invalid resource type. Exiting.n");
  416. return;
  417. }
  418. acpi_os_printf ("  Resource %sn",
  419. CONSUMER == address16_data->producer_consumer ?
  420. "Consumer" : "Producer");
  421. acpi_os_printf ("  %s decoden",
  422.  SUB_DECODE == address16_data->decode ?
  423.  "Subtractive" : "Positive");
  424. acpi_os_printf ("  Min address is %s fixedn",
  425.  ADDRESS_FIXED == address16_data->min_address_fixed ?
  426.  "" : "not");
  427. acpi_os_printf ("  Max address is %s fixedn",
  428.  ADDRESS_FIXED == address16_data->max_address_fixed ?
  429.  "" : "not");
  430. acpi_os_printf ("  Granularity: %08Xn",
  431.  address16_data->granularity);
  432. acpi_os_printf ("  Address range min: %08Xn",
  433.  address16_data->min_address_range);
  434. acpi_os_printf ("  Address range max: %08Xn",
  435.  address16_data->max_address_range);
  436. acpi_os_printf ("  Address translation offset: %08Xn",
  437.  address16_data->address_translation_offset);
  438. acpi_os_printf ("  Address Length: %08Xn",
  439.  address16_data->address_length);
  440. if (0xFF != address16_data->resource_source.index) {
  441. acpi_os_printf ("  Resource Source Index: %Xn",
  442.  address16_data->resource_source.index);
  443. acpi_os_printf ("  Resource Source: %sn",
  444.  address16_data->resource_source.string_ptr);
  445. }
  446. return;
  447. }
  448. /*******************************************************************************
  449.  *
  450.  * FUNCTION:    Acpi_rs_dump_address32
  451.  *
  452.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  453.  *
  454.  * RETURN:      None
  455.  *
  456.  * DESCRIPTION: Prints out the various members of the Data structure type.
  457.  *
  458.  ******************************************************************************/
  459. void
  460. acpi_rs_dump_address32 (
  461. acpi_resource_data      *data)
  462. {
  463. acpi_resource_address32 *address32_data = (acpi_resource_address32 *) data;
  464. FUNCTION_ENTRY ();
  465. acpi_os_printf ("32-Bit Address Space Resourcen");
  466. switch (address32_data->resource_type) {
  467. case MEMORY_RANGE:
  468. acpi_os_printf ("  Resource Type: Memory Rangen");
  469. switch (address32_data->attribute.memory.cache_attribute) {
  470. case NON_CACHEABLE_MEMORY:
  471. acpi_os_printf ("  Type Specific: "
  472.   "Noncacheable memoryn");
  473. break;
  474. case CACHABLE_MEMORY:
  475. acpi_os_printf ("  Type Specific: "
  476.   "Cacheable memoryn");
  477. break;
  478. case WRITE_COMBINING_MEMORY:
  479. acpi_os_printf ("  Type Specific: "
  480.   "Write-combining memoryn");
  481. break;
  482. case PREFETCHABLE_MEMORY:
  483. acpi_os_printf ("  Type Specific: "
  484.   "Prefetchable memoryn");
  485. break;
  486. default:
  487. acpi_os_printf ("  Type Specific: "
  488.   "Invalid cache attributen");
  489. break;
  490. }
  491. acpi_os_printf ("  Type Specific: Read%sn",
  492. READ_WRITE_MEMORY ==
  493. address32_data->attribute.memory.read_write_attribute ?
  494. "/Write" : " Only");
  495. break;
  496. case IO_RANGE:
  497. acpi_os_printf ("  Resource Type: Io Rangen");
  498. switch (address32_data->attribute.io.range_attribute) {
  499. case NON_ISA_ONLY_RANGES:
  500. acpi_os_printf ("  Type Specific: "
  501.   "Non-ISA Io Addressesn");
  502. break;
  503. case ISA_ONLY_RANGES:
  504. acpi_os_printf ("  Type Specific: "
  505.   "ISA Io Addressesn");
  506. break;
  507. case ENTIRE_RANGE:
  508. acpi_os_printf ("  Type Specific: "
  509.   "ISA and non-ISA Io Addressesn");
  510. break;
  511. default:
  512. acpi_os_printf ("  Type Specific: "
  513.   "Invalid Range attribute");
  514. break;
  515. }
  516. break;
  517. case BUS_NUMBER_RANGE:
  518. acpi_os_printf ("  Resource Type: Bus Number Rangen");
  519. break;
  520. default:
  521. acpi_os_printf ("  Invalid Resource Type..exiting.n");
  522. return;
  523. }
  524. acpi_os_printf ("  Resource %sn",
  525.  CONSUMER == address32_data->producer_consumer ?
  526.  "Consumer" : "Producer");
  527. acpi_os_printf ("  %s decoden",
  528.  SUB_DECODE == address32_data->decode ?
  529.  "Subtractive" : "Positive");
  530. acpi_os_printf ("  Min address is %s fixedn",
  531.  ADDRESS_FIXED == address32_data->min_address_fixed ?
  532.  "" : "not ");
  533. acpi_os_printf ("  Max address is %s fixedn",
  534.  ADDRESS_FIXED == address32_data->max_address_fixed ?
  535.  "" : "not ");
  536. acpi_os_printf ("  Granularity: %08Xn",
  537.  address32_data->granularity);
  538. acpi_os_printf ("  Address range min: %08Xn",
  539.  address32_data->min_address_range);
  540. acpi_os_printf ("  Address range max: %08Xn",
  541.  address32_data->max_address_range);
  542. acpi_os_printf ("  Address translation offset: %08Xn",
  543.  address32_data->address_translation_offset);
  544. acpi_os_printf ("  Address Length: %08Xn",
  545.  address32_data->address_length);
  546. if(0xFF != address32_data->resource_source.index) {
  547. acpi_os_printf ("  Resource Source Index: %Xn",
  548.  address32_data->resource_source.index);
  549. acpi_os_printf ("  Resource Source: %sn",
  550.  address32_data->resource_source.string_ptr);
  551. }
  552. return;
  553. }
  554. /*******************************************************************************
  555.  *
  556.  * FUNCTION:    Acpi_rs_dump_address64
  557.  *
  558.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  559.  *
  560.  * RETURN:      None
  561.  *
  562.  * DESCRIPTION: Prints out the various members of the Data structure type.
  563.  *
  564.  ******************************************************************************/
  565. void
  566. acpi_rs_dump_address64 (
  567. acpi_resource_data      *data)
  568. {
  569. acpi_resource_address64 *address64_data = (acpi_resource_address64 *) data;
  570. FUNCTION_ENTRY ();
  571. acpi_os_printf ("64-Bit Address Space Resourcen");
  572. switch (address64_data->resource_type) {
  573. case MEMORY_RANGE:
  574. acpi_os_printf ("  Resource Type: Memory Rangen");
  575. switch (address64_data->attribute.memory.cache_attribute) {
  576. case NON_CACHEABLE_MEMORY:
  577. acpi_os_printf ("  Type Specific: "
  578.   "Noncacheable memoryn");
  579. break;
  580. case CACHABLE_MEMORY:
  581. acpi_os_printf ("  Type Specific: "
  582.   "Cacheable memoryn");
  583. break;
  584. case WRITE_COMBINING_MEMORY:
  585. acpi_os_printf ("  Type Specific: "
  586.   "Write-combining memoryn");
  587. break;
  588. case PREFETCHABLE_MEMORY:
  589. acpi_os_printf ("  Type Specific: "
  590.   "Prefetchable memoryn");
  591. break;
  592. default:
  593. acpi_os_printf ("  Type Specific: "
  594.   "Invalid cache attributen");
  595. break;
  596. }
  597. acpi_os_printf ("  Type Specific: Read%sn",
  598. READ_WRITE_MEMORY ==
  599. address64_data->attribute.memory.read_write_attribute ?
  600. "/Write" : " Only");
  601. break;
  602. case IO_RANGE:
  603. acpi_os_printf ("  Resource Type: Io Rangen");
  604. switch (address64_data->attribute.io.range_attribute) {
  605. case NON_ISA_ONLY_RANGES:
  606. acpi_os_printf ("  Type Specific: "
  607.   "Non-ISA Io Addressesn");
  608. break;
  609. case ISA_ONLY_RANGES:
  610. acpi_os_printf ("  Type Specific: "
  611.   "ISA Io Addressesn");
  612. break;
  613. case ENTIRE_RANGE:
  614. acpi_os_printf ("  Type Specific: "
  615.   "ISA and non-ISA Io Addressesn");
  616. break;
  617. default:
  618. acpi_os_printf ("  Type Specific: "
  619.   "Invalid Range attribute");
  620. break;
  621. }
  622. break;
  623. case BUS_NUMBER_RANGE:
  624. acpi_os_printf ("  Resource Type: Bus Number Rangen");
  625. break;
  626. default:
  627. acpi_os_printf ("  Invalid Resource Type..exiting.n");
  628. return;
  629. }
  630. acpi_os_printf ("  Resource %sn",
  631.  CONSUMER == address64_data->producer_consumer ?
  632.  "Consumer" : "Producer");
  633. acpi_os_printf ("  %s decoden",
  634.  SUB_DECODE == address64_data->decode ?
  635.  "Subtractive" : "Positive");
  636. acpi_os_printf ("  Min address is %s fixedn",
  637.  ADDRESS_FIXED == address64_data->min_address_fixed ?
  638.  "" : "not ");
  639. acpi_os_printf ("  Max address is %s fixedn",
  640.  ADDRESS_FIXED == address64_data->max_address_fixed ?
  641.  "" : "not ");
  642. acpi_os_printf ("  Granularity: %16Xn",
  643.  address64_data->granularity);
  644. acpi_os_printf ("  Address range min: %16Xn",
  645.  address64_data->min_address_range);
  646. acpi_os_printf ("  Address range max: %16Xn",
  647.  address64_data->max_address_range);
  648. acpi_os_printf ("  Address translation offset: %16Xn",
  649.  address64_data->address_translation_offset);
  650. acpi_os_printf ("  Address Length: %16Xn",
  651.  address64_data->address_length);
  652. if(0xFF != address64_data->resource_source.index) {
  653. acpi_os_printf ("  Resource Source Index: %Xn",
  654.  address64_data->resource_source.index);
  655. acpi_os_printf ("  Resource Source: %sn",
  656.  address64_data->resource_source.string_ptr);
  657. }
  658. return;
  659. }
  660. /*******************************************************************************
  661.  *
  662.  * FUNCTION:    Acpi_rs_dump_extended_irq
  663.  *
  664.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  665.  *
  666.  * RETURN:      None
  667.  *
  668.  * DESCRIPTION: Prints out the various members of the Data structure type.
  669.  *
  670.  ******************************************************************************/
  671. void
  672. acpi_rs_dump_extended_irq (
  673. acpi_resource_data      *data)
  674. {
  675. acpi_resource_ext_irq   *ext_irq_data = (acpi_resource_ext_irq *) data;
  676. u8                      index = 0;
  677. FUNCTION_ENTRY ();
  678. acpi_os_printf ("Extended IRQ Resourcen");
  679. acpi_os_printf ("  Resource %sn",
  680.  CONSUMER == ext_irq_data->producer_consumer ?
  681.  "Consumer" : "Producer");
  682. acpi_os_printf ("  %sn",
  683.  LEVEL_SENSITIVE == ext_irq_data->edge_level ?
  684.  "Level" : "Edge");
  685. acpi_os_printf ("  Active %sn",
  686.  ACTIVE_LOW == ext_irq_data->active_high_low ?
  687.  "low" : "high");
  688. acpi_os_printf ("  %sn",
  689.  SHARED == ext_irq_data->shared_exclusive ?
  690.  "Shared" : "Exclusive");
  691. acpi_os_printf ("  Interrupts : %X ( ",
  692.  ext_irq_data->number_of_interrupts);
  693. for (index = 0; index < ext_irq_data->number_of_interrupts; index++) {
  694. acpi_os_printf ("%X ", ext_irq_data->interrupts[index]);
  695. }
  696. acpi_os_printf (")n");
  697. if(0xFF != ext_irq_data->resource_source.index) {
  698. acpi_os_printf ("  Resource Source Index: %X",
  699.  ext_irq_data->resource_source.index);
  700. acpi_os_printf ("  Resource Source: %s",
  701.  ext_irq_data->resource_source.string_ptr);
  702. }
  703. return;
  704. }
  705. /*******************************************************************************
  706.  *
  707.  * FUNCTION:    Acpi_rs_dump_resource_list
  708.  *
  709.  * PARAMETERS:  Data            - pointer to the resource structure to dump.
  710.  *
  711.  * RETURN:      None
  712.  *
  713.  * DESCRIPTION: Dispatches the structure to the correct dump routine.
  714.  *
  715.  ******************************************************************************/
  716. void
  717. acpi_rs_dump_resource_list (
  718. acpi_resource       *resource)
  719. {
  720. u8                  count = 0;
  721. u8                  done = FALSE;
  722. FUNCTION_ENTRY ();
  723. if (acpi_dbg_level & ACPI_LV_RESOURCES && _COMPONENT & acpi_dbg_layer) {
  724. while (!done) {
  725. acpi_os_printf ("Resource structure %x.n", count++);
  726. switch (resource->id) {
  727. case ACPI_RSTYPE_IRQ:
  728. acpi_rs_dump_irq (&resource->data);
  729. break;
  730. case ACPI_RSTYPE_DMA:
  731. acpi_rs_dump_dma (&resource->data);
  732. break;
  733. case ACPI_RSTYPE_START_DPF:
  734. acpi_rs_dump_start_dependent_functions (&resource->data);
  735. break;
  736. case ACPI_RSTYPE_END_DPF:
  737. acpi_os_printf ("End_dependent_functions Resourcen");
  738. /* Acpi_rs_dump_end_dependent_functions (Resource->Data);*/
  739. break;
  740. case ACPI_RSTYPE_IO:
  741. acpi_rs_dump_io (&resource->data);
  742. break;
  743. case ACPI_RSTYPE_FIXED_IO:
  744. acpi_rs_dump_fixed_io (&resource->data);
  745. break;
  746. case ACPI_RSTYPE_VENDOR:
  747. acpi_rs_dump_vendor_specific (&resource->data);
  748. break;
  749. case ACPI_RSTYPE_END_TAG:
  750. /*Rs_dump_end_tag (Resource->Data);*/
  751. acpi_os_printf ("End_tag Resourcen");
  752. done = TRUE;
  753. break;
  754. case ACPI_RSTYPE_MEM24:
  755. acpi_rs_dump_memory24 (&resource->data);
  756. break;
  757. case ACPI_RSTYPE_MEM32:
  758. acpi_rs_dump_memory32 (&resource->data);
  759. break;
  760. case ACPI_RSTYPE_FIXED_MEM32:
  761. acpi_rs_dump_fixed_memory32 (&resource->data);
  762. break;
  763. case ACPI_RSTYPE_ADDRESS16:
  764. acpi_rs_dump_address16 (&resource->data);
  765. break;
  766. case ACPI_RSTYPE_ADDRESS32:
  767. acpi_rs_dump_address32 (&resource->data);
  768. break;
  769. case ACPI_RSTYPE_ADDRESS64:
  770. acpi_rs_dump_address64 (&resource->data);
  771. break;
  772. case ACPI_RSTYPE_EXT_IRQ:
  773. acpi_rs_dump_extended_irq (&resource->data);
  774. break;
  775. default:
  776. acpi_os_printf ("Invalid resource typen");
  777. break;
  778. }
  779. resource = POINTER_ADD (acpi_resource, resource, resource->length);
  780. }
  781. }
  782. return;
  783. }
  784. /*******************************************************************************
  785.  *
  786.  * FUNCTION:    Acpi_rs_dump_irq_list
  787.  *
  788.  * PARAMETERS:  Data            - pointer to the routing table to dump.
  789.  *
  790.  * RETURN:      None
  791.  *
  792.  * DESCRIPTION: Dispatches the structures to the correct dump routine.
  793.  *
  794.  ******************************************************************************/
  795. void
  796. acpi_rs_dump_irq_list (
  797. u8                  *route_table)
  798. {
  799. u8                  *buffer = route_table;
  800. u8                  count = 0;
  801. u8                  done = FALSE;
  802. pci_routing_table   *prt_element;
  803. FUNCTION_ENTRY ();
  804. if (acpi_dbg_level & ACPI_LV_RESOURCES && _COMPONENT & acpi_dbg_layer) {
  805. prt_element = (pci_routing_table *) buffer;
  806. while (!done) {
  807. acpi_os_printf ("PCI IRQ Routing Table structure %X.n", count++);
  808. acpi_os_printf ("  Address: %Xn",
  809.  prt_element->address);
  810. acpi_os_printf ("  Pin: %Xn", prt_element->pin);
  811. acpi_os_printf ("  Source: %sn", prt_element->source);
  812. acpi_os_printf ("  Source_index: %Xn",
  813.  prt_element->source_index);
  814. buffer += prt_element->length;
  815. prt_element = (pci_routing_table *) buffer;
  816. if(0 == prt_element->length) {
  817. done = TRUE;
  818. }
  819. }
  820. }
  821. return;
  822. }
  823. #endif