This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / drivers / acpi / pci_link.c
index 520b28a..bc72416 100644 (file)
@@ -307,57 +307,50 @@ acpi_pci_link_set (
        struct {
                struct acpi_resource    res;
                struct acpi_resource    end;
-       }    *resource;
-       struct acpi_buffer      buffer = {0, NULL};
+       }                       resource;
+       struct acpi_buffer      buffer = {sizeof(resource)+1, &resource};
 
        ACPI_FUNCTION_TRACE("acpi_pci_link_set");
 
        if (!link || !irq)
                return_VALUE(-EINVAL);
 
-       resource = kmalloc( sizeof(*resource)+1, GFP_KERNEL);
-       if(!resource)
-               return_VALUE(-ENOMEM);
-
-       memset(resource, 0, sizeof(*resource)+1);
-       buffer.length = sizeof(*resource) +1;
-       buffer.pointer = resource;
+       memset(&resource, 0, sizeof(resource));
 
        switch(link->irq.resource_type) {
        case ACPI_RSTYPE_IRQ:
-               resource->res.id = ACPI_RSTYPE_IRQ;
-               resource->res.length = sizeof(struct acpi_resource);
-               resource->res.data.irq.edge_level = link->irq.edge_level;
-               resource->res.data.irq.active_high_low = link->irq.active_high_low;
+               resource.res.id = ACPI_RSTYPE_IRQ;
+               resource.res.length = sizeof(struct acpi_resource);
+               resource.res.data.irq.edge_level = link->irq.edge_level;
+               resource.res.data.irq.active_high_low = link->irq.active_high_low;
                if (link->irq.edge_level == ACPI_EDGE_SENSITIVE)
-                       resource->res.data.irq.shared_exclusive = ACPI_EXCLUSIVE;
+                       resource.res.data.irq.shared_exclusive = ACPI_EXCLUSIVE;
                else
-                       resource->res.data.irq.shared_exclusive = ACPI_SHARED;
-               resource->res.data.irq.number_of_interrupts = 1;
-               resource->res.data.irq.interrupts[0] = irq;
+                       resource.res.data.irq.shared_exclusive = ACPI_SHARED;
+               resource.res.data.irq.number_of_interrupts = 1;
+               resource.res.data.irq.interrupts[0] = irq;
                break;
           
        case ACPI_RSTYPE_EXT_IRQ:
-               resource->res.id = ACPI_RSTYPE_EXT_IRQ;
-               resource->res.length = sizeof(struct acpi_resource);
-               resource->res.data.extended_irq.producer_consumer = ACPI_CONSUMER;
-               resource->res.data.extended_irq.edge_level = link->irq.edge_level;
-               resource->res.data.extended_irq.active_high_low = link->irq.active_high_low;
+               resource.res.id = ACPI_RSTYPE_EXT_IRQ;
+               resource.res.length = sizeof(struct acpi_resource);
+               resource.res.data.extended_irq.producer_consumer = ACPI_CONSUMER;
+               resource.res.data.extended_irq.edge_level = link->irq.edge_level;
+               resource.res.data.extended_irq.active_high_low = link->irq.active_high_low;
                if (link->irq.edge_level == ACPI_EDGE_SENSITIVE)
-                       resource->res.data.irq.shared_exclusive = ACPI_EXCLUSIVE;
+                       resource.res.data.irq.shared_exclusive = ACPI_EXCLUSIVE;
                else
-                       resource->res.data.irq.shared_exclusive = ACPI_SHARED;
-               resource->res.data.extended_irq.number_of_interrupts = 1;
-               resource->res.data.extended_irq.interrupts[0] = irq;
+                       resource.res.data.irq.shared_exclusive = ACPI_SHARED;
+               resource.res.data.extended_irq.number_of_interrupts = 1;
+               resource.res.data.extended_irq.interrupts[0] = irq;
                /* ignore resource_source, it's optional */
                break;
        default:
                printk("ACPI BUG: resource_type %d\n", link->irq.resource_type);
-               result = -EINVAL;
-               goto end;
+               return_VALUE(-EINVAL);
 
        }
-       resource->end.id = ACPI_RSTYPE_END_TAG;
+       resource.end.id = ACPI_RSTYPE_END_TAG;
 
        /* Attempt to set the resource */
        status = acpi_set_current_resources(link->handle, &buffer);
@@ -365,15 +358,14 @@ acpi_pci_link_set (
        /* check for total failure */
        if (ACPI_FAILURE(status)) {
                ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _SRS\n"));
-               result = -ENODEV;
-               goto end;
+               return_VALUE(-ENODEV);
        }
 
        /* Query _STA, set device->status */
        result = acpi_bus_get_status(link->device);
        if (result) {
                ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Unable to read status\n"));
-               goto end;
+               return_VALUE(result);
        }
        if (!link->device->status.enabled) {
                printk(KERN_WARNING PREFIX
@@ -385,7 +377,7 @@ acpi_pci_link_set (
        /* Query _CRS, set link->irq.active */
        result = acpi_pci_link_get_current(link);
        if (result) {
-               goto end;
+               return_VALUE(result);
        }
 
        /*
@@ -407,9 +399,7 @@ acpi_pci_link_set (
 
        ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Set IRQ %d\n", link->irq.active));
        
-end:
-       kfree(resource);
-       return_VALUE(result);
+       return_VALUE(0);
 }
 
 
@@ -522,11 +512,9 @@ acpi_irq_penalty_init(void)
 
 static int acpi_irq_balance;   /* 0: static, 1: balance */
 
-static int acpi_pci_link_allocate(
-       struct acpi_pci_link    *link)
-{
-       int                     irq;
-       int                     i;
+static int acpi_pci_link_allocate(struct acpi_pci_link* link) {
+       int irq;
+       int i;
 
        ACPI_FUNCTION_TRACE("acpi_pci_link_allocate");
 
@@ -599,9 +587,8 @@ int
 acpi_pci_link_get_irq (
        acpi_handle             handle,
        int                     index,
-       int                     *edge_level,
-       int                     *active_high_low,
-       char                    **name)
+       int*                    edge_level,
+       int*                    active_high_low)
 {
        int                     result = 0;
        struct acpi_device      *device = NULL;
@@ -637,7 +624,6 @@ acpi_pci_link_get_irq (
 
        if (edge_level) *edge_level = link->irq.edge_level;
        if (active_high_low) *active_high_low = link->irq.active_high_low;
-       if (name) *name = acpi_device_bid(link->device);
        return_VALUE(link->irq.active);
 }
 
@@ -824,7 +810,7 @@ void acpi_penalize_isa_irq(int irq)
  */
 static int __init acpi_irq_isa(char *str)
 {
-       return acpi_irq_penalty_update(str, 1);
+       return(acpi_irq_penalty_update(str, 1));
 }
 __setup("acpi_irq_isa=", acpi_irq_isa);
 
@@ -835,7 +821,7 @@ __setup("acpi_irq_isa=", acpi_irq_isa);
  */
 static int __init acpi_irq_pci(char *str)
 {
-       return acpi_irq_penalty_update(str, 0);
+       return(acpi_irq_penalty_update(str, 0));
 }
 __setup("acpi_irq_pci=", acpi_irq_pci);