struct pci_dev *bridge = dev->bus->self;
                                int bus;
 
-                               pin = (((pin - 1) + PCI_SLOT(dev->devfn)) % 4) + 1;
+                               pin = pci_swizzle_interrupt_pin(dev, pin);
                                bus = bridge->bus->number;
                                irq = IO_APIC_get_PCI_irq_vector(bus,
                                                PCI_SLOT(bridge->devfn), pin - 1);
                        while (irq < 0 && dev->bus->parent) { /* go back to the bridge */
                                struct pci_dev *bridge = dev->bus->self;
 
-                               pin = (((pin - 1) + PCI_SLOT(dev->devfn)) % 4) + 1;
+                               pin = pci_swizzle_interrupt_pin(dev, pin);
                                irq = IO_APIC_get_PCI_irq_vector(bridge->bus->number,
                                                PCI_SLOT(bridge->devfn), pin - 1);
                                if (irq >= 0)
 
 
 unsigned int pci_bus0, pci_bus1;
 
-static inline u8 bridge_swizzle(u8 pin, u8 slot) 
-{
-       return (((pin - 1) + slot) % 4) + 1;
-}
-
 static u8 __init visws_swizzle(struct pci_dev *dev, u8 *pinp)
 {
        u8 pin = *pinp;
 
        while (dev->bus->self) {        /* Move up the chain of bridges. */
-               pin = bridge_swizzle(pin, PCI_SLOT(dev->devfn));
+               pin = pci_swizzle_interrupt_pin(dev, pin);
                dev = dev->bus->self;
        }
        *pinp = pin;