MIPS: Octeon: Disallow MSI-X interrupt and fall back to MSI interrupts.
[sfrench/cifs-2.6.git] / arch / mips / pci / msi-octeon.c
index 7c756408b85dc7759df5cb2b6c5e0a7fe90a1683..d8080499872a5af2bbf47c1f2431744b94d4ef1b 100644 (file)
@@ -177,6 +177,34 @@ msi_irq_allocated:
        return 0;
 }
 
+int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
+{
+       struct msi_desc *entry;
+       int ret;
+
+       /*
+        * MSI-X is not supported.
+        */
+       if (type == PCI_CAP_ID_MSIX)
+               return -EINVAL;
+
+       /*
+        * If an architecture wants to support multiple MSI, it needs to
+        * override arch_setup_msi_irqs()
+        */
+       if (type == PCI_CAP_ID_MSI && nvec > 1)
+               return 1;
+
+       list_for_each_entry(entry, &dev->msi_list, list) {
+               ret = arch_setup_msi_irq(dev, entry);
+               if (ret < 0)
+                       return ret;
+               if (ret > 0)
+                       return -ENOSPC;
+       }
+
+       return 0;
+}
 
 /**
  * Called when a device no longer needs its MSI interrupts. All