fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / mips / pci / fixup-atlas.c
index 4cbef34..c6cd6e9 100644 (file)
@@ -1,13 +1,36 @@
+/*
+ * Copyright (C) 2003, 2004  Ralf Baechle (ralf@linux-mips.org)
+ * Copyright (C) 2005  MIPS Technologies, Inc.  All rights reserved.
+ *     Author:  Maciej W. Rozycki <macro@mips.com>
+ *
+ *  This program is free software; you can distribute it and/or modify it
+ *  under the terms of the GNU General Public License (Version 2) as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope it will be useful, but WITHOUT
+ *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ *  for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ */
 #include <linux/init.h>
 #include <linux/pci.h>
+
 #include <asm/mips-boards/atlasint.h>
 
-#define INTD           ATLASINT_INTD
-#define INTC           ATLASINT_INTC
-#define INTB           ATLASINT_INTB
-#define INTA           ATLASINT_INTA
-#define SCSI           ATLASINT_SCSI
-#define ETH            ATLASINT_ETH
+#define PCIA           ATLAS_INT_PCIA
+#define PCIB           ATLAS_INT_PCIB
+#define PCIC           ATLAS_INT_PCIC
+#define PCID           ATLAS_INT_PCID
+#define INTA           ATLAS_INT_INTA
+#define INTB           ATLAS_INT_INTB
+#define ETH            ATLAS_INT_ETH
+#define INTC           ATLAS_INT_INTC
+#define SCSI           ATLAS_INT_SCSI
+#define INTD           ATLAS_INT_INTD
 
 static char irq_tab[][5] __initdata = {
        /*      INTA    INTB    INTC    INTD */
@@ -26,13 +49,13 @@ static char irq_tab[][5] __initdata = {
        {0,     0,      0,      0,      0 },    /* 12: Unused */
        {0,     0,      0,      0,      0 },    /* 13: Unused */
        {0,     0,      0,      0,      0 },    /* 14: Unused */
-       {0,     0,      0,      0,      0 },    /* 15: Unused */
+       {0,     PCIA,   PCIB,   PCIC,   PCID }, /* 15: cPCI (behind 21150) */
        {0,     SCSI,   0,      0,      0 },    /* 16: SYM53C810A SCSI */
        {0,     0,      0,      0,      0 },    /* 17: Core */
-       {0,     INTA,   INTB,   INTC,   INTD }, /* 18: PCI Slot */
-       {0,     ETH,    0,      0,      0 },    /* 19: SAA9730 Ethernet */
-       {0,     0,      0,      0,      0 },    /* 20: PCI Slot 3 */
-       {0,     0,      0,      0,      0 }     /* 21: PCI Slot 4 */
+       {0,     INTA,   INTB,   INTC,   INTD }, /* 18: PCI Slot */
+       {0,     ETH,    0,      0,      0 },    /* 19: SAA9730 Eth. et al. */
+       {0,     0,      0,      0,      0 },    /* 20: Unused */
+       {0,     0,      0,      0,      0 }     /* 21: Unused */
 };
 
 int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
@@ -40,11 +63,13 @@ int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
        return irq_tab[slot][pin];
 }
 
-void __init pcibios_fixup_irqs(void)
+/* Do platform specific device initialization at pci_enable_device() time */
+int pcibios_plat_dev_init(struct pci_dev *dev)
 {
+       return 0;
 }
 
-#if CONFIG_KGDB
+#ifdef CONFIG_KGDB
 /*
  * The PCI scan may have moved the saa9730 I/O address, so reread
  * the address here.
@@ -60,13 +85,7 @@ static void atlas_saa9730_base_fixup (struct pci_dev *pdev)
        printk ("saa9730_base = %x\n", saa9730_base);
 }
 
-#endif
-
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_PHILIPS, PCI_DEVICE_ID_PHILIPS_SAA9730,
+        atlas_saa9730_base_fixup);
 
-struct pci_fixup pcibios_fixups[] __initdata = {
-#ifdef CONFIG_KGDB
-       {PCI_FIXUP_HEADER, PCI_VENDOR_ID_PHILIPS, PCI_DEVICE_ID_PHILIPS_SAA9730,
-        atlas_saa9730_base_fixup},
 #endif
-       { 0 }
-};