diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2013-06-04 13:18:14 -0400 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2013-06-04 19:24:31 -0400 |
commit | 6ae32c539c0412ca789fb6041be45eeabf78431c (patch) | |
tree | b36080d53311d18da30cd2ab502cb7c27200eedc | |
parent | 9a994e8ec7e7d6b1a66c74a683596b0f38f4e345 (diff) |
PCI: Add pcibios_release_device()
Platforms may want to provide architecture-specific functionality when
a PCI device is released. Add a pcibios_release_device() call that
architectures can override to do so.
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
-rw-r--r-- | drivers/pci/pci.c | 10 | ||||
-rw-r--r-- | drivers/pci/probe.c | 1 | ||||
-rw-r--r-- | include/linux/pci.h | 1 |
3 files changed, 12 insertions, 0 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index e5f4e55d407d..709791b70ca0 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
@@ -1335,6 +1335,16 @@ int __weak pcibios_add_device (struct pci_dev *dev) | |||
1335 | } | 1335 | } |
1336 | 1336 | ||
1337 | /** | 1337 | /** |
1338 | * pcibios_release_device - provide arch specific hooks when releasing device dev | ||
1339 | * @dev: the PCI device being released | ||
1340 | * | ||
1341 | * Permits the platform to provide architecture specific functionality when | ||
1342 | * devices are released. This is the default implementation. Architecture | ||
1343 | * implementations can override this. | ||
1344 | */ | ||
1345 | void __weak pcibios_release_device(struct pci_dev *dev) {} | ||
1346 | |||
1347 | /** | ||
1338 | * pcibios_disable_device - disable arch specific PCI resources for device dev | 1348 | * pcibios_disable_device - disable arch specific PCI resources for device dev |
1339 | * @dev: the PCI device to disable | 1349 | * @dev: the PCI device to disable |
1340 | * | 1350 | * |
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 70f10fa3c1b2..58cc0a8a0979 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c | |||
@@ -1132,6 +1132,7 @@ static void pci_release_dev(struct device *dev) | |||
1132 | pci_dev = to_pci_dev(dev); | 1132 | pci_dev = to_pci_dev(dev); |
1133 | pci_release_capabilities(pci_dev); | 1133 | pci_release_capabilities(pci_dev); |
1134 | pci_release_of_node(pci_dev); | 1134 | pci_release_of_node(pci_dev); |
1135 | pcibios_release_device(pci_dev); | ||
1135 | kfree(pci_dev); | 1136 | kfree(pci_dev); |
1136 | } | 1137 | } |
1137 | 1138 | ||
diff --git a/include/linux/pci.h b/include/linux/pci.h index 3a24e4ff3248..8f170e9073a5 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -1643,6 +1643,7 @@ void pcibios_set_master(struct pci_dev *dev); | |||
1643 | int pcibios_set_pcie_reset_state(struct pci_dev *dev, | 1643 | int pcibios_set_pcie_reset_state(struct pci_dev *dev, |
1644 | enum pcie_reset_state state); | 1644 | enum pcie_reset_state state); |
1645 | int pcibios_add_device(struct pci_dev *dev); | 1645 | int pcibios_add_device(struct pci_dev *dev); |
1646 | void pcibios_release_device(struct pci_dev *dev); | ||
1646 | 1647 | ||
1647 | #ifdef CONFIG_PCI_MMCONFIG | 1648 | #ifdef CONFIG_PCI_MMCONFIG |
1648 | void __init pci_mmcfg_early_init(void); | 1649 | void __init pci_mmcfg_early_init(void); |