diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-03-10 11:32:34 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-05-13 17:12:16 +0100 |
commit | 1bc39ac5dab265b76ce6e20d6c85f900539fd190 (patch) | |
tree | 03cd4a54b1a44d7f2b346536e6be6fc9e8b9d7cd | |
parent | b28626da344ea3d9f9c518a6c082db9306f534ff (diff) | |
download | linux-1bc39ac5dab265b76ce6e20d6c85f900539fd190.tar.bz2 |
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: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/mach-versatile/pci.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c index d2268be8c34c..24dd4b1490bd 100644 --- a/arch/arm/mach-versatile/pci.c +++ b/arch/arm/mach-versatile/pci.c @@ -339,15 +339,13 @@ static int __init versatile_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) * 26 1 29 * 27 1 30 */ - irq = 27 + ((slot + pin - 1) & 3); - - printk("PCI map irq: slot %d, pin %d, devslot %d, irq: %d\n",slot,pin,devslot,irq); + irq = 27 + ((slot - 24 + pin - 1) & 3); return irq; } static struct hw_pci versatile_pci __initdata = { - .swizzle = NULL, + .swizzle = pci_std_swizzle, .map_irq = versatile_map_irq, .nr_controllers = 1, .setup = pci_versatile_setup, |