ARM: PCI: versatile: fix PCI interrupt setup
authorRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 10 Mar 2012 11:32:34 +0000 (11:32 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 13 May 2012 16:12:16 +0000 (17:12 +0100)
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>
arch/arm/mach-versatile/pci.c

index d2268be8c34ca5762945e1954d832655da11d591..24dd4b1490bde28359d3583019394b4012469a31 100644 (file)
@@ -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,