* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
+#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/module.h>
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
&& (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
{
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;
acpi_prt.count++;
spin_unlock(&acpi_prt_lock);
- return 0;
+ return_VALUE(0);
}
static void
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) {
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;
kfree(prt);
- return 0;
+ return_VALUE(0);
}
void acpi_pci_irq_del_prt(int segment, int bus)
{
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;
}
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found IRQ %d\n", irq));
- return irq;
+ return_VALUE(irq);
}
static int
{
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);
}
/*
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",
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);
}
/*
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
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--;
}
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);
}
/*
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);
}
/*
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);
}
}
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;
(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);
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--;
/*
&triggering, &polarity, NULL,
acpi_pci_free_irq);
if (gsi < 0)
- return;
+ return_VOID;
/*
* TBD: It might be worth clearing dev->irq by magic constant
acpi_unregister_gsi(gsi);
- return;
+ return_VOID;
}