[PATCH 14/20] ACPI: PCI: follow typical PCI INTx swizzling pattern

Bjorn Helgaas
2008-12-09T04:31:12Z

No functional change; this just uses the typical pattern of
PCI INTx swizzling done on other architectures.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
---
drivers/acpi/pci_irq.c | 11 +++++++----
1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
index 6f54c3a..b2885ce 100644
--- a/drivers/acpi/pci_irq.c
+++ b/drivers/acpi/pci_irq.c
@@ -401,7 +401,7 @@ static struct acpi_prt_entry *
acpi_pci_irq_derive(struct pci_dev *dev, int pin)
{
struct acpi_prt_entry *entry = NULL;
- struct pci_dev *bridge = dev;
+ struct pci_dev *bridge;
u8 bridge_pin = 0, orig_pin = pin;

@@ -409,9 +409,9 @@ acpi_pci_irq_derive(struct pci_dev *dev, int pin)
* Attempt to derive an IRQ for this device from a parent bridge's
* PCI interrupt routing entry (eg. yenta bridge and add-in card bridge).
*/
- while (bridge->bus->self) {
- pin = (((pin - 1) + PCI_SLOT(bridge->devfn)) % 4) + 1;
- bridge = bridge->bus->self;
+ bridge = dev->bus->self;
+ while (bridge) {
+ pin = (((pin - 1) + PCI_SLOT(dev->devfn)) % 4) + 1;

if ((bridge->class >> 8) == PCI_CLASS_BRIDGE_CARDBUS) {
/* PC card has the same IRQ as its cardbridge */
@@ -433,6 +433,9 @@ acpi_pci_irq_derive(struct pci_dev *dev, int pin)
pci_name(bridge)));
return entry;
}
+
+ dev = bridge;
+ bridge = dev->bus->self;
}

dev_warn(&dev->dev, "can't derive routing for PCI INT %c\n",