aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/pci_link.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/pci_link.c')
-rw-r--r--drivers/acpi/pci_link.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index 1badce27a83f..8197c0e40769 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -83,7 +83,6 @@ struct acpi_pci_link_irq {
83struct acpi_pci_link { 83struct acpi_pci_link {
84 struct list_head node; 84 struct list_head node;
85 struct acpi_device *device; 85 struct acpi_device *device;
86 acpi_handle handle;
87 struct acpi_pci_link_irq irq; 86 struct acpi_pci_link_irq irq;
88 int refcnt; 87 int refcnt;
89}; 88};
@@ -175,7 +174,7 @@ static int acpi_pci_link_get_possible(struct acpi_pci_link *link)
175 if (!link) 174 if (!link)
176 return -EINVAL; 175 return -EINVAL;
177 176
178 status = acpi_walk_resources(link->handle, METHOD_NAME__PRS, 177 status = acpi_walk_resources(link->device->handle, METHOD_NAME__PRS,
179 acpi_pci_link_check_possible, link); 178 acpi_pci_link_check_possible, link);
180 if (ACPI_FAILURE(status)) { 179 if (ACPI_FAILURE(status)) {
181 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PRS")); 180 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PRS"));
@@ -249,8 +248,7 @@ static int acpi_pci_link_get_current(struct acpi_pci_link *link)
249 acpi_status status = AE_OK; 248 acpi_status status = AE_OK;
250 int irq = 0; 249 int irq = 0;
251 250
252 251 if (!link)
253 if (!link || !link->handle)
254 return -EINVAL; 252 return -EINVAL;
255 253
256 link->irq.active = 0; 254 link->irq.active = 0;
@@ -274,7 +272,7 @@ static int acpi_pci_link_get_current(struct acpi_pci_link *link)
274 * Query and parse _CRS to get the current IRQ assignment. 272 * Query and parse _CRS to get the current IRQ assignment.
275 */ 273 */
276 274
277 status = acpi_walk_resources(link->handle, METHOD_NAME__CRS, 275 status = acpi_walk_resources(link->device->handle, METHOD_NAME__CRS,
278 acpi_pci_link_check_current, &irq); 276 acpi_pci_link_check_current, &irq);
279 if (ACPI_FAILURE(status)) { 277 if (ACPI_FAILURE(status)) {
280 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _CRS")); 278 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _CRS"));
@@ -360,7 +358,7 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
360 resource->end.type = ACPI_RESOURCE_TYPE_END_TAG; 358 resource->end.type = ACPI_RESOURCE_TYPE_END_TAG;
361 359
362 /* Attempt to set the resource */ 360 /* Attempt to set the resource */
363 status = acpi_set_current_resources(link->handle, &buffer); 361 status = acpi_set_current_resources(link->device->handle, &buffer);
364 362
365 /* check for total failure */ 363 /* check for total failure */
366 if (ACPI_FAILURE(status)) { 364 if (ACPI_FAILURE(status)) {
@@ -699,7 +697,7 @@ int acpi_pci_link_free_irq(acpi_handle handle)
699 acpi_device_bid(link->device))); 697 acpi_device_bid(link->device)));
700 698
701 if (link->refcnt == 0) { 699 if (link->refcnt == 0) {
702 acpi_ut_evaluate_object(link->handle, "_DIS", 0, NULL); 700 acpi_ut_evaluate_object(link->device->handle, "_DIS", 0, NULL);
703 } 701 }
704 mutex_unlock(&acpi_link_lock); 702 mutex_unlock(&acpi_link_lock);
705 return (link->irq.active); 703 return (link->irq.active);
@@ -726,7 +724,6 @@ static int acpi_pci_link_add(struct acpi_device *device)
726 memset(link, 0, sizeof(struct acpi_pci_link)); 724 memset(link, 0, sizeof(struct acpi_pci_link));
727 725
728 link->device = device; 726 link->device = device;
729 link->handle = device->handle;
730 strcpy(acpi_device_name(device), ACPI_PCI_LINK_DEVICE_NAME); 727 strcpy(acpi_device_name(device), ACPI_PCI_LINK_DEVICE_NAME);
731 strcpy(acpi_device_class(device), ACPI_PCI_LINK_CLASS); 728 strcpy(acpi_device_class(device), ACPI_PCI_LINK_CLASS);
732 acpi_driver_data(device) = link; 729 acpi_driver_data(device) = link;
@@ -765,7 +762,7 @@ static int acpi_pci_link_add(struct acpi_device *device)
765 762
766 end: 763 end:
767 /* disable all links -- to be activated on use */ 764 /* disable all links -- to be activated on use */
768 acpi_ut_evaluate_object(link->handle, "_DIS", 0, NULL); 765 acpi_ut_evaluate_object(device->handle, "_DIS", 0, NULL);
769 mutex_unlock(&acpi_link_lock); 766 mutex_unlock(&acpi_link_lock);
770 767
771 if (result) 768 if (result)