This patch makes pci_get_interrupt_pin() return values encoded
the same way as the "Interrupt Pin" value in PCI config space,
i.e., 1=INTA, ..., 4=INTD.
pirq_bios_set() is the only in-tree caller of pci_get_interrupt_pin()
and pci_get_interrupt_pin() is not exported.
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: hpa@zytor.com
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
 {
        struct pci_dev *bridge;
        int pin = pci_get_interrupt_pin(dev, &bridge);
-       return pcibios_set_irq_routing(bridge, pin, irq);
+       return pcibios_set_irq_routing(bridge, pin - 1, irq);
 }
 
 #endif
 
        pin = dev->pin;
        if (!pin)
                return -1;
-       pin--;
+
        while (dev->bus->self) {
-               pin = (pin + PCI_SLOT(dev->devfn)) % 4;
+               pin = (((pin - 1) + PCI_SLOT(dev->devfn)) % 4) + 1;
                dev = dev->bus->self;
        }
        *bridge = dev;