diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/ahci.c | 13 | ||||
-rw-r--r-- | drivers/scsi/libata-core.c | 36 | ||||
-rw-r--r-- | drivers/scsi/libata.h | 6 | ||||
-rw-r--r-- | drivers/scsi/sata_sil24.c | 8 |
4 files changed, 22 insertions, 41 deletions
diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c index 20fc0846e0be..0e7fb9bf2cd1 100644 --- a/drivers/scsi/ahci.c +++ b/drivers/scsi/ahci.c | |||
@@ -534,7 +534,7 @@ static int ahci_poll_register(void __iomem *reg, u32 mask, u32 val, | |||
534 | return -1; | 534 | return -1; |
535 | } | 535 | } |
536 | 536 | ||
537 | static int ahci_softreset(struct ata_port *ap, int verbose, unsigned int *class) | 537 | static int ahci_softreset(struct ata_port *ap, unsigned int *class) |
538 | { | 538 | { |
539 | struct ahci_host_priv *hpriv = ap->host_set->private_data; | 539 | struct ahci_host_priv *hpriv = ap->host_set->private_data; |
540 | struct ahci_port_priv *pp = ap->private_data; | 540 | struct ahci_port_priv *pp = ap->private_data; |
@@ -646,22 +646,19 @@ static int ahci_softreset(struct ata_port *ap, int verbose, unsigned int *class) | |||
646 | fail_restart: | 646 | fail_restart: |
647 | ahci_start_engine(ap); | 647 | ahci_start_engine(ap); |
648 | fail: | 648 | fail: |
649 | if (verbose) | 649 | printk(KERN_ERR "ata%u: softreset failed (%s)\n", |
650 | printk(KERN_ERR "ata%u: softreset failed (%s)\n", | 650 | ap->id, reason); |
651 | ap->id, reason); | ||
652 | else | ||
653 | DPRINTK("EXIT, rc=%d reason=\"%s\"\n", rc, reason); | ||
654 | return rc; | 651 | return rc; |
655 | } | 652 | } |
656 | 653 | ||
657 | static int ahci_hardreset(struct ata_port *ap, int verbose, unsigned int *class) | 654 | static int ahci_hardreset(struct ata_port *ap, unsigned int *class) |
658 | { | 655 | { |
659 | int rc; | 656 | int rc; |
660 | 657 | ||
661 | DPRINTK("ENTER\n"); | 658 | DPRINTK("ENTER\n"); |
662 | 659 | ||
663 | ahci_stop_engine(ap); | 660 | ahci_stop_engine(ap); |
664 | rc = sata_std_hardreset(ap, verbose, class); | 661 | rc = sata_std_hardreset(ap, class); |
665 | ahci_start_engine(ap); | 662 | ahci_start_engine(ap); |
666 | 663 | ||
667 | if (rc == 0) | 664 | if (rc == 0) |
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index f37179623efa..92b5077ac052 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
@@ -2387,7 +2387,6 @@ void ata_std_probeinit(struct ata_port *ap) | |||
2387 | /** | 2387 | /** |
2388 | * ata_std_softreset - reset host port via ATA SRST | 2388 | * ata_std_softreset - reset host port via ATA SRST |
2389 | * @ap: port to reset | 2389 | * @ap: port to reset |
2390 | * @verbose: fail verbosely | ||
2391 | * @classes: resulting classes of attached devices | 2390 | * @classes: resulting classes of attached devices |
2392 | * | 2391 | * |
2393 | * Reset host port using ATA SRST. This function is to be used | 2392 | * Reset host port using ATA SRST. This function is to be used |
@@ -2399,7 +2398,7 @@ void ata_std_probeinit(struct ata_port *ap) | |||
2399 | * RETURNS: | 2398 | * RETURNS: |
2400 | * 0 on success, -errno otherwise. | 2399 | * 0 on success, -errno otherwise. |
2401 | */ | 2400 | */ |
2402 | int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes) | 2401 | int ata_std_softreset(struct ata_port *ap, unsigned int *classes) |
2403 | { | 2402 | { |
2404 | unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS; | 2403 | unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS; |
2405 | unsigned int devmask = 0, err_mask; | 2404 | unsigned int devmask = 0, err_mask; |
@@ -2425,12 +2424,8 @@ int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes) | |||
2425 | DPRINTK("about to softreset, devmask=%x\n", devmask); | 2424 | DPRINTK("about to softreset, devmask=%x\n", devmask); |
2426 | err_mask = ata_bus_softreset(ap, devmask); | 2425 | err_mask = ata_bus_softreset(ap, devmask); |
2427 | if (err_mask) { | 2426 | if (err_mask) { |
2428 | if (verbose) | 2427 | printk(KERN_ERR "ata%u: SRST failed (err_mask=0x%x)\n", |
2429 | printk(KERN_ERR "ata%u: SRST failed (err_mask=0x%x)\n", | 2428 | ap->id, err_mask); |
2430 | ap->id, err_mask); | ||
2431 | else | ||
2432 | DPRINTK("EXIT, softreset failed (err_mask=0x%x)\n", | ||
2433 | err_mask); | ||
2434 | return -EIO; | 2429 | return -EIO; |
2435 | } | 2430 | } |
2436 | 2431 | ||
@@ -2447,7 +2442,6 @@ int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes) | |||
2447 | /** | 2442 | /** |
2448 | * sata_std_hardreset - reset host port via SATA phy reset | 2443 | * sata_std_hardreset - reset host port via SATA phy reset |
2449 | * @ap: port to reset | 2444 | * @ap: port to reset |
2450 | * @verbose: fail verbosely | ||
2451 | * @class: resulting class of attached device | 2445 | * @class: resulting class of attached device |
2452 | * | 2446 | * |
2453 | * SATA phy-reset host port using DET bits of SControl register. | 2447 | * SATA phy-reset host port using DET bits of SControl register. |
@@ -2460,7 +2454,7 @@ int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes) | |||
2460 | * RETURNS: | 2454 | * RETURNS: |
2461 | * 0 on success, -errno otherwise. | 2455 | * 0 on success, -errno otherwise. |
2462 | */ | 2456 | */ |
2463 | int sata_std_hardreset(struct ata_port *ap, int verbose, unsigned int *class) | 2457 | int sata_std_hardreset(struct ata_port *ap, unsigned int *class) |
2464 | { | 2458 | { |
2465 | u32 scontrol; | 2459 | u32 scontrol; |
2466 | 2460 | ||
@@ -2500,11 +2494,8 @@ int sata_std_hardreset(struct ata_port *ap, int verbose, unsigned int *class) | |||
2500 | } | 2494 | } |
2501 | 2495 | ||
2502 | if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) { | 2496 | if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) { |
2503 | if (verbose) | 2497 | printk(KERN_ERR "ata%u: COMRESET failed " |
2504 | printk(KERN_ERR "ata%u: COMRESET failed " | 2498 | "(device not ready)\n", ap->id); |
2505 | "(device not ready)\n", ap->id); | ||
2506 | else | ||
2507 | DPRINTK("EXIT, device not ready\n"); | ||
2508 | return -EIO; | 2499 | return -EIO; |
2509 | } | 2500 | } |
2510 | 2501 | ||
@@ -2592,16 +2583,15 @@ int ata_std_probe_reset(struct ata_port *ap, unsigned int *classes) | |||
2592 | ata_std_postreset, classes); | 2583 | ata_std_postreset, classes); |
2593 | } | 2584 | } |
2594 | 2585 | ||
2595 | int ata_do_reset(struct ata_port *ap, | 2586 | int ata_do_reset(struct ata_port *ap, ata_reset_fn_t reset, |
2596 | ata_reset_fn_t reset, ata_postreset_fn_t postreset, | 2587 | ata_postreset_fn_t postreset, unsigned int *classes) |
2597 | int verbose, unsigned int *classes) | ||
2598 | { | 2588 | { |
2599 | int i, rc; | 2589 | int i, rc; |
2600 | 2590 | ||
2601 | for (i = 0; i < ATA_MAX_DEVICES; i++) | 2591 | for (i = 0; i < ATA_MAX_DEVICES; i++) |
2602 | classes[i] = ATA_DEV_UNKNOWN; | 2592 | classes[i] = ATA_DEV_UNKNOWN; |
2603 | 2593 | ||
2604 | rc = reset(ap, verbose, classes); | 2594 | rc = reset(ap, classes); |
2605 | if (rc) | 2595 | if (rc) |
2606 | return rc; | 2596 | return rc; |
2607 | 2597 | ||
@@ -2645,8 +2635,6 @@ int ata_do_reset(struct ata_port *ap, | |||
2645 | * - If classification is supported, fill classes[] with | 2635 | * - If classification is supported, fill classes[] with |
2646 | * recognized class codes. | 2636 | * recognized class codes. |
2647 | * - If classification is not supported, leave classes[] alone. | 2637 | * - If classification is not supported, leave classes[] alone. |
2648 | * - If verbose is non-zero, print error message on failure; | ||
2649 | * otherwise, shut up. | ||
2650 | * | 2638 | * |
2651 | * LOCKING: | 2639 | * LOCKING: |
2652 | * Kernel thread context (may sleep) | 2640 | * Kernel thread context (may sleep) |
@@ -2666,7 +2654,7 @@ int ata_drive_probe_reset(struct ata_port *ap, ata_probeinit_fn_t probeinit, | |||
2666 | probeinit(ap); | 2654 | probeinit(ap); |
2667 | 2655 | ||
2668 | if (softreset && !ata_set_sata_spd_needed(ap)) { | 2656 | if (softreset && !ata_set_sata_spd_needed(ap)) { |
2669 | rc = ata_do_reset(ap, softreset, postreset, 0, classes); | 2657 | rc = ata_do_reset(ap, softreset, postreset, classes); |
2670 | if (rc == 0 && classes[0] != ATA_DEV_UNKNOWN) | 2658 | if (rc == 0 && classes[0] != ATA_DEV_UNKNOWN) |
2671 | goto done; | 2659 | goto done; |
2672 | printk(KERN_INFO "ata%u: softreset failed, will try " | 2660 | printk(KERN_INFO "ata%u: softreset failed, will try " |
@@ -2678,7 +2666,7 @@ int ata_drive_probe_reset(struct ata_port *ap, ata_probeinit_fn_t probeinit, | |||
2678 | goto done; | 2666 | goto done; |
2679 | 2667 | ||
2680 | while (1) { | 2668 | while (1) { |
2681 | rc = ata_do_reset(ap, hardreset, postreset, 0, classes); | 2669 | rc = ata_do_reset(ap, hardreset, postreset, classes); |
2682 | if (rc == 0) { | 2670 | if (rc == 0) { |
2683 | if (classes[0] != ATA_DEV_UNKNOWN) | 2671 | if (classes[0] != ATA_DEV_UNKNOWN) |
2684 | goto done; | 2672 | goto done; |
@@ -2699,7 +2687,7 @@ int ata_drive_probe_reset(struct ata_port *ap, ata_probeinit_fn_t probeinit, | |||
2699 | ap->id); | 2687 | ap->id); |
2700 | ssleep(5); | 2688 | ssleep(5); |
2701 | 2689 | ||
2702 | rc = ata_do_reset(ap, softreset, postreset, 0, classes); | 2690 | rc = ata_do_reset(ap, softreset, postreset, classes); |
2703 | } | 2691 | } |
2704 | 2692 | ||
2705 | done: | 2693 | done: |
diff --git a/drivers/scsi/libata.h b/drivers/scsi/libata.h index b18d377588dc..3f8b0a863781 100644 --- a/drivers/scsi/libata.h +++ b/drivers/scsi/libata.h | |||
@@ -56,10 +56,8 @@ extern int ata_set_sata_spd_needed(struct ata_port *ap); | |||
56 | extern int ata_down_xfermask_limit(struct ata_port *ap, struct ata_device *dev, | 56 | extern int ata_down_xfermask_limit(struct ata_port *ap, struct ata_device *dev, |
57 | int force_pio0); | 57 | int force_pio0); |
58 | extern int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev); | 58 | extern int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev); |
59 | extern int ata_do_reset(struct ata_port *ap, | 59 | extern int ata_do_reset(struct ata_port *ap, ata_reset_fn_t reset, |
60 | ata_reset_fn_t reset, | 60 | ata_postreset_fn_t postreset, unsigned int *classes); |
61 | ata_postreset_fn_t postreset, | ||
62 | int verbose, unsigned int *classes); | ||
63 | extern void ata_qc_free(struct ata_queued_cmd *qc); | 61 | extern void ata_qc_free(struct ata_queued_cmd *qc); |
64 | extern void ata_qc_issue(struct ata_queued_cmd *qc); | 62 | extern void ata_qc_issue(struct ata_queued_cmd *qc); |
65 | extern int ata_check_atapi_dma(struct ata_queued_cmd *qc); | 63 | extern int ata_check_atapi_dma(struct ata_queued_cmd *qc); |
diff --git a/drivers/scsi/sata_sil24.c b/drivers/scsi/sata_sil24.c index 9aa7493ea146..26d84e094b1d 100644 --- a/drivers/scsi/sata_sil24.c +++ b/drivers/scsi/sata_sil24.c | |||
@@ -426,8 +426,7 @@ static void sil24_tf_read(struct ata_port *ap, struct ata_taskfile *tf) | |||
426 | *tf = pp->tf; | 426 | *tf = pp->tf; |
427 | } | 427 | } |
428 | 428 | ||
429 | static int sil24_softreset(struct ata_port *ap, int verbose, | 429 | static int sil24_softreset(struct ata_port *ap, unsigned int *class) |
430 | unsigned int *class) | ||
431 | { | 430 | { |
432 | void __iomem *port = (void __iomem *)ap->ioaddr.cmd_addr; | 431 | void __iomem *port = (void __iomem *)ap->ioaddr.cmd_addr; |
433 | struct sil24_port_priv *pp = ap->private_data; | 432 | struct sil24_port_priv *pp = ap->private_data; |
@@ -489,13 +488,12 @@ static int sil24_softreset(struct ata_port *ap, int verbose, | |||
489 | return 0; | 488 | return 0; |
490 | } | 489 | } |
491 | 490 | ||
492 | static int sil24_hardreset(struct ata_port *ap, int verbose, | 491 | static int sil24_hardreset(struct ata_port *ap, unsigned int *class) |
493 | unsigned int *class) | ||
494 | { | 492 | { |
495 | unsigned int dummy_class; | 493 | unsigned int dummy_class; |
496 | 494 | ||
497 | /* sil24 doesn't report device signature after hard reset */ | 495 | /* sil24 doesn't report device signature after hard reset */ |
498 | return sata_std_hardreset(ap, verbose, &dummy_class); | 496 | return sata_std_hardreset(ap, &dummy_class); |
499 | } | 497 | } |
500 | 498 | ||
501 | static int sil24_probe_reset(struct ata_port *ap, unsigned int *classes) | 499 | static int sil24_probe_reset(struct ata_port *ap, unsigned int *classes) |