ar71xx: use spinlock in ar71xx_device_{start,stop}
[openwrt.git] / target / linux / ar71xx / files / arch / mips / ar71xx / pci.c
index 7e18d8b..3e1e8db 100644 (file)
  *  by the Free Software Foundation.
  */
 
+#include <linux/kernel.h>
+
+#include <asm/traps.h>
+
 #include <asm/mach-ar71xx/ar71xx.h>
 #include <asm/mach-ar71xx/pci.h>
 
@@ -38,15 +42,52 @@ int pcibios_plat_dev_init(struct pci_dev *dev)
 
 int __init pcibios_map_irq(const struct pci_dev *dev, uint8_t slot, uint8_t pin)
 {
-       return ar71xx_pcibios_map_irq(dev, slot, pin);
+       int ret = 0;
+
+       switch (ar71xx_soc) {
+       case AR71XX_SOC_AR7130:
+       case AR71XX_SOC_AR7141:
+       case AR71XX_SOC_AR7161:
+               ret = ar71xx_pcibios_map_irq(dev, slot, pin);
+               break;
+
+       case AR71XX_SOC_AR7240:
+       case AR71XX_SOC_AR7241:
+       case AR71XX_SOC_AR7242:
+               ret = ar724x_pcibios_map_irq(dev, slot, pin);
+               break;
+
+       default:
+               break;
+       }
+
+       return ret;
 }
 
 int __init ar71xx_pci_init(unsigned nr_irqs, struct ar71xx_pci_irq *map)
 {
+       int ret = 0;
+
+       switch (ar71xx_soc) {
+       case AR71XX_SOC_AR7130:
+       case AR71XX_SOC_AR7141:
+       case AR71XX_SOC_AR7161:
+               board_be_handler = ar71xx_be_handler;
+               ret = ar71xx_pcibios_init();
+               break;
+
+       case AR71XX_SOC_AR7240:
+       case AR71XX_SOC_AR7241:
+       case AR71XX_SOC_AR7242:
+               ret = ar724x_pcibios_init();
+               break;
+
+       default:
+               return 0;
+       }
+
        ar71xx_pci_nr_irqs = nr_irqs;
        ar71xx_pci_irq_map = map;
 
-       board_be_handler = ar71xx_be_handler;
-
-       return ar71xx_pcibios_init();
+       return ret;
 }
This page took 0.027172 seconds and 4 git commands to generate.