ChangeSet 1.1982.125.15, 2005/03/09 00:32:09-05:00, [EMAIL PROTECTED]

        Merge intel.com:/home/lenb/src/26-stable-dev
        into intel.com:/home/lenb/src/26-latest-dev



 pci_irq.c |   54 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 53 insertions(+), 1 deletion(-)


diff -Nru a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
--- a/drivers/acpi/pci_irq.c    2005-04-01 08:13:39 -08:00
+++ b/drivers/acpi/pci_irq.c    2005-04-01 08:13:39 -08:00
@@ -43,7 +43,7 @@
 ACPI_MODULE_NAME               ("pci_irq")
 
 struct acpi_prt_list           acpi_prt;
-spinlock_t acpi_prt_lock = SPIN_LOCK_UNLOCKED;
+DEFINE_SPINLOCK(acpi_prt_lock);
 
 /* --------------------------------------------------------------------------
                          PCI IRQ Routing Table (PRT) Support
@@ -464,3 +464,55 @@
 }
 EXPORT_SYMBOL(acpi_pci_irq_enable);
 
+
+#ifdef CONFIG_ACPI_DEALLOCATE_IRQ
+void
+acpi_pci_irq_disable (
+       struct pci_dev          *dev)
+{
+       int                     gsi = 0;
+       u8                      pin = 0;
+       int                     edge_level = ACPI_LEVEL_SENSITIVE;
+       int                     active_high_low = ACPI_ACTIVE_LOW;
+
+       ACPI_FUNCTION_TRACE("acpi_pci_irq_disable");
+
+       if (!dev)
+               return_VOID;
+
+       pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
+       if (!pin)
+               return_VOID;
+       pin--;
+
+       if (!dev->bus)
+               return_VOID;
+
+       /*
+        * First we check the PCI IRQ routing table (PRT) for an IRQ.
+        */
+       gsi = acpi_pci_irq_lookup(dev->bus, PCI_SLOT(dev->devfn), pin,
+                                 &edge_level, &active_high_low);
+       /*
+        * If no PRT entry was found, we'll try to derive an IRQ from the
+        * device's parent bridge.
+        */
+       if (gsi < 0)
+               gsi = acpi_pci_irq_derive(dev, pin,
+                                         &edge_level, &active_high_low);
+       if (gsi < 0)
+               return_VOID;
+
+       /*
+        * TBD: It might be worth clearing dev->irq by magic constant
+        * (e.g. PCI_UNDEFINED_IRQ).
+        */
+
+       printk(KERN_INFO PREFIX "PCI interrupt for device %s disabled\n",
+              pci_name(dev));
+
+       acpi_unregister_gsi(gsi);
+
+       return_VOID;
+}
+#endif /* CONFIG_ACPI_DEALLOCATE_IRQ */
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to