summaryrefslogtreecommitdiffstats
path: root/drivers/pci/setup-irq.c
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2007-02-20 20:13:30 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-02-20 20:13:30 +0100
commit5a84d159061d914c8dd4aa372ac6e9529c2be453 (patch)
tree9b08af78085334af44414adafe0096276f8fe0ff /drivers/pci/setup-irq.c
parent[ARM] Merge remaining IOP code (diff)
parent[ARM] 4165/1: S3C24XX: Select CONFIG_NO_IOPORT (diff)
downloadlinux-5a84d159061d914c8dd4aa372ac6e9529c2be453.tar.xz
linux-5a84d159061d914c8dd4aa372ac6e9529c2be453.zip
Merge ARM fixes
Diffstat (limited to 'drivers/pci/setup-irq.c')
-rw-r--r--drivers/pci/setup-irq.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/pci/setup-irq.c b/drivers/pci/setup-irq.c
index a251289c9958..568f1877315c 100644
--- a/drivers/pci/setup-irq.c
+++ b/drivers/pci/setup-irq.c
@@ -24,7 +24,7 @@ pdev_fixup_irq(struct pci_dev *dev,
int (*map_irq)(struct pci_dev *, u8, u8))
{
u8 pin, slot;
- int irq;
+ int irq = 0;
/* If this device is not on the primary bus, we need to figure out
which interrupt pin it will come in on. We know which slot it
@@ -33,16 +33,18 @@ pdev_fixup_irq(struct pci_dev *dev,
apply the swizzle function. */
pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
- /* Cope with 0 and illegal. */
- if (pin == 0 || pin > 4)
+ /* Cope with illegal. */
+ if (pin > 4)
pin = 1;
- /* Follow the chain of bridges, swizzling as we go. */
- slot = (*swizzle)(dev, &pin);
+ if (pin != 0) {
+ /* Follow the chain of bridges, swizzling as we go. */
+ slot = (*swizzle)(dev, &pin);
- irq = (*map_irq)(dev, slot, pin);
- if (irq == -1)
- irq = 0;
+ irq = (*map_irq)(dev, slot, pin);
+ if (irq == -1)
+ irq = 0;
+ }
dev->irq = irq;
pr_debug("PCI: fixup irq: (%s) got %d\n",