Mark pci_apply_final_quirks() __init rather than __devinit
[safe/jmp/linux-2.6] / drivers / pci / htirq.c
index 7c5aef1..737a1c4 100644 (file)
@@ -82,18 +82,6 @@ void unmask_ht_irq(unsigned int irq)
        write_ht_irq_msg(irq, &msg);
 }
 
-static unsigned int build_irq_for_pci_dev(struct pci_dev *dev)
-{
-       unsigned int irq;
-
-       irq = dev->bus->number;
-       irq <<= 8;
-       irq |= dev->devfn;
-       irq <<= 12;
-
-       return irq;
-}
-
 /**
  * __ht_create_irq - create an irq and attach it to a device.
  * @dev: The hypertransport device to find the irq capability on.
@@ -109,8 +97,8 @@ int __ht_create_irq(struct pci_dev *dev, int idx, ht_irq_update_t *update)
        u32 data;
        int max_irq;
        int pos;
-       unsigned int irq;
-       unsigned int irq_want;
+       int irq;
+       int node;
 
        pos = pci_find_ht_capability(dev, HT_CAPTYPE_IRQ);
        if (!pos)
@@ -138,13 +126,10 @@ int __ht_create_irq(struct pci_dev *dev, int idx, ht_irq_update_t *update)
        cfg->msg.address_lo = 0xffffffff;
        cfg->msg.address_hi = 0xffffffff;
 
-       irq_want= build_irq_for_pci_dev(dev);
-#ifdef CONFIG_HAVE_SPARSE_IRQ
-       irq = create_irq_nr(irq_want + idx);
-#else
-       irq = create_irq();
-#endif
-       if (irq == 0) {
+       node = dev_to_node(&dev->dev);
+       irq = create_irq_nr(0, node);
+
+       if (irq <= 0) {
                kfree(cfg);
                return -EBUSY;
        }
@@ -175,6 +160,7 @@ int ht_create_irq(struct pci_dev *dev, int idx)
 
 /**
  * ht_destroy_irq - destroy an irq created with ht_create_irq
+ * @irq: irq to be destroyed
  *
  * This reverses ht_create_irq removing the specified irq from
  * existence.  The irq should be free before this happens.