Skip to content

Commit

Permalink
PCI: Add pcibios_add_device
Browse files Browse the repository at this point in the history
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>
Tested-by: Seth Forshee <seth.forshee@canonical.com>
  • Loading branch information
Matthew Garrett authored and Bjorn Helgaas committed Dec 5, 2012
1 parent dd5fc85 commit eca0d46
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
5 changes: 5 additions & 0 deletions drivers/pci/bus.c
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,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;
Expand Down
13 changes: 13 additions & 0 deletions drivers/pci/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -1333,6 +1333,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
Expand Down
1 change: 1 addition & 0 deletions include/linux/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -1592,6 +1592,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);
Expand Down

0 comments on commit eca0d46

Please sign in to comment.