Merge tag 'ftracetest-3.18' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[cascardo/linux.git] / drivers / irqchip / irq-armada-370-xp.c
index 574aba0..3e238cd 100644 (file)
@@ -136,6 +136,10 @@ static int armada_370_xp_setup_msi_irq(struct msi_chip *chip,
        struct msi_msg msg;
        int virq, hwirq;
 
+       /* We support MSI, but not MSI-X */
+       if (desc->msi_attrib.is_msix)
+               return -EINVAL;
+
        hwirq = armada_370_xp_alloc_msi();
        if (hwirq < 0)
                return hwirq;
@@ -166,15 +170,6 @@ static void armada_370_xp_teardown_msi_irq(struct msi_chip *chip,
        armada_370_xp_free_msi(hwirq);
 }
 
-static int armada_370_xp_check_msi_device(struct msi_chip *chip, struct pci_dev *dev,
-                                         int nvec, int type)
-{
-       /* We support MSI, but not MSI-X */
-       if (type == PCI_CAP_ID_MSI)
-               return 0;
-       return -EINVAL;
-}
-
 static struct irq_chip armada_370_xp_msi_irq_chip = {
        .name = "armada_370_xp_msi_irq",
        .irq_enable = unmask_msi_irq,
@@ -213,7 +208,6 @@ static int armada_370_xp_msi_init(struct device_node *node,
 
        msi_chip->setup_irq = armada_370_xp_setup_msi_irq;
        msi_chip->teardown_irq = armada_370_xp_teardown_msi_irq;
-       msi_chip->check_device = armada_370_xp_check_msi_device;
        msi_chip->of_node = node;
 
        armada_370_xp_msi_domain =
@@ -393,13 +387,15 @@ static void armada_370_xp_handle_msi_irq(struct pt_regs *regs, bool is_chained)
                if (!(msimask & BIT(msinr)))
                        continue;
 
-               irq = irq_find_mapping(armada_370_xp_msi_domain,
-                                      msinr - 16);
-
-               if (is_chained)
+               if (is_chained) {
+                       irq = irq_find_mapping(armada_370_xp_msi_domain,
+                                              msinr - 16);
                        generic_handle_irq(irq);
-               else
-                       handle_IRQ(irq, regs);
+               } else {
+                       irq = msinr - 16;
+                       handle_domain_irq(armada_370_xp_msi_domain,
+                                         irq, regs);
+               }
        }
 }
 #else
@@ -444,9 +440,8 @@ armada_370_xp_handle_irq(struct pt_regs *regs)
                        break;
 
                if (irqnr > 1) {
-                       irqnr = irq_find_mapping(armada_370_xp_mpic_domain,
-                                       irqnr);
-                       handle_IRQ(irqnr, regs);
+                       handle_domain_irq(armada_370_xp_mpic_domain,
+                                         irqnr, regs);
                        continue;
                }