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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * FILE NAME
  3.  * arch/mips/vr41xx/nec-eagle/pci_fixup.c
  4.  *
  5.  * BRIEF MODULE DESCRIPTION
  6.  * The NEC Eagle/Hawk Board specific PCI fixups.
  7.  *
  8.  * Author: Yoichi Yuasa
  9.  *         yyuasa@mvista.com or source@mvista.com
  10.  *
  11.  * Copyright 2001,2002 MontaVista Software Inc.
  12.  *
  13.  *  This program is free software; you can redistribute it and/or modify it
  14.  *  under the terms of the GNU General Public License as published by the
  15.  *  Free Software Foundation; either version 2 of the License, or (at your
  16.  *  option) any later version.
  17.  *
  18.  *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
  19.  *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  20.  *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  21.  *  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  22.  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  23.  *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
  24.  *  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  25.  *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
  26.  *  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
  27.  *  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28.  *
  29.  *  You should have received a copy of the GNU General Public License along
  30.  *  with this program; if not, write to the Free Software Foundation, Inc.,
  31.  *  675 Mass Ave, Cambridge, MA 02139, USA.
  32.  */
  33. /*
  34.  * Changes:
  35.  *  MontaVista Software Inc. <yyuasa@mvista.com> or <source@mvista.com>
  36.  *  - Moved mips_pci_channels[] to arch/mips/vr41xx/vr4122/eagle/setup.c.
  37.  *  - Added support for NEC Hawk.
  38.  *
  39.  *  Paul Mundt <lethal@chaoticdreams.org>
  40.  *  - Fix empty break statements, remove useless CONFIG_PCI.
  41.  *
  42.  *  MontaVista Software Inc. <yyuasa@mvista.com> or <source@mvista.com>
  43.  *  - New creation, NEC Eagle is supported.
  44.  */
  45. #include <linux/config.h>
  46. #include <linux/init.h>
  47. #include <linux/pci.h>
  48. #include <asm/vr41xx/eagle.h>
  49. #ifdef CONFIG_VRC4173
  50. #include <asm/vr41xx/vrc4173.h>
  51. #endif
  52. void __init pcibios_fixup_resources(struct pci_dev *dev)
  53. {
  54. }
  55. void __init pcibios_fixup(void)
  56. {
  57. }
  58. void __init pcibios_fixup_irqs(void)
  59. {
  60. struct pci_dev *dev;
  61. u8 slot, func, pin;
  62. pci_for_each_dev(dev) {
  63. slot = PCI_SLOT(dev->devfn);
  64. func = PCI_FUNC(dev->devfn);
  65. pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
  66. dev->irq = 0;
  67. switch (slot) {
  68. case 8:
  69. switch (pin) {
  70. case 1:
  71. dev->irq = CP_INTA_IRQ;
  72. break;
  73. case 2:
  74. dev->irq = CP_INTB_IRQ;
  75. break;
  76. case 3:
  77. dev->irq = CP_INTC_IRQ;
  78. break;
  79. case 4:
  80. dev->irq = CP_INTD_IRQ;
  81. break;
  82. }
  83. break;
  84. case 9:
  85. switch (pin) {
  86. case 1:
  87. dev->irq = CP_INTD_IRQ;
  88. break;
  89. case 2:
  90. dev->irq = CP_INTA_IRQ;
  91. break;
  92. case 3:
  93. dev->irq = CP_INTB_IRQ;
  94. break;
  95. case 4:
  96. dev->irq = CP_INTC_IRQ;
  97. break;
  98. }
  99. break;
  100. case 10:
  101. switch (pin) {
  102. case 1:
  103. dev->irq = CP_INTC_IRQ;
  104. break;
  105. case 2:
  106. dev->irq = CP_INTD_IRQ;
  107. break;
  108. case 3:
  109. dev->irq = CP_INTA_IRQ;
  110. break;
  111. case 4:
  112. dev->irq = CP_INTB_IRQ;
  113. break;
  114. }
  115. break;
  116. #ifdef CONFIG_VRC4173
  117. case 12:
  118. dev->irq = VRC4173_CARDU1_IRQ;
  119. break;
  120. case 13:
  121. dev->irq = VRC4173_CARDU2_IRQ;
  122. break;
  123. case 24:
  124. dev->irq = VRC4173_CARDU1_IRQ;
  125. break;
  126. case 25:
  127. dev->irq = VRC4173_CARDU2_IRQ;
  128. break;
  129. #endif
  130. case 28:
  131. dev->irq = LANINTA_IRQ;
  132. break;
  133. case 29:
  134. dev->irq = PCISLOT_IRQ;
  135. break;
  136. #ifdef CONFIG_VRC4173
  137. case 30:
  138. switch (func) {
  139. case 0:
  140. dev->irq = VRC4173_IRQ;
  141. break;
  142. case 1:
  143. dev->irq = VRC4173_AC97U_IRQ;
  144. break;
  145. case 2:
  146. dev->irq = VRC4173_USBU_IRQ;
  147. break;
  148. }
  149. break;
  150. #endif
  151. }
  152. pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
  153. }
  154. }
  155. unsigned int pcibios_assign_all_busses(void)
  156. {
  157. return 0;
  158. }