original comment: +Wilson03172004,marked due to this pci host does not support MWI
[linux-2.4.git] / arch / mips / sni / pci.c
1 /*
2  * This file is subject to the terms and conditions of the GNU General Public
3  * License.  See the file "COPYING" in the main directory of this archive
4  * for more details.
5  *
6  * SNI specific PCI support for RM200/RM300.
7  *
8  * Copyright (C) 1997 - 2000 Ralf Baechle
9  */
10 #include <linux/config.h>
11 #include <linux/kernel.h>
12 #include <linux/init.h>
13 #include <linux/pci.h>
14 #include <linux/types.h>
15 #include <asm/byteorder.h>
16 #include <asm/sni.h>
17
18 #if 0
19 /* To do:  Bring this uptodate ...  */
20 static void pcimt_pcibios_fixup (void)
21 {
22         struct pci_dev *dev;
23
24         pci_for_each_dev(dev) {
25                 /*
26                  * TODO: Take care of RM300 revision D boards for where the
27                  * network slot became an ordinary PCI slot.
28                  */
29                 if (dev->devfn == PCI_DEVFN(1, 0)) {
30                         /* Evil hack ...  */
31                         set_c0_config(CONF_CM_CMASK, CONF_CM_CACHABLE_NO_WA);
32                         dev->irq = PCIMT_IRQ_SCSI;
33                         continue;
34                 }
35                 if (dev->devfn == PCI_DEVFN(2, 0)) {
36                         dev->irq = PCIMT_IRQ_ETHERNET;
37                         continue;
38                 }
39
40                 switch(dev->irq) {
41                 case 1 ... 4:
42                         dev->irq += PCIMT_IRQ_INTA - 1;
43                         break;
44                 case 0:
45                         break;
46                 default:
47                         printk("PCI device on bus %d, dev %d, function %d "
48                                "impossible interrupt configured.\n",
49                                dev->bus->number, PCI_SLOT(dev->devfn),
50                                PCI_SLOT(dev->devfn));
51                 }
52         }
53 }
54 #endif
55
56 void __init
57 pcibios_fixup_bus(struct pci_bus *b)
58 {
59 }
60
61 extern struct pci_ops sni_pci_ops;
62
63 void __init pcibios_init(void)
64 {
65         struct pci_ops *ops = &sni_pci_ops;
66
67         pci_scan_bus(0, ops, NULL);
68 }
69
70 unsigned __init int pcibios_assign_all_busses(void)
71 {
72         return 0;
73 }
74
75 struct pci_fixup pcibios_fixups[] = {
76         { 0 }
77 };