On Wed, Jul 2, 2014 at 6:17 AM, Will Deacon will.deacon@arm.com wrote:
On Tue, Jul 01, 2014 at 07:43:32PM +0100, Liviu Dudau wrote:
Enhance the default implementation of pcibios_add_device() to parse and map the IRQ of the device if a DT binding is available.
Signed-off-by: Liviu Dudau Liviu.Dudau@arm.com
drivers/pci/pci.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 63a54a3..8e65dc3 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -17,6 +17,7 @@ #include <linux/spinlock.h> #include <linux/string.h> #include <linux/log2.h> +#include <linux/of_pci.h> #include <linux/pci-aspm.h> #include <linux/pm_wakeup.h> #include <linux/interrupt.h> @@ -1453,6 +1454,9 @@ EXPORT_SYMBOL(pcim_pin_device); */ int __weak pcibios_add_device(struct pci_dev *dev) { +#ifdef CONFIG_OF
dev->irq = of_irq_parse_and_map_pci(dev, 0, 0);
+#endif
You could avoid the #ifdef by only assigning dev->irq if of_irq_parse_and_map_pci returned something > 0.
Perhaps it could just be unconditional always. Presumably, dev->irq is not already set to something valid and setting it to <= 0 should not have any consequences.
Rob