aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/pci/irq.c
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2009-05-15 16:05:16 -0400
committerIngo Molnar <mingo@elte.hu>2009-05-18 02:38:55 -0400
commite5198075c67a22ec9a09565b1ce88d3d3f5ba855 (patch)
tree3d4ea0efd8575e677509b022e649c62d4786ed55 /arch/x86/pci/irq.c
parentb5710ce92a8cf8e3fc0ffc230cfdbfa23463f1c8 (diff)
x86, apic: introduce io_apic_irq_attr
according to Ingo, io_apic irq-setup related functions have too many parameters with a repetitive signature. So reduce related funcs to get less params by passing a pointer to a newly defined io_apic_irq_attr structure. v2: io_apic_irq ==> irq_attr triggering ==> trigger v3: add set_io_apic_irq_attr [ Impact: cleanup ] Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Len Brown <lenb@kernel.org> LKML-Reference: <4A08ACD3.2070401@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/pci/irq.c')
-rw-r--r--arch/x86/pci/irq.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
index 2f3e192615c0..0696d506c4ad 100644
--- a/arch/x86/pci/irq.c
+++ b/arch/x86/pci/irq.c
@@ -1200,14 +1200,11 @@ static int pirq_enable_irq(struct pci_dev *dev)
1200#ifdef CONFIG_X86_IO_APIC 1200#ifdef CONFIG_X86_IO_APIC
1201 struct pci_dev *temp_dev; 1201 struct pci_dev *temp_dev;
1202 int irq; 1202 int irq;
1203 int ioapic = -1, ioapic_pin = -1; 1203 struct io_apic_irq_attr irq_attr;
1204 int triggering, polarity;
1205 1204
1206 irq = IO_APIC_get_PCI_irq_vector(dev->bus->number, 1205 irq = IO_APIC_get_PCI_irq_vector(dev->bus->number,
1207 PCI_SLOT(dev->devfn), 1206 PCI_SLOT(dev->devfn),
1208 pin - 1, 1207 pin - 1, &irq_attr);
1209 &ioapic, &ioapic_pin,
1210 &triggering, &polarity);
1211 /* 1208 /*
1212 * Busses behind bridges are typically not listed in the MP-table. 1209 * Busses behind bridges are typically not listed in the MP-table.
1213 * In this case we have to look up the IRQ based on the parent bus, 1210 * In this case we have to look up the IRQ based on the parent bus,
@@ -1221,9 +1218,7 @@ static int pirq_enable_irq(struct pci_dev *dev)
1221 pin = pci_swizzle_interrupt_pin(dev, pin); 1218 pin = pci_swizzle_interrupt_pin(dev, pin);
1222 irq = IO_APIC_get_PCI_irq_vector(bridge->bus->number, 1219 irq = IO_APIC_get_PCI_irq_vector(bridge->bus->number,
1223 PCI_SLOT(bridge->devfn), 1220 PCI_SLOT(bridge->devfn),
1224 pin - 1, 1221 pin - 1, &irq_attr);
1225 &ioapic, &ioapic_pin,
1226 &triggering, &polarity);
1227 if (irq >= 0) 1222 if (irq >= 0)
1228 dev_warn(&dev->dev, "using bridge %s " 1223 dev_warn(&dev->dev, "using bridge %s "
1229 "INT %c to get IRQ %d\n", 1224 "INT %c to get IRQ %d\n",
@@ -1233,9 +1228,8 @@ static int pirq_enable_irq(struct pci_dev *dev)
1233 } 1228 }
1234 dev = temp_dev; 1229 dev = temp_dev;
1235 if (irq >= 0) { 1230 if (irq >= 0) {
1236 io_apic_set_pci_routing(&dev->dev, ioapic, 1231 io_apic_set_pci_routing(&dev->dev, irq,
1237 ioapic_pin, irq, 1232 &irq_attr);
1238 triggering, polarity);
1239 dev->irq = irq; 1233 dev->irq = irq;
1240 dev_info(&dev->dev, "PCI->APIC IRQ transform: " 1234 dev_info(&dev->dev, "PCI->APIC IRQ transform: "
1241 "INT %c -> IRQ %d\n", 'A' + pin - 1, irq); 1235 "INT %c -> IRQ %d\n", 'A' + pin - 1, irq);