|
@@ -25,6 +25,51 @@
|
|
|
|
|
|
static int pci_msi_enable = 1;
|
|
|
|
|
|
+/* Arch hooks */
|
|
|
+
|
|
|
+int __attribute__ ((weak))
|
|
|
+arch_msi_check_device(struct pci_dev *dev, int nvec, int type)
|
|
|
+{
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+int __attribute__ ((weak))
|
|
|
+arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *entry)
|
|
|
+{
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+int __attribute__ ((weak))
|
|
|
+arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
|
|
|
+{
|
|
|
+ struct msi_desc *entry;
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ list_for_each_entry(entry, &dev->msi_list, list) {
|
|
|
+ ret = arch_setup_msi_irq(dev, entry);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+void __attribute__ ((weak)) arch_teardown_msi_irq(unsigned int irq)
|
|
|
+{
|
|
|
+ return;
|
|
|
+}
|
|
|
+
|
|
|
+void __attribute__ ((weak))
|
|
|
+arch_teardown_msi_irqs(struct pci_dev *dev)
|
|
|
+{
|
|
|
+ struct msi_desc *entry;
|
|
|
+
|
|
|
+ list_for_each_entry(entry, &dev->msi_list, list) {
|
|
|
+ if (entry->irq != 0)
|
|
|
+ arch_teardown_msi_irq(entry->irq);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static void msi_set_enable(struct pci_dev *dev, int enable)
|
|
|
{
|
|
|
int pos;
|
|
@@ -682,49 +727,3 @@ void pci_msi_init_pci_dev(struct pci_dev *dev)
|
|
|
{
|
|
|
INIT_LIST_HEAD(&dev->msi_list);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-/* Arch hooks */
|
|
|
-
|
|
|
-int __attribute__ ((weak))
|
|
|
-arch_msi_check_device(struct pci_dev* dev, int nvec, int type)
|
|
|
-{
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-int __attribute__ ((weak))
|
|
|
-arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *entry)
|
|
|
-{
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-int __attribute__ ((weak))
|
|
|
-arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
|
|
|
-{
|
|
|
- struct msi_desc *entry;
|
|
|
- int ret;
|
|
|
-
|
|
|
- list_for_each_entry(entry, &dev->msi_list, list) {
|
|
|
- ret = arch_setup_msi_irq(dev, entry);
|
|
|
- if (ret)
|
|
|
- return ret;
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-void __attribute__ ((weak)) arch_teardown_msi_irq(unsigned int irq)
|
|
|
-{
|
|
|
- return;
|
|
|
-}
|
|
|
-
|
|
|
-void __attribute__ ((weak))
|
|
|
-arch_teardown_msi_irqs(struct pci_dev *dev)
|
|
|
-{
|
|
|
- struct msi_desc *entry;
|
|
|
-
|
|
|
- list_for_each_entry(entry, &dev->msi_list, list) {
|
|
|
- if (entry->irq != 0)
|
|
|
- arch_teardown_msi_irq(entry->irq);
|
|
|
- }
|
|
|
-}
|