ata_piix: Add HP Compaq nc6000 to the broken poweroff list
[safe/jmp/linux-2.6] / drivers / acpi / pci_link.c
index 19bc3bc..16e0f9d 100644 (file)
@@ -86,16 +86,13 @@ struct acpi_pci_link_irq {
 };
 
 struct acpi_pci_link {
-       struct list_head                node;
+       struct list_head                list;
        struct acpi_device              *device;
        struct acpi_pci_link_irq        irq;
        int                             refcnt;
 };
 
-static struct {
-       int                     count;
-       struct list_head        entries;
-} acpi_link;
+static LIST_HEAD(acpi_link_list);
 static DEFINE_MUTEX(acpi_link_lock);
 
 /* --------------------------------------------------------------------------
@@ -109,7 +106,7 @@ static acpi_status acpi_pci_link_check_possible(struct acpi_resource *resource,
                                                void *context)
 {
        struct acpi_pci_link *link = context;
-       u32 i = 0;
+       u32 i;
 
        switch (resource->type) {
        case ACPI_RESOURCE_TYPE_START_DEPENDENT:
@@ -179,9 +176,6 @@ static int acpi_pci_link_get_possible(struct acpi_pci_link *link)
 {
        acpi_status status;
 
-       if (!link)
-               return -EINVAL;
-
        status = acpi_walk_resources(link->device->handle, METHOD_NAME__PRS,
                                     acpi_pci_link_check_possible, link);
        if (ACPI_FAILURE(status)) {
@@ -199,7 +193,7 @@ static int acpi_pci_link_get_possible(struct acpi_pci_link *link)
 static acpi_status acpi_pci_link_check_current(struct acpi_resource *resource,
                                               void *context)
 {
-       int *irq = (int *)context;
+       int *irq = context;
 
        switch (resource->type) {
        case ACPI_RESOURCE_TYPE_START_DEPENDENT:
@@ -256,12 +250,9 @@ static acpi_status acpi_pci_link_check_current(struct acpi_resource *resource,
 static int acpi_pci_link_get_current(struct acpi_pci_link *link)
 {
        int result = 0;
-       acpi_status status = AE_OK;
+       acpi_status status;
        int irq = 0;
 
-       if (!link)
-               return -EINVAL;
-
        link->irq.active = 0;
 
        /* in practice, status disabled is meaningless, ignore it */
@@ -306,15 +297,15 @@ static int acpi_pci_link_get_current(struct acpi_pci_link *link)
 
 static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
 {
-       int result = 0;
-       acpi_status status = AE_OK;
+       int result;
+       acpi_status status;
        struct {
                struct acpi_resource res;
                struct acpi_resource end;
        } *resource;
        struct acpi_buffer buffer = { 0, NULL };
 
-       if (!link || !irq)
+       if (!irq)
                return -EINVAL;
 
        resource = kzalloc(sizeof(*resource) + 1, irqs_disabled() ? GFP_ATOMIC: GFP_KERNEL);
@@ -485,19 +476,13 @@ static int acpi_irq_penalty[ACPI_MAX_IRQS] = {
 
 int __init acpi_irq_penalty_init(void)
 {
-       struct list_head *node = NULL;
-       struct acpi_pci_link *link = NULL;
-       int i = 0;
+       struct acpi_pci_link *link;
+       int i;
 
        /*
         * Update penalties to facilitate IRQ balancing.
         */
-       list_for_each(node, &acpi_link.entries) {
-               link = list_entry(node, struct acpi_pci_link, node);
-               if (!link) {
-                       printk(KERN_ERR PREFIX "Invalid link context\n");
-                       continue;
-               }
+       list_for_each_entry(link, &acpi_link_list, list) {
 
                /*
                 * reflect the possible and active irqs in the penalty table --
@@ -602,9 +587,9 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link)
 int acpi_pci_link_allocate_irq(acpi_handle handle, int index, int *triggering,
                               int *polarity, char **name)
 {
-       int result = 0;
-       struct acpi_device *device = NULL;
-       struct acpi_pci_link *link = NULL;
+       int result;
+       struct acpi_device *device;
+       struct acpi_pci_link *link;
 
        result = acpi_bus_get_device(handle, &device);
        if (result) {
@@ -656,8 +641,8 @@ int acpi_pci_link_allocate_irq(acpi_handle handle, int index, int *triggering,
  */
 int acpi_pci_link_free_irq(acpi_handle handle)
 {
-       struct acpi_device *device = NULL;
-       struct acpi_pci_link *link = NULL;
+       struct acpi_device *device;
+       struct acpi_pci_link *link;
        acpi_status result;
 
        result = acpi_bus_get_device(handle, &device);
@@ -707,14 +692,11 @@ int acpi_pci_link_free_irq(acpi_handle handle)
 
 static int acpi_pci_link_add(struct acpi_device *device)
 {
-       int result = 0;
-       struct acpi_pci_link *link = NULL;
-       int i = 0;
+       int result;
+       struct acpi_pci_link *link;
+       int i;
        int found = 0;
 
-       if (!device)
-               return -EINVAL;
-
        link = kzalloc(sizeof(struct acpi_pci_link), GFP_KERNEL);
        if (!link)
                return -ENOMEM;
@@ -752,9 +734,7 @@ static int acpi_pci_link_add(struct acpi_device *device)
 
        printk("\n");
 
-       /* TBD: Acquire/release lock */
-       list_add_tail(&link->node, &acpi_link.entries);
-       acpi_link.count++;
+       list_add_tail(&link->list, &acpi_link_list);
 
       end:
        /* disable all links -- to be activated on use */
@@ -777,15 +757,9 @@ static int acpi_pci_link_resume(struct acpi_pci_link *link)
 
 static int irqrouter_resume(struct sys_device *dev)
 {
-       struct list_head *node = NULL;
-       struct acpi_pci_link *link = NULL;
+       struct acpi_pci_link *link;
 
-       list_for_each(node, &acpi_link.entries) {
-               link = list_entry(node, struct acpi_pci_link, node);
-               if (!link) {
-                       printk(KERN_ERR PREFIX "Invalid link context\n");
-                       continue;
-               }
+       list_for_each_entry(link, &acpi_link_list, list) {
                acpi_pci_link_resume(link);
        }
        return 0;
@@ -793,15 +767,12 @@ static int irqrouter_resume(struct sys_device *dev)
 
 static int acpi_pci_link_remove(struct acpi_device *device, int type)
 {
-       struct acpi_pci_link *link = NULL;
-
-       if (!device || !acpi_driver_data(device))
-               return -EINVAL;
+       struct acpi_pci_link *link;
 
        link = acpi_driver_data(device);
 
        mutex_lock(&acpi_link_lock);
-       list_del(&link->node);
+       list_del(&link->list);
        mutex_unlock(&acpi_link_lock);
 
        kfree(link);
@@ -938,9 +909,6 @@ static int __init acpi_pci_link_init(void)
                        acpi_irq_balance = 0;
        }
 
-       acpi_link.count = 0;
-       INIT_LIST_HEAD(&acpi_link.entries);
-
        if (acpi_bus_register_driver(&acpi_pci_link_driver) < 0)
                return -ENODEV;