Commit 1bc39ac5 authored by Russell King's avatar Russell King

ARM: PCI: versatile: fix PCI interrupt setup

This is at odds with the documentation in the file; it says pin 1 on
slots 24,25,26,27 map to IRQs 27,28,29,30, but the function will always
be entered with slot=0 due to the lack of swizzle function.  Fix this
function to behave as the comments say, and use the standard PCI
swizzle.
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent b28626da
...@@ -339,15 +339,13 @@ static int __init versatile_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) ...@@ -339,15 +339,13 @@ static int __init versatile_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
* 26 1 29 * 26 1 29
* 27 1 30 * 27 1 30
*/ */
irq = 27 + ((slot + pin - 1) & 3); irq = 27 + ((slot - 24 + pin - 1) & 3);
printk("PCI map irq: slot %d, pin %d, devslot %d, irq: %d\n",slot,pin,devslot,irq);
return irq; return irq;
} }
static struct hw_pci versatile_pci __initdata = { static struct hw_pci versatile_pci __initdata = {
.swizzle = NULL, .swizzle = pci_std_swizzle,
.map_irq = versatile_map_irq, .map_irq = versatile_map_irq,
.nr_controllers = 1, .nr_controllers = 1,
.setup = pci_versatile_setup, .setup = pci_versatile_setup,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment