X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Facpi%2Fpci_irq.c;h=65aee79b3971fc02f25b8faa53528ece37b0fd64;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=feda0341f5a73b5a921c6d858de94bf9babfbc4b;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c index feda0341f..65aee79b3 100644 --- a/drivers/acpi/pci_irq.c +++ b/drivers/acpi/pci_irq.c @@ -24,6 +24,7 @@ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +#include #include #include @@ -54,9 +55,10 @@ static struct acpi_prt_entry *acpi_pci_irq_find_prt_entry(int segment, struct list_head *node = NULL; struct acpi_prt_entry *entry = NULL; + ACPI_FUNCTION_TRACE("acpi_pci_irq_find_prt_entry"); if (!acpi_prt.count) - return NULL; + return_PTR(NULL); /* * Parse through all PRT entries looking for a match on the specified @@ -71,12 +73,12 @@ static struct acpi_prt_entry *acpi_pci_irq_find_prt_entry(int segment, && (device == entry->id.device) && (pin == entry->pin)) { spin_unlock(&acpi_prt_lock); - return entry; + return_PTR(entry); } } spin_unlock(&acpi_prt_lock); - return NULL; + return_PTR(NULL); } static int @@ -85,13 +87,14 @@ acpi_pci_irq_add_entry(acpi_handle handle, { struct acpi_prt_entry *entry = NULL; + ACPI_FUNCTION_TRACE("acpi_pci_irq_add_entry"); if (!prt) - return -EINVAL; + return_VALUE(-EINVAL); entry = kmalloc(sizeof(struct acpi_prt_entry), GFP_KERNEL); if (!entry) - return -ENOMEM; + return_VALUE(-ENOMEM); memset(entry, 0, sizeof(struct acpi_prt_entry)); entry->id.segment = segment; @@ -138,7 +141,7 @@ acpi_pci_irq_add_entry(acpi_handle handle, acpi_prt.count++; spin_unlock(&acpi_prt_lock); - return 0; + return_VALUE(0); } static void @@ -160,10 +163,11 @@ int acpi_pci_irq_add_prt(acpi_handle handle, int segment, int bus) struct acpi_pci_routing_table *entry = NULL; static int first_time = 1; + ACPI_FUNCTION_TRACE("acpi_pci_irq_add_prt"); pathname = (char *)kmalloc(ACPI_PATHNAME_MAX, GFP_KERNEL); if (!pathname) - return -ENOMEM; + return_VALUE(-ENOMEM); memset(pathname, 0, ACPI_PATHNAME_MAX); if (first_time) { @@ -193,24 +197,24 @@ int acpi_pci_irq_add_prt(acpi_handle handle, int segment, int bus) kfree(pathname); status = acpi_get_irq_routing_table(handle, &buffer); if (status != AE_BUFFER_OVERFLOW) { - ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PRT [%s]", - acpi_format_exception(status))); - return -ENODEV; + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _PRT [%s]\n", + acpi_format_exception(status))); + return_VALUE(-ENODEV); } prt = kmalloc(buffer.length, GFP_KERNEL); if (!prt) { - return -ENOMEM; + return_VALUE(-ENOMEM); } memset(prt, 0, buffer.length); buffer.pointer = prt; status = acpi_get_irq_routing_table(handle, &buffer); if (ACPI_FAILURE(status)) { - ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PRT [%s]", - acpi_format_exception(status))); + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _PRT [%s]\n", + acpi_format_exception(status))); kfree(buffer.pointer); - return -ENODEV; + return_VALUE(-ENODEV); } entry = prt; @@ -223,7 +227,7 @@ int acpi_pci_irq_add_prt(acpi_handle handle, int segment, int bus) kfree(prt); - return 0; + return_VALUE(0); } void acpi_pci_irq_del_prt(int segment, int bus) @@ -258,15 +262,16 @@ acpi_pci_allocate_irq(struct acpi_prt_entry *entry, { int irq; + ACPI_FUNCTION_TRACE("acpi_pci_allocate_irq"); if (entry->link.handle) { irq = acpi_pci_link_allocate_irq(entry->link.handle, entry->link.index, triggering, polarity, link); if (irq < 0) { - printk(KERN_WARNING PREFIX - "Invalid IRQ link routing entry\n"); - return -1; + ACPI_DEBUG_PRINT((ACPI_DB_WARN, + "Invalid IRQ link routing entry\n")); + return_VALUE(-1); } } else { irq = entry->link.index; @@ -275,7 +280,7 @@ acpi_pci_allocate_irq(struct acpi_prt_entry *entry, } ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found IRQ %d\n", irq)); - return irq; + return_VALUE(irq); } static int @@ -284,12 +289,13 @@ acpi_pci_free_irq(struct acpi_prt_entry *entry, { int irq; + ACPI_FUNCTION_TRACE("acpi_pci_free_irq"); if (entry->link.handle) { irq = acpi_pci_link_free_irq(entry->link.handle); } else { irq = entry->link.index; } - return irq; + return_VALUE(irq); } /* @@ -309,6 +315,7 @@ acpi_pci_irq_lookup(struct pci_bus *bus, int bus_nr = bus->number; int ret; + ACPI_FUNCTION_TRACE("acpi_pci_irq_lookup"); ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Searching for PRT entry for %02x:%02x:%02x[%c]\n", @@ -317,11 +324,11 @@ acpi_pci_irq_lookup(struct pci_bus *bus, entry = acpi_pci_irq_find_prt_entry(segment, bus_nr, device, pin); if (!entry) { ACPI_DEBUG_PRINT((ACPI_DB_INFO, "PRT entry not found\n")); - return -1; + return_VALUE(-1); } ret = func(entry, triggering, polarity, link); - return ret; + return_VALUE(ret); } /* @@ -339,9 +346,10 @@ acpi_pci_irq_derive(struct pci_dev *dev, int irq = -1; u8 bridge_pin = 0; + ACPI_FUNCTION_TRACE("acpi_pci_irq_derive"); if (!dev) - return -EINVAL; + return_VALUE(-EINVAL); /* * Attempt to derive an IRQ for this device from a parent bridge's @@ -358,7 +366,7 @@ acpi_pci_irq_derive(struct pci_dev *dev, ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No interrupt pin configured for device %s\n", pci_name(bridge))); - return -1; + return_VALUE(-1); } /* Pin is from 0 to 3 */ bridge_pin--; @@ -371,15 +379,16 @@ acpi_pci_irq_derive(struct pci_dev *dev, } if (irq < 0) { - printk(KERN_WARNING PREFIX "Unable to derive IRQ for device %s\n", - pci_name(dev)); - return -1; + ACPI_DEBUG_PRINT((ACPI_DB_WARN, + "Unable to derive IRQ for device %s\n", + pci_name(dev))); + return_VALUE(-1); } ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Derive IRQ %d for device %s from %s\n", irq, pci_name(dev), pci_name(bridge))); - return irq; + return_VALUE(irq); } /* @@ -397,22 +406,24 @@ int acpi_pci_irq_enable(struct pci_dev *dev) char *link = NULL; int rc; + ACPI_FUNCTION_TRACE("acpi_pci_irq_enable"); if (!dev) - return -EINVAL; + return_VALUE(-EINVAL); pin = dev->pin; if (!pin) { ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No interrupt pin configured for device %s\n", pci_name(dev))); - return 0; + return_VALUE(0); } pin--; if (!dev->bus) { - printk(KERN_ERR PREFIX "Invalid (NULL) 'bus' field\n"); - return -ENODEV; + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, + "Invalid (NULL) 'bus' field\n")); + return_VALUE(-ENODEV); } /* @@ -444,10 +455,10 @@ int acpi_pci_irq_enable(struct pci_dev *dev) printk(" - using IRQ %d\n", dev->irq); acpi_register_gsi(dev->irq, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW); - return 0; + return_VALUE(0); } else { printk("\n"); - return 0; + return_VALUE(0); } } @@ -455,7 +466,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev) if (rc < 0) { printk(KERN_WARNING PREFIX "PCI Interrupt %s[%c]: failed " "to register GSI\n", pci_name(dev), ('A' + pin)); - return rc; + return_VALUE(rc); } dev->irq = rc; @@ -469,7 +480,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev) (triggering == ACPI_LEVEL_SENSITIVE) ? "level" : "edge", (polarity == ACPI_ACTIVE_LOW) ? "low" : "high", dev->irq); - return 0; + return_VALUE(0); } EXPORT_SYMBOL(acpi_pci_irq_enable); @@ -486,13 +497,14 @@ void acpi_pci_irq_disable(struct pci_dev *dev) int triggering = ACPI_LEVEL_SENSITIVE; int polarity = ACPI_ACTIVE_LOW; + ACPI_FUNCTION_TRACE("acpi_pci_irq_disable"); if (!dev || !dev->bus) - return; + return_VOID; pin = dev->pin; if (!pin) - return; + return_VOID; pin--; /* @@ -510,7 +522,7 @@ void acpi_pci_irq_disable(struct pci_dev *dev) &triggering, &polarity, NULL, acpi_pci_free_irq); if (gsi < 0) - return; + return_VOID; /* * TBD: It might be worth clearing dev->irq by magic constant @@ -522,5 +534,5 @@ void acpi_pci_irq_disable(struct pci_dev *dev) acpi_unregister_gsi(gsi); - return; + return_VOID; }