ar71xx: merge AR71XX_IRQ_CPU_{PCI,WMAC} into AR71XX_IRQ_CPU_IP2
[openwrt.git] / target / linux / ar71xx / files / arch / mips / ar71xx / irq.c
index a778f5a..25d643d 100644 (file)
@@ -95,7 +95,7 @@ static void __init ar71xx_pci_irq_init(void)
                                         handle_level_irq);
        }
 
-       setup_irq(AR71XX_CPU_IRQ_PCI, &ar71xx_pci_irqaction);
+       setup_irq(AR71XX_CPU_IRQ_IP2, &ar71xx_pci_irqaction);
 }
 
 static void ar724x_pci_irq_dispatch(void)
@@ -158,8 +158,15 @@ static struct irqaction ar724x_pci_irqaction = {
 
 static void __init ar724x_pci_irq_init(void)
 {
+       u32 t;
        int i;
 
+       t = ar71xx_reset_rr(AR724X_RESET_REG_RESET_MODULE);
+       if (t & (AR724X_RESET_PCIE | AR724X_RESET_PCIE_PHY |
+                AR724X_RESET_PCIE_PHY_SERIAL)) {
+               return;
+       }
+
        ar71xx_ip2_irq_handler = ar724x_pci_irq_dispatch;
 
        ar724x_pci_wr(AR724X_PCI_REG_INT_MASK, 0);
@@ -172,11 +179,11 @@ static void __init ar724x_pci_irq_init(void)
                                         handle_level_irq);
        }
 
-       setup_irq(AR71XX_CPU_IRQ_PCI, &ar724x_pci_irqaction);
+       setup_irq(AR71XX_CPU_IRQ_IP2, &ar724x_pci_irqaction);
 }
 #else
-static inline void ar71xx_pci_irq_init(void) {}
-static inline void ar724x_pci_irq_init(void) {}
+static inline void ar71xx_pci_irq_init(void) {};
+static inline void ar724x_pci_irq_init(void) {};
 #endif /* CONFIG_PCI */
 
 static void ar71xx_gpio_irq_dispatch(void)
@@ -361,7 +368,7 @@ static void __init ar71xx_misc_irq_init(void)
 
 static void ar913x_wmac_irq_dispatch(void)
 {
-       do_IRQ(AR71XX_CPU_IRQ_WMAC);
+       do_IRQ(AR71XX_CPU_IRQ_IP2);
 }
 
 asmlinkage void plat_irq_dispatch(void)
@@ -398,6 +405,8 @@ void __init arch_init_irq(void)
 
        ar71xx_misc_irq_init();
 
+       cp0_perfcount_irq = AR71XX_MISC_IRQ_PERFC;
+
        switch (ar71xx_soc) {
        case AR71XX_SOC_AR7130:
        case AR71XX_SOC_AR7141: