]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
PCI: Introduce new MSI chip infrastructure
authorThierry Reding <thierry.reding@avionic-design.de>
Fri, 9 Aug 2013 20:27:08 +0000 (22:27 +0200)
committerLothar Waßmann <LW@KARO-electronics.de>
Wed, 20 Aug 2014 08:06:43 +0000 (10:06 +0200)
The new struct msi_chip is used to associated an MSI controller with a
PCI bus. It is automatically handed down from the root to its children
during bus enumeration.

This patch provides default (weak) implementations for the architecture-
specific MSI functions (arch_setup_msi_irq(), arch_teardown_msi_irq()
and arch_msi_check_device()) which check if a PCI device's bus has an
attached MSI chip and forward the call appropriately.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Daniel Price <daniel.price@gmail.com>
Tested-by: Thierry Reding <thierry.reding@gmail.com>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
include/linux/msi.h

index 92a2f991262affb5b0ff4ecdbb57442ac7ae2733..0ef1579d692ee7bfb5188cd7598f4fb660264563 100644 (file)
@@ -80,4 +80,15 @@ struct msi_chip {
                            int nvec, int type);
 };
 
+struct msi_chip {
+       struct module *owner;
+       struct device *dev;
+
+       int (*setup_irq)(struct msi_chip *chip, struct pci_dev *dev,
+                        struct msi_desc *desc);
+       void (*teardown_irq)(struct msi_chip *chip, unsigned int irq);
+       int (*check_device)(struct msi_chip *chip, struct pci_dev *dev,
+                           int nvec, int type);
+};
+
 #endif /* LINUX_MSI_H */