PCI: arm: use generic pci_swizzle_interrupt_pin()
authorBjorn Helgaas <bjorn.helgaas@hp.com>
Tue, 9 Dec 2008 23:12:12 +0000 (16:12 -0700)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 7 Jan 2009 19:12:51 +0000 (11:12 -0800)
Use the generic pci_swizzle_interrupt_pin() instead of arch-specific code.

Cc: Russell King <rmk@arm.linux.org.uk>
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
arch/arm/kernel/bios32.c
arch/arm/mach-integrator/pci.c

index 17a59b6..5c5a0bc 100644 (file)
@@ -491,17 +491,17 @@ EXPORT_SYMBOL(pcibios_bus_to_resource);
  */
 u8 __devinit pci_std_swizzle(struct pci_dev *dev, u8 *pinp)
 {
-       int pin = *pinp - 1;
+       int pin = *pinp;
 
        while (dev->bus->self) {
-               pin = (pin + PCI_SLOT(dev->devfn)) & 3;
+               pin = pci_swizzle_interrupt_pin(dev, pin);
                /*
                 * move up the chain of bridges,
                 * swizzling as we go.
                 */
                dev = dev->bus->self;
        }
-       *pinp = pin + 1;
+       *pinp = pin;
 
        return PCI_SLOT(dev->devfn);
 }
index af7d3ff..2fdb954 100644 (file)
  *
  * Where A = pin 1, B = pin 2 and so on and pin=0 = default = A.
  * Thus, each swizzle is ((pin-1) + (device#-4)) % 4
- *
- * The following code swizzles for exactly one bridge.  
  */
-static inline int bridge_swizzle(int pin, unsigned int slot) 
-{
-       return (pin + slot) & 3;
-}
 
 /*
  * This routine handles multiple bridges.
@@ -81,15 +75,14 @@ static u8 __init integrator_swizzle(struct pci_dev *dev, u8 *pinp)
        if (pin == 0)
                pin = 1;
 
-       pin -= 1;
        while (dev->bus->self) {
-               pin = bridge_swizzle(pin, PCI_SLOT(dev->devfn));
+               pin = pci_swizzle_interrupt_pin(dev, pin);
                /*
                 * move up the chain of bridges, swizzling as we go.
                 */
                dev = dev->bus->self;
        }
-       *pinp = pin + 1;
+       *pinp = pin;
 
        return PCI_SLOT(dev->devfn);
 }