lkml.org 
[lkml]   [2012]   [Jul]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V2 2/4] PCI: Add pcibios_add_device
    Date
    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>
    Tested-by: Seth Forshee <seth.forshee@canonical.com>
    ---
    drivers/pci/bus.c | 5 +++++
    drivers/pci/pci.c | 13 +++++++++++++
    include/linux/pci.h | 1 +
    3 files changed, 19 insertions(+)

    diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
    index 4b0970b..e2f447e 100644
    --- a/drivers/pci/bus.c
    +++ b/drivers/pci/bus.c
    @@ -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;
    diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
    index f3ea977..fec3a92 100644
    --- a/drivers/pci/pci.c
    +++ b/drivers/pci/pci.c
    @@ -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
    diff --git a/include/linux/pci.h b/include/linux/pci.h
    index 5faa831..6a2625c 100644
    --- a/include/linux/pci.h
    +++ b/include/linux/pci.h
    @@ -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);
    --
    1.7.10.4


    \
     
     \ /
      Last update: 2012-07-27 19:21    [W:0.028 / U:29.944 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site