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.c189
1 files changed, 83 insertions, 106 deletions
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index 228bdb626502..1badce27a83f 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -107,26 +107,23 @@ acpi_pci_link_check_possible(struct acpi_resource *resource, void *context)
107 struct acpi_pci_link *link = (struct acpi_pci_link *)context; 107 struct acpi_pci_link *link = (struct acpi_pci_link *)context;
108 u32 i = 0; 108 u32 i = 0;
109 109
110 ACPI_FUNCTION_TRACE("acpi_pci_link_check_possible");
111 110
112 switch (resource->type) { 111 switch (resource->type) {
113 case ACPI_RESOURCE_TYPE_START_DEPENDENT: 112 case ACPI_RESOURCE_TYPE_START_DEPENDENT:
114 return_ACPI_STATUS(AE_OK); 113 return AE_OK;
115 case ACPI_RESOURCE_TYPE_IRQ: 114 case ACPI_RESOURCE_TYPE_IRQ:
116 { 115 {
117 struct acpi_resource_irq *p = &resource->data.irq; 116 struct acpi_resource_irq *p = &resource->data.irq;
118 if (!p || !p->interrupt_count) { 117 if (!p || !p->interrupt_count) {
119 ACPI_DEBUG_PRINT((ACPI_DB_WARN, 118 printk(KERN_WARNING PREFIX "Blank IRQ resource\n");
120 "Blank IRQ resource\n")); 119 return AE_OK;
121 return_ACPI_STATUS(AE_OK);
122 } 120 }
123 for (i = 0; 121 for (i = 0;
124 (i < p->interrupt_count 122 (i < p->interrupt_count
125 && i < ACPI_PCI_LINK_MAX_POSSIBLE); i++) { 123 && i < ACPI_PCI_LINK_MAX_POSSIBLE); i++) {
126 if (!p->interrupts[i]) { 124 if (!p->interrupts[i]) {
127 ACPI_DEBUG_PRINT((ACPI_DB_WARN, 125 printk(KERN_WARNING PREFIX "Invalid IRQ %d\n",
128 "Invalid IRQ %d\n", 126 p->interrupts[i]);
129 p->interrupts[i]));
130 continue; 127 continue;
131 } 128 }
132 link->irq.possible[i] = p->interrupts[i]; 129 link->irq.possible[i] = p->interrupts[i];
@@ -142,17 +139,16 @@ acpi_pci_link_check_possible(struct acpi_resource *resource, void *context)
142 struct acpi_resource_extended_irq *p = 139 struct acpi_resource_extended_irq *p =
143 &resource->data.extended_irq; 140 &resource->data.extended_irq;
144 if (!p || !p->interrupt_count) { 141 if (!p || !p->interrupt_count) {
145 ACPI_DEBUG_PRINT((ACPI_DB_WARN, 142 printk(KERN_WARNING PREFIX
146 "Blank EXT IRQ resource\n")); 143 "Blank EXT IRQ resource\n");
147 return_ACPI_STATUS(AE_OK); 144 return AE_OK;
148 } 145 }
149 for (i = 0; 146 for (i = 0;
150 (i < p->interrupt_count 147 (i < p->interrupt_count
151 && i < ACPI_PCI_LINK_MAX_POSSIBLE); i++) { 148 && i < ACPI_PCI_LINK_MAX_POSSIBLE); i++) {
152 if (!p->interrupts[i]) { 149 if (!p->interrupts[i]) {
153 ACPI_DEBUG_PRINT((ACPI_DB_WARN, 150 printk(KERN_WARNING PREFIX "Invalid IRQ %d\n",
154 "Invalid IRQ %d\n", 151 p->interrupts[i]);
155 p->interrupts[i]));
156 continue; 152 continue;
157 } 153 }
158 link->irq.possible[i] = p->interrupts[i]; 154 link->irq.possible[i] = p->interrupts[i];
@@ -164,35 +160,33 @@ acpi_pci_link_check_possible(struct acpi_resource *resource, void *context)
164 break; 160 break;
165 } 161 }
166 default: 162 default:
167 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, 163 printk(KERN_ERR PREFIX "Resource is not an IRQ entry\n");
168 "Resource is not an IRQ entry\n")); 164 return AE_OK;
169 return_ACPI_STATUS(AE_OK);
170 } 165 }
171 166
172 return_ACPI_STATUS(AE_CTRL_TERMINATE); 167 return AE_CTRL_TERMINATE;
173} 168}
174 169
175static int acpi_pci_link_get_possible(struct acpi_pci_link *link) 170static int acpi_pci_link_get_possible(struct acpi_pci_link *link)
176{ 171{
177 acpi_status status; 172 acpi_status status;
178 173
179 ACPI_FUNCTION_TRACE("acpi_pci_link_get_possible");
180 174
181 if (!link) 175 if (!link)
182 return_VALUE(-EINVAL); 176 return -EINVAL;
183 177
184 status = acpi_walk_resources(link->handle, METHOD_NAME__PRS, 178 status = acpi_walk_resources(link->handle, METHOD_NAME__PRS,
185 acpi_pci_link_check_possible, link); 179 acpi_pci_link_check_possible, link);
186 if (ACPI_FAILURE(status)) { 180 if (ACPI_FAILURE(status)) {
187 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _PRS\n")); 181 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PRS"));
188 return_VALUE(-ENODEV); 182 return -ENODEV;
189 } 183 }
190 184
191 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 185 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
192 "Found %d possible IRQs\n", 186 "Found %d possible IRQs\n",
193 link->irq.possible_count)); 187 link->irq.possible_count));
194 188
195 return_VALUE(0); 189 return 0;
196} 190}
197 191
198static acpi_status 192static acpi_status
@@ -200,7 +194,6 @@ acpi_pci_link_check_current(struct acpi_resource *resource, void *context)
200{ 194{
201 int *irq = (int *)context; 195 int *irq = (int *)context;
202 196
203 ACPI_FUNCTION_TRACE("acpi_pci_link_check_current");
204 197
205 switch (resource->type) { 198 switch (resource->type) {
206 case ACPI_RESOURCE_TYPE_IRQ: 199 case ACPI_RESOURCE_TYPE_IRQ:
@@ -213,7 +206,7 @@ acpi_pci_link_check_current(struct acpi_resource *resource, void *context)
213 */ 206 */
214 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 207 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
215 "Blank IRQ resource\n")); 208 "Blank IRQ resource\n"));
216 return_ACPI_STATUS(AE_OK); 209 return AE_OK;
217 } 210 }
218 *irq = p->interrupts[0]; 211 *irq = p->interrupts[0];
219 break; 212 break;
@@ -227,20 +220,20 @@ acpi_pci_link_check_current(struct acpi_resource *resource, void *context)
227 * extended IRQ descriptors must 220 * extended IRQ descriptors must
228 * return at least 1 IRQ 221 * return at least 1 IRQ
229 */ 222 */
230 ACPI_DEBUG_PRINT((ACPI_DB_WARN, 223 printk(KERN_WARNING PREFIX
231 "Blank EXT IRQ resource\n")); 224 "Blank EXT IRQ resource\n");
232 return_ACPI_STATUS(AE_OK); 225 return AE_OK;
233 } 226 }
234 *irq = p->interrupts[0]; 227 *irq = p->interrupts[0];
235 break; 228 break;
236 } 229 }
237 break; 230 break;
238 default: 231 default:
239 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Resource %d isn't an IRQ\n", resource->type)); 232 printk(KERN_ERR PREFIX "Resource %d isn't an IRQ\n", resource->type);
240 case ACPI_RESOURCE_TYPE_END_TAG: 233 case ACPI_RESOURCE_TYPE_END_TAG:
241 return_ACPI_STATUS(AE_OK); 234 return AE_OK;
242 } 235 }
243 return_ACPI_STATUS(AE_CTRL_TERMINATE); 236 return AE_CTRL_TERMINATE;
244} 237}
245 238
246/* 239/*
@@ -256,10 +249,9 @@ static int acpi_pci_link_get_current(struct acpi_pci_link *link)
256 acpi_status status = AE_OK; 249 acpi_status status = AE_OK;
257 int irq = 0; 250 int irq = 0;
258 251
259 ACPI_FUNCTION_TRACE("acpi_pci_link_get_current");
260 252
261 if (!link || !link->handle) 253 if (!link || !link->handle)
262 return_VALUE(-EINVAL); 254 return -EINVAL;
263 255
264 link->irq.active = 0; 256 link->irq.active = 0;
265 257
@@ -268,14 +260,13 @@ static int acpi_pci_link_get_current(struct acpi_pci_link *link)
268 /* Query _STA, set link->device->status */ 260 /* Query _STA, set link->device->status */
269 result = acpi_bus_get_status(link->device); 261 result = acpi_bus_get_status(link->device);
270 if (result) { 262 if (result) {
271 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, 263 printk(KERN_ERR PREFIX "Unable to read status\n");
272 "Unable to read status\n"));
273 goto end; 264 goto end;
274 } 265 }
275 266
276 if (!link->device->status.enabled) { 267 if (!link->device->status.enabled) {
277 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Link disabled\n")); 268 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Link disabled\n"));
278 return_VALUE(0); 269 return 0;
279 } 270 }
280 } 271 }
281 272
@@ -286,13 +277,13 @@ static int acpi_pci_link_get_current(struct acpi_pci_link *link)
286 status = acpi_walk_resources(link->handle, METHOD_NAME__CRS, 277 status = acpi_walk_resources(link->handle, METHOD_NAME__CRS,
287 acpi_pci_link_check_current, &irq); 278 acpi_pci_link_check_current, &irq);
288 if (ACPI_FAILURE(status)) { 279 if (ACPI_FAILURE(status)) {
289 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _CRS\n")); 280 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _CRS"));
290 result = -ENODEV; 281 result = -ENODEV;
291 goto end; 282 goto end;
292 } 283 }
293 284
294 if (acpi_strict && !irq) { 285 if (acpi_strict && !irq) {
295 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "_CRS returned 0\n")); 286 printk(KERN_ERR PREFIX "_CRS returned 0\n");
296 result = -ENODEV; 287 result = -ENODEV;
297 } 288 }
298 289
@@ -301,7 +292,7 @@ static int acpi_pci_link_get_current(struct acpi_pci_link *link)
301 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Link at IRQ %d \n", link->irq.active)); 292 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Link at IRQ %d \n", link->irq.active));
302 293
303 end: 294 end:
304 return_VALUE(result); 295 return result;
305} 296}
306 297
307static int acpi_pci_link_set(struct acpi_pci_link *link, int irq) 298static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
@@ -314,14 +305,13 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
314 } *resource; 305 } *resource;
315 struct acpi_buffer buffer = { 0, NULL }; 306 struct acpi_buffer buffer = { 0, NULL };
316 307
317 ACPI_FUNCTION_TRACE("acpi_pci_link_set");
318 308
319 if (!link || !irq) 309 if (!link || !irq)
320 return_VALUE(-EINVAL); 310 return -EINVAL;
321 311
322 resource = kmalloc(sizeof(*resource) + 1, GFP_ATOMIC); 312 resource = kmalloc(sizeof(*resource) + 1, GFP_ATOMIC);
323 if (!resource) 313 if (!resource)
324 return_VALUE(-ENOMEM); 314 return -ENOMEM;
325 315
326 memset(resource, 0, sizeof(*resource) + 1); 316 memset(resource, 0, sizeof(*resource) + 1);
327 buffer.length = sizeof(*resource) + 1; 317 buffer.length = sizeof(*resource) + 1;
@@ -362,7 +352,7 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
362 /* ignore resource_source, it's optional */ 352 /* ignore resource_source, it's optional */
363 break; 353 break;
364 default: 354 default:
365 printk("ACPI BUG: resource_type %d\n", link->irq.resource_type); 355 printk(KERN_ERR PREFIX "Invalid Resource_type %d\n", link->irq.resource_type);
366 result = -EINVAL; 356 result = -EINVAL;
367 goto end; 357 goto end;
368 358
@@ -374,7 +364,7 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
374 364
375 /* check for total failure */ 365 /* check for total failure */
376 if (ACPI_FAILURE(status)) { 366 if (ACPI_FAILURE(status)) {
377 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _SRS\n")); 367 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _SRS"));
378 result = -ENODEV; 368 result = -ENODEV;
379 goto end; 369 goto end;
380 } 370 }
@@ -382,14 +372,14 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
382 /* Query _STA, set device->status */ 372 /* Query _STA, set device->status */
383 result = acpi_bus_get_status(link->device); 373 result = acpi_bus_get_status(link->device);
384 if (result) { 374 if (result) {
385 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Unable to read status\n")); 375 printk(KERN_ERR PREFIX "Unable to read status\n");
386 goto end; 376 goto end;
387 } 377 }
388 if (!link->device->status.enabled) { 378 if (!link->device->status.enabled) {
389 printk(KERN_WARNING PREFIX 379 printk(KERN_WARNING PREFIX
390 "%s [%s] disabled and referenced, BIOS bug.\n", 380 "%s [%s] disabled and referenced, BIOS bug\n",
391 acpi_device_name(link->device), 381 acpi_device_name(link->device),
392 acpi_device_bid(link->device)); 382 acpi_device_bid(link->device));
393 } 383 }
394 384
395 /* Query _CRS, set link->irq.active */ 385 /* Query _CRS, set link->irq.active */
@@ -408,9 +398,9 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
408 * assume _SRS worked and override _CRS value. 398 * assume _SRS worked and override _CRS value.
409 */ 399 */
410 printk(KERN_WARNING PREFIX 400 printk(KERN_WARNING PREFIX
411 "%s [%s] BIOS reported IRQ %d, using IRQ %d\n", 401 "%s [%s] BIOS reported IRQ %d, using IRQ %d\n",
412 acpi_device_name(link->device), 402 acpi_device_name(link->device),
413 acpi_device_bid(link->device), link->irq.active, irq); 403 acpi_device_bid(link->device), link->irq.active, irq);
414 link->irq.active = irq; 404 link->irq.active = irq;
415 } 405 }
416 406
@@ -418,7 +408,7 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
418 408
419 end: 409 end:
420 kfree(resource); 410 kfree(resource);
421 return_VALUE(result); 411 return result;
422} 412}
423 413
424/* -------------------------------------------------------------------------- 414/* --------------------------------------------------------------------------
@@ -492,7 +482,6 @@ int __init acpi_irq_penalty_init(void)
492 struct acpi_pci_link *link = NULL; 482 struct acpi_pci_link *link = NULL;
493 int i = 0; 483 int i = 0;
494 484
495 ACPI_FUNCTION_TRACE("acpi_irq_penalty_init");
496 485
497 /* 486 /*
498 * Update penalties to facilitate IRQ balancing. 487 * Update penalties to facilitate IRQ balancing.
@@ -501,8 +490,7 @@ int __init acpi_irq_penalty_init(void)
501 490
502 link = list_entry(node, struct acpi_pci_link, node); 491 link = list_entry(node, struct acpi_pci_link, node);
503 if (!link) { 492 if (!link) {
504 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, 493 printk(KERN_ERR PREFIX "Invalid link context\n");
505 "Invalid link context\n"));
506 continue; 494 continue;
507 } 495 }
508 496
@@ -530,7 +518,7 @@ int __init acpi_irq_penalty_init(void)
530 /* Add a penalty for the SCI */ 518 /* Add a penalty for the SCI */
531 acpi_irq_penalty[acpi_fadt.sci_int] += PIRQ_PENALTY_PCI_USING; 519 acpi_irq_penalty[acpi_fadt.sci_int] += PIRQ_PENALTY_PCI_USING;
532 520
533 return_VALUE(0); 521 return 0;
534} 522}
535 523
536static int acpi_irq_balance; /* 0: static, 1: balance */ 524static int acpi_irq_balance; /* 0: static, 1: balance */
@@ -540,13 +528,12 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link)
540 int irq; 528 int irq;
541 int i; 529 int i;
542 530
543 ACPI_FUNCTION_TRACE("acpi_pci_link_allocate");
544 531
545 if (link->irq.initialized) { 532 if (link->irq.initialized) {
546 if (link->refcnt == 0) 533 if (link->refcnt == 0)
547 /* This means the link is disabled but initialized */ 534 /* This means the link is disabled but initialized */
548 acpi_pci_link_set(link, link->irq.active); 535 acpi_pci_link_set(link, link->irq.active);
549 return_VALUE(0); 536 return 0;
550 } 537 }
551 538
552 /* 539 /*
@@ -562,7 +549,7 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link)
562 if (i == link->irq.possible_count) { 549 if (i == link->irq.possible_count) {
563 if (acpi_strict) 550 if (acpi_strict)
564 printk(KERN_WARNING PREFIX "_CRS %d not found" 551 printk(KERN_WARNING PREFIX "_CRS %d not found"
565 " in _PRS\n", link->irq.active); 552 " in _PRS\n", link->irq.active);
566 link->irq.active = 0; 553 link->irq.active = 0;
567 } 554 }
568 555
@@ -589,12 +576,11 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link)
589 576
590 /* Attempt to enable the link device at this IRQ. */ 577 /* Attempt to enable the link device at this IRQ. */
591 if (acpi_pci_link_set(link, irq)) { 578 if (acpi_pci_link_set(link, irq)) {
592 printk(PREFIX 579 printk(KERN_ERR PREFIX "Unable to set IRQ for %s [%s]. "
593 "Unable to set IRQ for %s [%s] (likely buggy ACPI BIOS).\n" 580 "Try pci=noacpi or acpi=off\n",
594 "Try pci=noacpi or acpi=off\n", 581 acpi_device_name(link->device),
595 acpi_device_name(link->device), 582 acpi_device_bid(link->device));
596 acpi_device_bid(link->device)); 583 return -ENODEV;
597 return_VALUE(-ENODEV);
598 } else { 584 } else {
599 acpi_irq_penalty[link->irq.active] += PIRQ_PENALTY_PCI_USING; 585 acpi_irq_penalty[link->irq.active] += PIRQ_PENALTY_PCI_USING;
600 printk(PREFIX "%s [%s] enabled at IRQ %d\n", 586 printk(PREFIX "%s [%s] enabled at IRQ %d\n",
@@ -604,7 +590,7 @@ static int acpi_pci_link_allocate(struct acpi_pci_link *link)
604 590
605 link->irq.initialized = 1; 591 link->irq.initialized = 1;
606 592
607 return_VALUE(0); 593 return 0;
608} 594}
609 595
610/* 596/*
@@ -622,36 +608,35 @@ acpi_pci_link_allocate_irq(acpi_handle handle,
622 struct acpi_device *device = NULL; 608 struct acpi_device *device = NULL;
623 struct acpi_pci_link *link = NULL; 609 struct acpi_pci_link *link = NULL;
624 610
625 ACPI_FUNCTION_TRACE("acpi_pci_link_allocate_irq");
626 611
627 result = acpi_bus_get_device(handle, &device); 612 result = acpi_bus_get_device(handle, &device);
628 if (result) { 613 if (result) {
629 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid link device\n")); 614 printk(KERN_ERR PREFIX "Invalid link device\n");
630 return_VALUE(-1); 615 return -1;
631 } 616 }
632 617
633 link = (struct acpi_pci_link *)acpi_driver_data(device); 618 link = (struct acpi_pci_link *)acpi_driver_data(device);
634 if (!link) { 619 if (!link) {
635 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid link context\n")); 620 printk(KERN_ERR PREFIX "Invalid link context\n");
636 return_VALUE(-1); 621 return -1;
637 } 622 }
638 623
639 /* TBD: Support multiple index (IRQ) entries per Link Device */ 624 /* TBD: Support multiple index (IRQ) entries per Link Device */
640 if (index) { 625 if (index) {
641 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid index %d\n", index)); 626 printk(KERN_ERR PREFIX "Invalid index %d\n", index);
642 return_VALUE(-1); 627 return -1;
643 } 628 }
644 629
645 mutex_lock(&acpi_link_lock); 630 mutex_lock(&acpi_link_lock);
646 if (acpi_pci_link_allocate(link)) { 631 if (acpi_pci_link_allocate(link)) {
647 mutex_unlock(&acpi_link_lock); 632 mutex_unlock(&acpi_link_lock);
648 return_VALUE(-1); 633 return -1;
649 } 634 }
650 635
651 if (!link->irq.active) { 636 if (!link->irq.active) {
652 mutex_unlock(&acpi_link_lock); 637 mutex_unlock(&acpi_link_lock);
653 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Link active IRQ is 0!\n")); 638 printk(KERN_ERR PREFIX "Link active IRQ is 0!\n");
654 return_VALUE(-1); 639 return -1;
655 } 640 }
656 link->refcnt++; 641 link->refcnt++;
657 mutex_unlock(&acpi_link_lock); 642 mutex_unlock(&acpi_link_lock);
@@ -665,7 +650,7 @@ acpi_pci_link_allocate_irq(acpi_handle handle,
665 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 650 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
666 "Link %s is referenced\n", 651 "Link %s is referenced\n",
667 acpi_device_bid(link->device))); 652 acpi_device_bid(link->device)));
668 return_VALUE(link->irq.active); 653 return (link->irq.active);
669} 654}
670 655
671/* 656/*
@@ -678,25 +663,24 @@ int acpi_pci_link_free_irq(acpi_handle handle)
678 struct acpi_pci_link *link = NULL; 663 struct acpi_pci_link *link = NULL;
679 acpi_status result; 664 acpi_status result;
680 665
681 ACPI_FUNCTION_TRACE("acpi_pci_link_free_irq");
682 666
683 result = acpi_bus_get_device(handle, &device); 667 result = acpi_bus_get_device(handle, &device);
684 if (result) { 668 if (result) {
685 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid link device\n")); 669 printk(KERN_ERR PREFIX "Invalid link device\n");
686 return_VALUE(-1); 670 return -1;
687 } 671 }
688 672
689 link = (struct acpi_pci_link *)acpi_driver_data(device); 673 link = (struct acpi_pci_link *)acpi_driver_data(device);
690 if (!link) { 674 if (!link) {
691 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid link context\n")); 675 printk(KERN_ERR PREFIX "Invalid link context\n");
692 return_VALUE(-1); 676 return -1;
693 } 677 }
694 678
695 mutex_lock(&acpi_link_lock); 679 mutex_lock(&acpi_link_lock);
696 if (!link->irq.initialized) { 680 if (!link->irq.initialized) {
697 mutex_unlock(&acpi_link_lock); 681 mutex_unlock(&acpi_link_lock);
698 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Link isn't initialized\n")); 682 printk(KERN_ERR PREFIX "Link isn't initialized\n");
699 return_VALUE(-1); 683 return -1;
700 } 684 }
701#ifdef FUTURE_USE 685#ifdef FUTURE_USE
702 /* 686 /*
@@ -718,7 +702,7 @@ int acpi_pci_link_free_irq(acpi_handle handle)
718 acpi_ut_evaluate_object(link->handle, "_DIS", 0, NULL); 702 acpi_ut_evaluate_object(link->handle, "_DIS", 0, NULL);
719 } 703 }
720 mutex_unlock(&acpi_link_lock); 704 mutex_unlock(&acpi_link_lock);
721 return_VALUE(link->irq.active); 705 return (link->irq.active);
722} 706}
723 707
724/* -------------------------------------------------------------------------- 708/* --------------------------------------------------------------------------
@@ -732,14 +716,13 @@ static int acpi_pci_link_add(struct acpi_device *device)
732 int i = 0; 716 int i = 0;
733 int found = 0; 717 int found = 0;
734 718
735 ACPI_FUNCTION_TRACE("acpi_pci_link_add");
736 719
737 if (!device) 720 if (!device)
738 return_VALUE(-EINVAL); 721 return -EINVAL;
739 722
740 link = kmalloc(sizeof(struct acpi_pci_link), GFP_KERNEL); 723 link = kmalloc(sizeof(struct acpi_pci_link), GFP_KERNEL);
741 if (!link) 724 if (!link)
742 return_VALUE(-ENOMEM); 725 return -ENOMEM;
743 memset(link, 0, sizeof(struct acpi_pci_link)); 726 memset(link, 0, sizeof(struct acpi_pci_link));
744 727
745 link->device = device; 728 link->device = device;
@@ -788,17 +771,16 @@ static int acpi_pci_link_add(struct acpi_device *device)
788 if (result) 771 if (result)
789 kfree(link); 772 kfree(link);
790 773
791 return_VALUE(result); 774 return result;
792} 775}
793 776
794static int acpi_pci_link_resume(struct acpi_pci_link *link) 777static int acpi_pci_link_resume(struct acpi_pci_link *link)
795{ 778{
796 ACPI_FUNCTION_TRACE("acpi_pci_link_resume");
797 779
798 if (link->refcnt && link->irq.active && link->irq.initialized) 780 if (link->refcnt && link->irq.active && link->irq.initialized)
799 return_VALUE(acpi_pci_link_set(link, link->irq.active)); 781 return (acpi_pci_link_set(link, link->irq.active));
800 else 782 else
801 return_VALUE(0); 783 return 0;
802} 784}
803 785
804/* 786/*
@@ -811,7 +793,6 @@ static int irqrouter_resume(struct sys_device *dev)
811 struct list_head *node = NULL; 793 struct list_head *node = NULL;
812 struct acpi_pci_link *link = NULL; 794 struct acpi_pci_link *link = NULL;
813 795
814 ACPI_FUNCTION_TRACE("irqrouter_resume");
815 796
816 /* Make sure SCI is enabled again (Apple firmware bug?) */ 797 /* Make sure SCI is enabled again (Apple firmware bug?) */
817 acpi_set_register(ACPI_BITREG_SCI_ENABLE, 1, ACPI_MTX_DO_NOT_LOCK); 798 acpi_set_register(ACPI_BITREG_SCI_ENABLE, 1, ACPI_MTX_DO_NOT_LOCK);
@@ -820,24 +801,22 @@ static int irqrouter_resume(struct sys_device *dev)
820 list_for_each(node, &acpi_link.entries) { 801 list_for_each(node, &acpi_link.entries) {
821 link = list_entry(node, struct acpi_pci_link, node); 802 link = list_entry(node, struct acpi_pci_link, node);
822 if (!link) { 803 if (!link) {
823 ACPI_DEBUG_PRINT((ACPI_DB_ERROR, 804 printk(KERN_ERR PREFIX "Invalid link context\n");
824 "Invalid link context\n"));
825 continue; 805 continue;
826 } 806 }
827 acpi_pci_link_resume(link); 807 acpi_pci_link_resume(link);
828 } 808 }
829 acpi_in_resume = 0; 809 acpi_in_resume = 0;
830 return_VALUE(0); 810 return 0;
831} 811}
832 812
833static int acpi_pci_link_remove(struct acpi_device *device, int type) 813static int acpi_pci_link_remove(struct acpi_device *device, int type)
834{ 814{
835 struct acpi_pci_link *link = NULL; 815 struct acpi_pci_link *link = NULL;
836 816
837 ACPI_FUNCTION_TRACE("acpi_pci_link_remove");
838 817
839 if (!device || !acpi_driver_data(device)) 818 if (!device || !acpi_driver_data(device))
840 return_VALUE(-EINVAL); 819 return -EINVAL;
841 820
842 link = (struct acpi_pci_link *)acpi_driver_data(device); 821 link = (struct acpi_pci_link *)acpi_driver_data(device);
843 822
@@ -847,7 +826,7 @@ static int acpi_pci_link_remove(struct acpi_device *device, int type)
847 826
848 kfree(link); 827 kfree(link);
849 828
850 return_VALUE(0); 829 return 0;
851} 830}
852 831
853/* 832/*
@@ -953,34 +932,32 @@ static int __init irqrouter_init_sysfs(void)
953{ 932{
954 int error; 933 int error;
955 934
956 ACPI_FUNCTION_TRACE("irqrouter_init_sysfs");
957 935
958 if (acpi_disabled || acpi_noirq) 936 if (acpi_disabled || acpi_noirq)
959 return_VALUE(0); 937 return 0;
960 938
961 error = sysdev_class_register(&irqrouter_sysdev_class); 939 error = sysdev_class_register(&irqrouter_sysdev_class);
962 if (!error) 940 if (!error)
963 error = sysdev_register(&device_irqrouter); 941 error = sysdev_register(&device_irqrouter);
964 942
965 return_VALUE(error); 943 return error;
966} 944}
967 945
968device_initcall(irqrouter_init_sysfs); 946device_initcall(irqrouter_init_sysfs);
969 947
970static int __init acpi_pci_link_init(void) 948static int __init acpi_pci_link_init(void)
971{ 949{
972 ACPI_FUNCTION_TRACE("acpi_pci_link_init");
973 950
974 if (acpi_noirq) 951 if (acpi_noirq)
975 return_VALUE(0); 952 return 0;
976 953
977 acpi_link.count = 0; 954 acpi_link.count = 0;
978 INIT_LIST_HEAD(&acpi_link.entries); 955 INIT_LIST_HEAD(&acpi_link.entries);
979 956
980 if (acpi_bus_register_driver(&acpi_pci_link_driver) < 0) 957 if (acpi_bus_register_driver(&acpi_pci_link_driver) < 0)
981 return_VALUE(-ENODEV); 958 return -ENODEV;
982 959
983 return_VALUE(0); 960 return 0;
984} 961}
985 962
986subsys_initcall(acpi_pci_link_init); 963subsys_initcall(acpi_pci_link_init);