Commit 6ae32c53 authored by Sebastian Ott's avatar Sebastian Ott Committed by Bjorn Helgaas

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: default avatarSebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent 9a994e8e
...@@ -1334,6 +1334,16 @@ int __weak pcibios_add_device (struct pci_dev *dev) ...@@ -1334,6 +1334,16 @@ int __weak pcibios_add_device (struct pci_dev *dev)
return 0; return 0;
} }
/**
* pcibios_release_device - provide arch specific hooks when releasing device dev
* @dev: the PCI device being released
*
* Permits the platform to provide architecture specific functionality when
* devices are released. This is the default implementation. Architecture
* implementations can override this.
*/
void __weak pcibios_release_device(struct pci_dev *dev) {}
/** /**
* pcibios_disable_device - disable arch specific PCI resources for device dev * pcibios_disable_device - disable arch specific PCI resources for device dev
* @dev: the PCI device to disable * @dev: the PCI device to disable
......
...@@ -1132,6 +1132,7 @@ static void pci_release_dev(struct device *dev) ...@@ -1132,6 +1132,7 @@ static void pci_release_dev(struct device *dev)
pci_dev = to_pci_dev(dev); pci_dev = to_pci_dev(dev);
pci_release_capabilities(pci_dev); pci_release_capabilities(pci_dev);
pci_release_of_node(pci_dev); pci_release_of_node(pci_dev);
pcibios_release_device(pci_dev);
kfree(pci_dev); kfree(pci_dev);
} }
......
...@@ -1643,6 +1643,7 @@ void pcibios_set_master(struct pci_dev *dev); ...@@ -1643,6 +1643,7 @@ void pcibios_set_master(struct pci_dev *dev);
int pcibios_set_pcie_reset_state(struct pci_dev *dev, int pcibios_set_pcie_reset_state(struct pci_dev *dev,
enum pcie_reset_state state); enum pcie_reset_state state);
int pcibios_add_device(struct pci_dev *dev); int pcibios_add_device(struct pci_dev *dev);
void pcibios_release_device(struct pci_dev *dev);
#ifdef CONFIG_PCI_MMCONFIG #ifdef CONFIG_PCI_MMCONFIG
void __init pci_mmcfg_early_init(void); void __init pci_mmcfg_early_init(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment