All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Garrett <mjg@redhat.com>
To: matt.fleming@intel.com
Cc: linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org,
	x86@kernel.org, linux-pci@vger.kernel.org, bhelgaas@google.com,
	Matthew Garrett <mjg@redhat.com>
Subject: [PATCH V2 2/4] PCI: Add pcibios_add_device
Date: Fri, 27 Jul 2012 12:52:12 -0400	[thread overview]
Message-ID: <1343407934-459-2-git-send-email-mjg@redhat.com> (raw)
In-Reply-To: <1343407934-459-1-git-send-email-mjg@redhat.com>

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


  reply	other threads:[~2012-07-27 16:52 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-27 16:52 [PATCH V2 1/4] EFI: Stash ROMs if they're not in the PCI BAR Matthew Garrett
2012-07-27 16:52 ` Matthew Garrett [this message]
2012-07-27 16:52 ` [PATCH V2 3/4] PCI: Add support for non-BAR ROMs Matthew Garrett
2012-07-29 21:49   ` [PATCH] Fix priority of non-BAR ROM data David Woodhouse
2012-07-29 21:53     ` Matthew Garrett
2012-08-01 14:20       ` Bjorn Helgaas
2012-08-01 14:26         ` Matthew Garrett
2012-07-27 16:52 ` [PATCH V2 4/4] X86: Use PCI setup data Matthew Garrett
2012-07-31 22:32 ` [PATCH V2 1/4] EFI: Stash ROMs if they're not in the PCI BAR Greg KH
2012-08-01 16:54   ` Matthew Garrett
2012-08-01 23:21     ` Greg KH
2012-08-02  4:02       ` Seth Forshee
2012-08-02 10:34         ` Greg KH
2012-08-02 14:57           ` Francois Rigaut
2012-08-02 16:12             ` Seth Forshee
2012-08-02 22:40               ` Francois Rigaut
2012-08-02 22:54                 ` Francois Rigaut
2012-08-03  4:53                   ` Seth Forshee
     [not found]                     ` <501BD1FC.9020601@mso.anu.edu.au>
     [not found]                       ` <20120803141421.GA8165@thinkpad-t410>
     [not found]                         ` <501C7C1D.5010903@mso.anu.edu.au>
     [not found]                           ` <20120804035844.GA31711@thinkpad-t410>
2012-08-04  5:44                             ` Francois Rigaut
2012-08-06 13:49                               ` Seth Forshee
2012-08-06 22:50                                 ` Francois Rigaut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1343407934-459-2-git-send-email-mjg@redhat.com \
    --to=mjg@redhat.com \
    --cc=bhelgaas@google.com \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=matt.fleming@intel.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.