diff options
-rw-r--r-- | drivers/ata/pata_ali.c | 14 | ||||
-rw-r--r-- | drivers/ata/pata_amd.c | 16 | ||||
-rw-r--r-- | drivers/ata/pata_artop.c | 5 | ||||
-rw-r--r-- | drivers/ata/pata_cmd640.c | 21 | ||||
-rw-r--r-- | drivers/ata/pata_cmd64x.c | 15 | ||||
-rw-r--r-- | drivers/ata/pata_cs5520.c | 15 | ||||
-rw-r--r-- | drivers/ata/pata_cs5530.c | 18 | ||||
-rw-r--r-- | drivers/ata/pata_hpt366.c | 14 | ||||
-rw-r--r-- | drivers/ata/pata_hpt37x.c | 5 | ||||
-rw-r--r-- | drivers/ata/pata_hpt3x2n.c | 5 | ||||
-rw-r--r-- | drivers/ata/pata_it821x.c | 14 | ||||
-rw-r--r-- | drivers/ata/pata_netcell.c | 5 | ||||
-rw-r--r-- | drivers/ata/pata_ns87415.c | 6 | ||||
-rw-r--r-- | drivers/ata/pata_optidma.c | 5 | ||||
-rw-r--r-- | drivers/ata/pata_serverworks.c | 19 | ||||
-rw-r--r-- | drivers/ata/pata_sil680.c | 13 | ||||
-rw-r--r-- | drivers/ata/pata_sis.c | 6 | ||||
-rw-r--r-- | drivers/ata/pata_sl82c105.c | 5 | ||||
-rw-r--r-- | drivers/ata/pata_via.c | 14 |
19 files changed, 195 insertions, 20 deletions
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c index 511a830b6256..3814aebefb2d 100644 --- a/drivers/ata/pata_ali.c +++ b/drivers/ata/pata_ali.c | |||
@@ -637,6 +637,11 @@ static int ali_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
637 | const struct ata_port_info *ppi[] = { NULL, NULL }; | 637 | const struct ata_port_info *ppi[] = { NULL, NULL }; |
638 | u8 tmp; | 638 | u8 tmp; |
639 | struct pci_dev *isa_bridge; | 639 | struct pci_dev *isa_bridge; |
640 | int rc; | ||
641 | |||
642 | rc = pcim_enable_device(pdev); | ||
643 | if (rc) | ||
644 | return rc; | ||
640 | 645 | ||
641 | /* | 646 | /* |
642 | * The chipset revision selects the driver operations and | 647 | * The chipset revision selects the driver operations and |
@@ -672,8 +677,15 @@ static int ali_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
672 | #ifdef CONFIG_PM | 677 | #ifdef CONFIG_PM |
673 | static int ali_reinit_one(struct pci_dev *pdev) | 678 | static int ali_reinit_one(struct pci_dev *pdev) |
674 | { | 679 | { |
680 | struct ata_host *host = dev_get_drvdata(&pdev->dev); | ||
681 | int rc; | ||
682 | |||
683 | rc = ata_pci_device_do_resume(pdev); | ||
684 | if (rc) | ||
685 | return rc; | ||
675 | ali_init_chipset(pdev); | 686 | ali_init_chipset(pdev); |
676 | return ata_pci_device_resume(pdev); | 687 | ata_host_resume(host); |
688 | return 0; | ||
677 | } | 689 | } |
678 | #endif | 690 | #endif |
679 | 691 | ||
diff --git a/drivers/ata/pata_amd.c b/drivers/ata/pata_amd.c index 4b8d9b592ca4..5e1bc13a756b 100644 --- a/drivers/ata/pata_amd.c +++ b/drivers/ata/pata_amd.c | |||
@@ -659,10 +659,15 @@ static int amd_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
659 | static int printed_version; | 659 | static int printed_version; |
660 | int type = id->driver_data; | 660 | int type = id->driver_data; |
661 | u8 fifo; | 661 | u8 fifo; |
662 | int rc; | ||
662 | 663 | ||
663 | if (!printed_version++) | 664 | if (!printed_version++) |
664 | dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n"); | 665 | dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n"); |
665 | 666 | ||
667 | rc = pcim_enable_device(pdev); | ||
668 | if (rc) | ||
669 | return rc; | ||
670 | |||
666 | pci_read_config_byte(pdev, 0x41, &fifo); | 671 | pci_read_config_byte(pdev, 0x41, &fifo); |
667 | 672 | ||
668 | /* Check for AMD7409 without swdma errata and if found adjust type */ | 673 | /* Check for AMD7409 without swdma errata and if found adjust type */ |
@@ -706,6 +711,13 @@ static int amd_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
706 | #ifdef CONFIG_PM | 711 | #ifdef CONFIG_PM |
707 | static int amd_reinit_one(struct pci_dev *pdev) | 712 | static int amd_reinit_one(struct pci_dev *pdev) |
708 | { | 713 | { |
714 | struct ata_host *host = dev_get_drvdata(&pdev->dev); | ||
715 | int rc; | ||
716 | |||
717 | rc = ata_pci_device_do_resume(pdev); | ||
718 | if (rc) | ||
719 | return rc; | ||
720 | |||
709 | if (pdev->vendor == PCI_VENDOR_ID_AMD) { | 721 | if (pdev->vendor == PCI_VENDOR_ID_AMD) { |
710 | u8 fifo; | 722 | u8 fifo; |
711 | pci_read_config_byte(pdev, 0x41, &fifo); | 723 | pci_read_config_byte(pdev, 0x41, &fifo); |
@@ -718,7 +730,9 @@ static int amd_reinit_one(struct pci_dev *pdev) | |||
718 | pdev->device == PCI_DEVICE_ID_AMD_COBRA_7401) | 730 | pdev->device == PCI_DEVICE_ID_AMD_COBRA_7401) |
719 | ata_pci_clear_simplex(pdev); | 731 | ata_pci_clear_simplex(pdev); |
720 | } | 732 | } |
721 | return ata_pci_device_resume(pdev); | 733 | |
734 | ata_host_resume(host); | ||
735 | return 0; | ||
722 | } | 736 | } |
723 | #endif | 737 | #endif |
724 | 738 | ||
diff --git a/drivers/ata/pata_artop.c b/drivers/ata/pata_artop.c index d4218310327b..2f8148016971 100644 --- a/drivers/ata/pata_artop.c +++ b/drivers/ata/pata_artop.c | |||
@@ -446,11 +446,16 @@ static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id) | |||
446 | .port_ops = &artop6260_ops, | 446 | .port_ops = &artop6260_ops, |
447 | }; | 447 | }; |
448 | const struct ata_port_info *ppi[] = { NULL, NULL }; | 448 | const struct ata_port_info *ppi[] = { NULL, NULL }; |
449 | int rc; | ||
449 | 450 | ||
450 | if (!printed_version++) | 451 | if (!printed_version++) |
451 | dev_printk(KERN_DEBUG, &pdev->dev, | 452 | dev_printk(KERN_DEBUG, &pdev->dev, |
452 | "version " DRV_VERSION "\n"); | 453 | "version " DRV_VERSION "\n"); |
453 | 454 | ||
455 | rc = pcim_enable_device(pdev); | ||
456 | if (rc) | ||
457 | return rc; | ||
458 | |||
454 | if (id->driver_data == 0) { /* 6210 variant */ | 459 | if (id->driver_data == 0) { /* 6210 variant */ |
455 | ppi[0] = &info_6210; | 460 | ppi[0] = &info_6210; |
456 | ppi[1] = &ata_dummy_port_info; | 461 | ppi[1] = &ata_dummy_port_info; |
diff --git a/drivers/ata/pata_cmd640.c b/drivers/ata/pata_cmd640.c index 43d198f90968..0ef1d1ded1f8 100644 --- a/drivers/ata/pata_cmd640.c +++ b/drivers/ata/pata_cmd640.c | |||
@@ -254,20 +254,31 @@ static int cmd640_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
254 | .port_ops = &cmd640_port_ops | 254 | .port_ops = &cmd640_port_ops |
255 | }; | 255 | }; |
256 | const struct ata_port_info *ppi[] = { &info, NULL }; | 256 | const struct ata_port_info *ppi[] = { &info, NULL }; |
257 | int rc; | ||
258 | |||
259 | rc = pcim_enable_device(pdev); | ||
260 | if (rc) | ||
261 | return rc; | ||
257 | 262 | ||
258 | cmd640_hardware_init(pdev); | 263 | cmd640_hardware_init(pdev); |
264 | |||
259 | return ata_pci_init_one(pdev, ppi); | 265 | return ata_pci_init_one(pdev, ppi); |
260 | } | 266 | } |
261 | 267 | ||
268 | #ifdef CONFIG_PM | ||
262 | static int cmd640_reinit_one(struct pci_dev *pdev) | 269 | static int cmd640_reinit_one(struct pci_dev *pdev) |
263 | { | 270 | { |
271 | struct ata_host *host = dev_get_drvdata(&pdev->dev); | ||
272 | int rc; | ||
273 | |||
274 | rc = ata_pci_device_do_resume(pdev); | ||
275 | if (rc) | ||
276 | return rc; | ||
264 | cmd640_hardware_init(pdev); | 277 | cmd640_hardware_init(pdev); |
265 | #ifdef CONFIG_PM | 278 | ata_host_resume(host); |
266 | return ata_pci_device_resume(pdev); | ||
267 | #else | ||
268 | return 0; | 279 | return 0; |
269 | #endif | ||
270 | } | 280 | } |
281 | #endif | ||
271 | 282 | ||
272 | static const struct pci_device_id cmd640[] = { | 283 | static const struct pci_device_id cmd640[] = { |
273 | { PCI_VDEVICE(CMD, 0x640), 0 }, | 284 | { PCI_VDEVICE(CMD, 0x640), 0 }, |
@@ -281,8 +292,8 @@ static struct pci_driver cmd640_pci_driver = { | |||
281 | .remove = ata_pci_remove_one, | 292 | .remove = ata_pci_remove_one, |
282 | #ifdef CONFIG_PM | 293 | #ifdef CONFIG_PM |
283 | .suspend = ata_pci_device_suspend, | 294 | .suspend = ata_pci_device_suspend, |
284 | #endif | ||
285 | .resume = cmd640_reinit_one, | 295 | .resume = cmd640_reinit_one, |
296 | #endif | ||
286 | }; | 297 | }; |
287 | 298 | ||
288 | static int __init cmd640_init(void) | 299 | static int __init cmd640_init(void) |
diff --git a/drivers/ata/pata_cmd64x.c b/drivers/ata/pata_cmd64x.c index 7acbbd9ee469..1c9a8d97f874 100644 --- a/drivers/ata/pata_cmd64x.c +++ b/drivers/ata/pata_cmd64x.c | |||
@@ -435,6 +435,11 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
435 | }; | 435 | }; |
436 | const struct ata_port_info *ppi[] = { &cmd_info[id->driver_data], NULL }; | 436 | const struct ata_port_info *ppi[] = { &cmd_info[id->driver_data], NULL }; |
437 | u8 mrdmode; | 437 | u8 mrdmode; |
438 | int rc; | ||
439 | |||
440 | rc = pcim_enable_device(pdev); | ||
441 | if (rc) | ||
442 | return rc; | ||
438 | 443 | ||
439 | pci_read_config_dword(pdev, PCI_CLASS_REVISION, &class_rev); | 444 | pci_read_config_dword(pdev, PCI_CLASS_REVISION, &class_rev); |
440 | class_rev &= 0xFF; | 445 | class_rev &= 0xFF; |
@@ -470,7 +475,14 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
470 | #ifdef CONFIG_PM | 475 | #ifdef CONFIG_PM |
471 | static int cmd64x_reinit_one(struct pci_dev *pdev) | 476 | static int cmd64x_reinit_one(struct pci_dev *pdev) |
472 | { | 477 | { |
478 | struct ata_host *host = dev_get_drvdata(&pdev->dev); | ||
473 | u8 mrdmode; | 479 | u8 mrdmode; |
480 | int rc; | ||
481 | |||
482 | rc = ata_pci_device_do_resume(pdev); | ||
483 | if (rc) | ||
484 | return rc; | ||
485 | |||
474 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 64); | 486 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 64); |
475 | pci_read_config_byte(pdev, MRDMODE, &mrdmode); | 487 | pci_read_config_byte(pdev, MRDMODE, &mrdmode); |
476 | mrdmode &= ~ 0x30; /* IRQ set up */ | 488 | mrdmode &= ~ 0x30; /* IRQ set up */ |
@@ -479,7 +491,8 @@ static int cmd64x_reinit_one(struct pci_dev *pdev) | |||
479 | #ifdef CONFIG_PPC | 491 | #ifdef CONFIG_PPC |
480 | pci_write_config_byte(pdev, UDIDETCR0, 0xF0); | 492 | pci_write_config_byte(pdev, UDIDETCR0, 0xF0); |
481 | #endif | 493 | #endif |
482 | return ata_pci_device_resume(pdev); | 494 | ata_host_resume(host); |
495 | return 0; | ||
483 | } | 496 | } |
484 | #endif | 497 | #endif |
485 | 498 | ||
diff --git a/drivers/ata/pata_cs5520.c b/drivers/ata/pata_cs5520.c index 7ed279b0a12e..dd6b2355fcdc 100644 --- a/drivers/ata/pata_cs5520.c +++ b/drivers/ata/pata_cs5520.c | |||
@@ -203,6 +203,10 @@ static int __devinit cs5520_init_one(struct pci_dev *pdev, const struct pci_devi | |||
203 | struct ata_ioports *ioaddr; | 203 | struct ata_ioports *ioaddr; |
204 | int i, rc; | 204 | int i, rc; |
205 | 205 | ||
206 | rc = pcim_enable_device(pdev); | ||
207 | if (rc) | ||
208 | return rc; | ||
209 | |||
206 | /* IDE port enable bits */ | 210 | /* IDE port enable bits */ |
207 | pci_read_config_byte(pdev, 0x60, &pcicfg); | 211 | pci_read_config_byte(pdev, 0x60, &pcicfg); |
208 | 212 | ||
@@ -310,11 +314,20 @@ static int __devinit cs5520_init_one(struct pci_dev *pdev, const struct pci_devi | |||
310 | 314 | ||
311 | static int cs5520_reinit_one(struct pci_dev *pdev) | 315 | static int cs5520_reinit_one(struct pci_dev *pdev) |
312 | { | 316 | { |
317 | struct ata_host *host = dev_get_drvdata(&pdev->dev); | ||
313 | u8 pcicfg; | 318 | u8 pcicfg; |
319 | int rc; | ||
320 | |||
321 | rc = ata_pci_device_do_resume(pdev); | ||
322 | if (rc) | ||
323 | return rc; | ||
324 | |||
314 | pci_read_config_byte(pdev, 0x60, &pcicfg); | 325 | pci_read_config_byte(pdev, 0x60, &pcicfg); |
315 | if ((pcicfg & 0x40) == 0) | 326 | if ((pcicfg & 0x40) == 0) |
316 | pci_write_config_byte(pdev, 0x60, pcicfg | 0x40); | 327 | pci_write_config_byte(pdev, 0x60, pcicfg | 0x40); |
317 | return ata_pci_device_resume(pdev); | 328 | |
329 | ata_host_resume(host); | ||
330 | return 0; | ||
318 | } | 331 | } |
319 | 332 | ||
320 | /** | 333 | /** |
diff --git a/drivers/ata/pata_cs5530.c b/drivers/ata/pata_cs5530.c index e1818fdd9159..f876aeddf1a1 100644 --- a/drivers/ata/pata_cs5530.c +++ b/drivers/ata/pata_cs5530.c | |||
@@ -349,6 +349,11 @@ static int cs5530_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
349 | .port_ops = &cs5530_port_ops | 349 | .port_ops = &cs5530_port_ops |
350 | }; | 350 | }; |
351 | const struct ata_port_info *ppi[] = { &info, NULL }; | 351 | const struct ata_port_info *ppi[] = { &info, NULL }; |
352 | int rc; | ||
353 | |||
354 | rc = pcim_enable_device(pdev); | ||
355 | if (rc) | ||
356 | return rc; | ||
352 | 357 | ||
353 | /* Chip initialisation */ | 358 | /* Chip initialisation */ |
354 | if (cs5530_init_chip()) | 359 | if (cs5530_init_chip()) |
@@ -364,10 +369,19 @@ static int cs5530_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
364 | #ifdef CONFIG_PM | 369 | #ifdef CONFIG_PM |
365 | static int cs5530_reinit_one(struct pci_dev *pdev) | 370 | static int cs5530_reinit_one(struct pci_dev *pdev) |
366 | { | 371 | { |
372 | struct ata_host *host = dev_get_drvdata(&pdev->dev); | ||
373 | int rc; | ||
374 | |||
375 | rc = ata_pci_device_do_resume(pdev); | ||
376 | if (rc) | ||
377 | return rc; | ||
378 | |||
367 | /* If we fail on resume we are doomed */ | 379 | /* If we fail on resume we are doomed */ |
368 | if (cs5530_init_chip()) | 380 | if (cs5530_init_chip()) |
369 | BUG(); | 381 | return -EIO; |
370 | return ata_pci_device_resume(pdev); | 382 | |
383 | ata_host_resume(host); | ||
384 | return 0; | ||
371 | } | 385 | } |
372 | #endif /* CONFIG_PM */ | 386 | #endif /* CONFIG_PM */ |
373 | 387 | ||
diff --git a/drivers/ata/pata_hpt366.c b/drivers/ata/pata_hpt366.c index a742efa0da2b..a82089048f58 100644 --- a/drivers/ata/pata_hpt366.c +++ b/drivers/ata/pata_hpt366.c | |||
@@ -402,6 +402,11 @@ static int hpt36x_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
402 | 402 | ||
403 | u32 class_rev; | 403 | u32 class_rev; |
404 | u32 reg1; | 404 | u32 reg1; |
405 | int rc; | ||
406 | |||
407 | rc = pcim_enable_device(dev); | ||
408 | if (rc) | ||
409 | return rc; | ||
405 | 410 | ||
406 | pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev); | 411 | pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev); |
407 | class_rev &= 0xFF; | 412 | class_rev &= 0xFF; |
@@ -435,8 +440,15 @@ static int hpt36x_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
435 | #ifdef CONFIG_PM | 440 | #ifdef CONFIG_PM |
436 | static int hpt36x_reinit_one(struct pci_dev *dev) | 441 | static int hpt36x_reinit_one(struct pci_dev *dev) |
437 | { | 442 | { |
443 | struct ata_host *host = dev_get_drvdata(&dev->dev); | ||
444 | int rc; | ||
445 | |||
446 | rc = ata_pci_device_do_resume(dev); | ||
447 | if (rc) | ||
448 | return rc; | ||
438 | hpt36x_init_chipset(dev); | 449 | hpt36x_init_chipset(dev); |
439 | return ata_pci_device_resume(dev); | 450 | ata_host_resume(host); |
451 | return 0; | ||
440 | } | 452 | } |
441 | #endif | 453 | #endif |
442 | 454 | ||
diff --git a/drivers/ata/pata_hpt37x.c b/drivers/ata/pata_hpt37x.c index 9a10878b2ad8..2ddcd07a7518 100644 --- a/drivers/ata/pata_hpt37x.c +++ b/drivers/ata/pata_hpt37x.c | |||
@@ -966,6 +966,11 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
966 | 966 | ||
967 | const struct hpt_chip *chip_table; | 967 | const struct hpt_chip *chip_table; |
968 | int clock_slot; | 968 | int clock_slot; |
969 | int rc; | ||
970 | |||
971 | rc = pcim_enable_device(dev); | ||
972 | if (rc) | ||
973 | return rc; | ||
969 | 974 | ||
970 | pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev); | 975 | pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev); |
971 | class_rev &= 0xFF; | 976 | class_rev &= 0xFF; |
diff --git a/drivers/ata/pata_hpt3x2n.c b/drivers/ata/pata_hpt3x2n.c index 9f1c084f846f..3a517cb9bd3e 100644 --- a/drivers/ata/pata_hpt3x2n.c +++ b/drivers/ata/pata_hpt3x2n.c | |||
@@ -505,6 +505,11 @@ static int hpt3x2n_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
505 | unsigned int f_low, f_high; | 505 | unsigned int f_low, f_high; |
506 | int adjust; | 506 | int adjust; |
507 | unsigned long iobase = pci_resource_start(dev, 4); | 507 | unsigned long iobase = pci_resource_start(dev, 4); |
508 | int rc; | ||
509 | |||
510 | rc = pcim_enable_device(dev); | ||
511 | if (rc) | ||
512 | return rc; | ||
508 | 513 | ||
509 | pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev); | 514 | pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev); |
510 | class_rev &= 0xFF; | 515 | class_rev &= 0xFF; |
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c index 257951d03dbb..6bdbb7140dfa 100644 --- a/drivers/ata/pata_it821x.c +++ b/drivers/ata/pata_it821x.c | |||
@@ -759,6 +759,11 @@ static int it821x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
759 | 759 | ||
760 | const struct ata_port_info *ppi[] = { NULL, NULL }; | 760 | const struct ata_port_info *ppi[] = { NULL, NULL }; |
761 | static char *mode[2] = { "pass through", "smart" }; | 761 | static char *mode[2] = { "pass through", "smart" }; |
762 | int rc; | ||
763 | |||
764 | rc = pcim_enable_device(pdev); | ||
765 | if (rc) | ||
766 | return rc; | ||
762 | 767 | ||
763 | /* Force the card into bypass mode if so requested */ | 768 | /* Force the card into bypass mode if so requested */ |
764 | if (it8212_noraid) { | 769 | if (it8212_noraid) { |
@@ -780,10 +785,17 @@ static int it821x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
780 | #ifdef CONFIG_PM | 785 | #ifdef CONFIG_PM |
781 | static int it821x_reinit_one(struct pci_dev *pdev) | 786 | static int it821x_reinit_one(struct pci_dev *pdev) |
782 | { | 787 | { |
788 | struct ata_host *host = dev_get_drvdata(&pdev->dev); | ||
789 | int rc; | ||
790 | |||
791 | rc = ata_pci_device_do_resume(pdev); | ||
792 | if (rc) | ||
793 | return rc; | ||
783 | /* Resume - turn raid back off if need be */ | 794 | /* Resume - turn raid back off if need be */ |
784 | if (it8212_noraid) | 795 | if (it8212_noraid) |
785 | it821x_disable_raid(pdev); | 796 | it821x_disable_raid(pdev); |
786 | return ata_pci_device_resume(pdev); | 797 | ata_host_resume(host); |
798 | return rc; | ||
787 | } | 799 | } |
788 | #endif | 800 | #endif |
789 | 801 | ||
diff --git a/drivers/ata/pata_netcell.c b/drivers/ata/pata_netcell.c index 25c922abd554..0e4a08e15209 100644 --- a/drivers/ata/pata_netcell.c +++ b/drivers/ata/pata_netcell.c | |||
@@ -100,11 +100,16 @@ static int netcell_init_one (struct pci_dev *pdev, const struct pci_device_id *e | |||
100 | .port_ops = &netcell_ops, | 100 | .port_ops = &netcell_ops, |
101 | }; | 101 | }; |
102 | const struct ata_port_info *port_info[] = { &info, NULL }; | 102 | const struct ata_port_info *port_info[] = { &info, NULL }; |
103 | int rc; | ||
103 | 104 | ||
104 | if (!printed_version++) | 105 | if (!printed_version++) |
105 | dev_printk(KERN_DEBUG, &pdev->dev, | 106 | dev_printk(KERN_DEBUG, &pdev->dev, |
106 | "version " DRV_VERSION "\n"); | 107 | "version " DRV_VERSION "\n"); |
107 | 108 | ||
109 | rc = pcim_enable_device(pdev); | ||
110 | if (rc) | ||
111 | return rc; | ||
112 | |||
108 | /* Any chip specific setup/optimisation/messages here */ | 113 | /* Any chip specific setup/optimisation/messages here */ |
109 | ata_pci_clear_simplex(pdev); | 114 | ata_pci_clear_simplex(pdev); |
110 | 115 | ||
diff --git a/drivers/ata/pata_ns87415.c b/drivers/ata/pata_ns87415.c index d0e2e50823b1..93eb958cb0c9 100644 --- a/drivers/ata/pata_ns87415.c +++ b/drivers/ata/pata_ns87415.c | |||
@@ -410,6 +410,7 @@ static int ns87415_init_one (struct pci_dev *pdev, const struct pci_device_id *e | |||
410 | .port_ops = &ns87415_pata_ops, | 410 | .port_ops = &ns87415_pata_ops, |
411 | }; | 411 | }; |
412 | const struct ata_port_info *ppi[] = { &info, NULL }; | 412 | const struct ata_port_info *ppi[] = { &info, NULL }; |
413 | int rc; | ||
413 | #if defined(CONFIG_SUPERIO) | 414 | #if defined(CONFIG_SUPERIO) |
414 | static const struct ata_port_info info87560 = { | 415 | static const struct ata_port_info info87560 = { |
415 | .sht = &ns87415_sht, | 416 | .sht = &ns87415_sht, |
@@ -425,6 +426,11 @@ static int ns87415_init_one (struct pci_dev *pdev, const struct pci_device_id *e | |||
425 | if (!printed_version++) | 426 | if (!printed_version++) |
426 | dev_printk(KERN_DEBUG, &pdev->dev, | 427 | dev_printk(KERN_DEBUG, &pdev->dev, |
427 | "version " DRV_VERSION "\n"); | 428 | "version " DRV_VERSION "\n"); |
429 | |||
430 | rc = pcim_enable_device(pdev); | ||
431 | if (rc) | ||
432 | return rc; | ||
433 | |||
428 | /* Select 512 byte sectors */ | 434 | /* Select 512 byte sectors */ |
429 | pci_write_config_byte(pdev, 0x55, 0xEE); | 435 | pci_write_config_byte(pdev, 0x55, 0xEE); |
430 | /* Select PIO0 8bit clocking */ | 436 | /* Select PIO0 8bit clocking */ |
diff --git a/drivers/ata/pata_optidma.c b/drivers/ata/pata_optidma.c index f9b485a487ae..be8c421dc2aa 100644 --- a/drivers/ata/pata_optidma.c +++ b/drivers/ata/pata_optidma.c | |||
@@ -497,10 +497,15 @@ static int optidma_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
497 | }; | 497 | }; |
498 | const struct ata_port_info *ppi[] = { &info_82c700, NULL }; | 498 | const struct ata_port_info *ppi[] = { &info_82c700, NULL }; |
499 | static int printed_version; | 499 | static int printed_version; |
500 | int rc; | ||
500 | 501 | ||
501 | if (!printed_version++) | 502 | if (!printed_version++) |
502 | dev_printk(KERN_DEBUG, &dev->dev, "version " DRV_VERSION "\n"); | 503 | dev_printk(KERN_DEBUG, &dev->dev, "version " DRV_VERSION "\n"); |
503 | 504 | ||
505 | rc = pcim_enable_device(dev); | ||
506 | if (rc) | ||
507 | return rc; | ||
508 | |||
504 | /* Fixed location chipset magic */ | 509 | /* Fixed location chipset magic */ |
505 | inw(0x1F1); | 510 | inw(0x1F1); |
506 | inw(0x1F1); | 511 | inw(0x1F1); |
diff --git a/drivers/ata/pata_serverworks.c b/drivers/ata/pata_serverworks.c index a589c0fa0dbb..6702df37cfed 100644 --- a/drivers/ata/pata_serverworks.c +++ b/drivers/ata/pata_serverworks.c | |||
@@ -498,6 +498,11 @@ static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id | |||
498 | } | 498 | } |
499 | }; | 499 | }; |
500 | const struct ata_port_info *ppi[] = { &info[id->driver_data], NULL }; | 500 | const struct ata_port_info *ppi[] = { &info[id->driver_data], NULL }; |
501 | int rc; | ||
502 | |||
503 | rc = pcim_enable_device(pdev); | ||
504 | if (rc) | ||
505 | return rc; | ||
501 | 506 | ||
502 | /* Force master latency timer to 64 PCI clocks */ | 507 | /* Force master latency timer to 64 PCI clocks */ |
503 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40); | 508 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40); |
@@ -535,11 +540,17 @@ static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id | |||
535 | #ifdef CONFIG_PM | 540 | #ifdef CONFIG_PM |
536 | static int serverworks_reinit_one(struct pci_dev *pdev) | 541 | static int serverworks_reinit_one(struct pci_dev *pdev) |
537 | { | 542 | { |
543 | struct ata_host *host = dev_get_drvdata(&pdev->dev); | ||
544 | int rc; | ||
545 | |||
546 | rc = ata_pci_device_do_resume(pdev); | ||
547 | if (rc) | ||
548 | return rc; | ||
549 | |||
538 | /* Force master latency timer to 64 PCI clocks */ | 550 | /* Force master latency timer to 64 PCI clocks */ |
539 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40); | 551 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40); |
540 | 552 | ||
541 | switch (pdev->device) | 553 | switch (pdev->device) { |
542 | { | ||
543 | case PCI_DEVICE_ID_SERVERWORKS_OSB4IDE: | 554 | case PCI_DEVICE_ID_SERVERWORKS_OSB4IDE: |
544 | serverworks_fixup_osb4(pdev); | 555 | serverworks_fixup_osb4(pdev); |
545 | break; | 556 | break; |
@@ -554,7 +565,9 @@ static int serverworks_reinit_one(struct pci_dev *pdev) | |||
554 | serverworks_fixup_ht1000(pdev); | 565 | serverworks_fixup_ht1000(pdev); |
555 | break; | 566 | break; |
556 | } | 567 | } |
557 | return ata_pci_device_resume(pdev); | 568 | |
569 | ata_host_resume(host); | ||
570 | return 0; | ||
558 | } | 571 | } |
559 | #endif | 572 | #endif |
560 | 573 | ||
diff --git a/drivers/ata/pata_sil680.c b/drivers/ata/pata_sil680.c index 7c5b2dd9a1a1..f4dc09718cab 100644 --- a/drivers/ata/pata_sil680.c +++ b/drivers/ata/pata_sil680.c | |||
@@ -346,6 +346,10 @@ static int __devinit sil680_init_one(struct pci_dev *pdev, | |||
346 | if (!printed_version++) | 346 | if (!printed_version++) |
347 | dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n"); | 347 | dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n"); |
348 | 348 | ||
349 | rc = pcim_enable_device(pdev); | ||
350 | if (rc) | ||
351 | return rc; | ||
352 | |||
349 | switch (sil680_init_chip(pdev, &try_mmio)) { | 353 | switch (sil680_init_chip(pdev, &try_mmio)) { |
350 | case 0: | 354 | case 0: |
351 | ppi[0] = &info_slow; | 355 | ppi[0] = &info_slow; |
@@ -406,10 +410,15 @@ use_ioports: | |||
406 | #ifdef CONFIG_PM | 410 | #ifdef CONFIG_PM |
407 | static int sil680_reinit_one(struct pci_dev *pdev) | 411 | static int sil680_reinit_one(struct pci_dev *pdev) |
408 | { | 412 | { |
409 | int try_mmio; | 413 | struct ata_host *host = dev_get_drvdata(&pdev->dev); |
414 | int try_mmio, rc; | ||
410 | 415 | ||
416 | rc = ata_pci_device_do_resume(pdev); | ||
417 | if (rc) | ||
418 | return rc; | ||
411 | sil680_init_chip(pdev, &try_mmio); | 419 | sil680_init_chip(pdev, &try_mmio); |
412 | return ata_pci_device_resume(pdev); | 420 | ata_host_resume(host); |
421 | return 0; | ||
413 | } | 422 | } |
414 | #endif | 423 | #endif |
415 | 424 | ||
diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c index dc7e91562e43..abda90f51247 100644 --- a/drivers/ata/pata_sis.c +++ b/drivers/ata/pata_sis.c | |||
@@ -862,6 +862,7 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
862 | struct pci_dev *host = NULL; | 862 | struct pci_dev *host = NULL; |
863 | struct sis_chipset *chipset = NULL; | 863 | struct sis_chipset *chipset = NULL; |
864 | struct sis_chipset *sets; | 864 | struct sis_chipset *sets; |
865 | int rc; | ||
865 | 866 | ||
866 | static struct sis_chipset sis_chipsets[] = { | 867 | static struct sis_chipset sis_chipsets[] = { |
867 | 868 | ||
@@ -914,8 +915,11 @@ static int sis_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
914 | dev_printk(KERN_DEBUG, &pdev->dev, | 915 | dev_printk(KERN_DEBUG, &pdev->dev, |
915 | "version " DRV_VERSION "\n"); | 916 | "version " DRV_VERSION "\n"); |
916 | 917 | ||
917 | /* We have to find the bridge first */ | 918 | rc = pcim_enable_device(pdev); |
919 | if (rc) | ||
920 | return rc; | ||
918 | 921 | ||
922 | /* We have to find the bridge first */ | ||
919 | for (sets = &sis_chipsets[0]; sets->device; sets++) { | 923 | for (sets = &sis_chipsets[0]; sets->device; sets++) { |
920 | host = pci_get_device(PCI_VENDOR_ID_SI, sets->device, NULL); | 924 | host = pci_get_device(PCI_VENDOR_ID_SI, sets->device, NULL); |
921 | if (host != NULL) { | 925 | if (host != NULL) { |
diff --git a/drivers/ata/pata_sl82c105.c b/drivers/ata/pata_sl82c105.c index 81ef207f8265..6c37181341ea 100644 --- a/drivers/ata/pata_sl82c105.c +++ b/drivers/ata/pata_sl82c105.c | |||
@@ -344,6 +344,11 @@ static int sl82c105_init_one(struct pci_dev *dev, const struct pci_device_id *id | |||
344 | NULL }; | 344 | NULL }; |
345 | u32 val; | 345 | u32 val; |
346 | int rev; | 346 | int rev; |
347 | int rc; | ||
348 | |||
349 | rc = pcim_enable_device(dev); | ||
350 | if (rc) | ||
351 | return rc; | ||
347 | 352 | ||
348 | rev = sl82c105_bridge_revision(dev); | 353 | rev = sl82c105_bridge_revision(dev); |
349 | 354 | ||
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c index d119a68c388f..24430f70f00e 100644 --- a/drivers/ata/pata_via.c +++ b/drivers/ata/pata_via.c | |||
@@ -524,10 +524,15 @@ static int via_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
524 | static int printed_version; | 524 | static int printed_version; |
525 | u8 enable; | 525 | u8 enable; |
526 | u32 timing; | 526 | u32 timing; |
527 | int rc; | ||
527 | 528 | ||
528 | if (!printed_version++) | 529 | if (!printed_version++) |
529 | dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n"); | 530 | dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n"); |
530 | 531 | ||
532 | rc = pcim_enable_device(pdev); | ||
533 | if (rc) | ||
534 | return rc; | ||
535 | |||
531 | /* To find out how the IDE will behave and what features we | 536 | /* To find out how the IDE will behave and what features we |
532 | actually have to look at the bridge not the IDE controller */ | 537 | actually have to look at the bridge not the IDE controller */ |
533 | for (config = via_isa_bridges; config->id; config++) | 538 | for (config = via_isa_bridges; config->id; config++) |
@@ -615,6 +620,11 @@ static int via_reinit_one(struct pci_dev *pdev) | |||
615 | u32 timing; | 620 | u32 timing; |
616 | struct ata_host *host = dev_get_drvdata(&pdev->dev); | 621 | struct ata_host *host = dev_get_drvdata(&pdev->dev); |
617 | const struct via_isa_bridge *config = host->private_data; | 622 | const struct via_isa_bridge *config = host->private_data; |
623 | int rc; | ||
624 | |||
625 | rc = ata_pci_device_do_resume(pdev); | ||
626 | if (rc) | ||
627 | return rc; | ||
618 | 628 | ||
619 | via_config_fifo(pdev, config->flags); | 629 | via_config_fifo(pdev, config->flags); |
620 | 630 | ||
@@ -630,7 +640,9 @@ static int via_reinit_one(struct pci_dev *pdev) | |||
630 | timing &= ~0x80008; | 640 | timing &= ~0x80008; |
631 | pci_write_config_dword(pdev, 0x50, timing); | 641 | pci_write_config_dword(pdev, 0x50, timing); |
632 | } | 642 | } |
633 | return ata_pci_device_resume(pdev); | 643 | |
644 | ata_host_resume(host); | ||
645 | return 0; | ||
634 | } | 646 | } |
635 | #endif | 647 | #endif |
636 | 648 | ||