]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
PCI: Add pcibios_add_device
authorMatthew Garrett <mjg@redhat.com>
Thu, 23 Aug 2012 16:36:41 +0000 (12:36 -0400)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 24 Aug 2012 15:29:14 +0000 (09:29 -0600)
Platforms may want to provide architecture-specific functionality during
PCI enumeration. Add a pcibios_add_device() call that architectures can
override to do so.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/bus.c
drivers/pci/pci.c
include/linux/pci.h

index 4b0970b46e0b813ff2623f16dee6807892b370e7..e2f447ed8bc9e9a2e267fe597147c49755fa3a2b 100644 (file)
@@ -166,6 +166,11 @@ int pci_bus_add_device(struct pci_dev *dev)
        int retval;
 
        pci_fixup_device(pci_fixup_final, dev);
+
+       retval = pcibios_add_device(dev);
+       if (retval)
+               return retval;
+
        retval = device_add(&dev->dev);
        if (retval)
                return retval;
index f3ea977a5b1bf6f458c8ed0757cd8e02cc1d3ff2..c58701268dea6970548dbd02edd8fd73254ce376 100644 (file)
@@ -1385,6 +1385,19 @@ void pcim_pin_device(struct pci_dev *pdev)
                dr->pinned = 1;
 }
 
+/*
+ * pcibios_add_device - provide arch specific hooks when adding device dev
+ * @dev: the PCI device being added
+ *
+ * Permits the platform to provide architecture specific functionality when
+ * devices are added. This is the default implementation. Architecture
+ * implementations can override this.
+ */
+int __weak pcibios_add_device (struct pci_dev *dev)
+{
+       return 0;
+}
+
 /**
  * pcibios_disable_device - disable arch specific PCI resources for device dev
  * @dev: the PCI device to disable
index 5faa8310eec9ea02df6618345eb299cdee74d26b..6a2625c63507f7d8517912b47f12778231edefd3 100644 (file)
@@ -1582,6 +1582,7 @@ void pcibios_disable_device(struct pci_dev *dev);
 void pcibios_set_master(struct pci_dev *dev);
 int pcibios_set_pcie_reset_state(struct pci_dev *dev,
                                 enum pcie_reset_state state);
+int pcibios_add_device(struct pci_dev *dev);
 
 #ifdef CONFIG_PCI_MMCONFIG
 extern void __init pci_mmcfg_early_init(void);