diff options
| -rw-r--r-- | drivers/ata/ahci.c | 6 | ||||
| -rw-r--r-- | drivers/ata/libata-core.c | 4 | ||||
| -rw-r--r-- | drivers/ata/libata-eh.c | 2 | ||||
| -rw-r--r-- | drivers/ata/libata-sff.c | 6 | ||||
| -rw-r--r-- | drivers/ata/pata_bf54x.c | 6 | ||||
| -rw-r--r-- | drivers/ata/pata_scc.c | 6 | ||||
| -rw-r--r-- | drivers/ata/sata_fsl.c | 10 | ||||
| -rw-r--r-- | drivers/ata/sata_sil24.c | 7 |
8 files changed, 15 insertions, 32 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 0de6432ee026..739ba3f222e8 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
| @@ -1273,12 +1273,6 @@ static int ahci_softreset(struct ata_link *link, unsigned int *class, | |||
| 1273 | 1273 | ||
| 1274 | DPRINTK("ENTER\n"); | 1274 | DPRINTK("ENTER\n"); |
| 1275 | 1275 | ||
| 1276 | if (ata_link_offline(link)) { | ||
| 1277 | DPRINTK("PHY reports no device\n"); | ||
| 1278 | *class = ATA_DEV_NONE; | ||
| 1279 | return 0; | ||
| 1280 | } | ||
| 1281 | |||
| 1282 | /* prepare for SRST (AHCI-1.1 10.4.1) */ | 1276 | /* prepare for SRST (AHCI-1.1 10.4.1) */ |
| 1283 | rc = ahci_kick_engine(ap, 1); | 1277 | rc = ahci_kick_engine(ap, 1); |
| 1284 | if (rc && rc != -EOPNOTSUPP) | 1278 | if (rc && rc != -EOPNOTSUPP) |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 3401248180c9..f60988f5e01b 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
| @@ -3541,6 +3541,10 @@ int ata_std_prereset(struct ata_link *link, unsigned long deadline) | |||
| 3541 | "link for reset (errno=%d)\n", rc); | 3541 | "link for reset (errno=%d)\n", rc); |
| 3542 | } | 3542 | } |
| 3543 | 3543 | ||
| 3544 | /* no point in trying softreset on offline link */ | ||
| 3545 | if (ata_link_offline(link)) | ||
| 3546 | ehc->i.action &= ~ATA_EH_SOFTRESET; | ||
| 3547 | |||
| 3544 | return 0; | 3548 | return 0; |
| 3545 | } | 3549 | } |
| 3546 | 3550 | ||
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index 88cdc4938bea..ecbb8e90cb8d 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c | |||
| @@ -2065,7 +2065,7 @@ static int ata_eh_followup_srst_needed(struct ata_link *link, | |||
| 2065 | int rc, int classify, | 2065 | int rc, int classify, |
| 2066 | const unsigned int *classes) | 2066 | const unsigned int *classes) |
| 2067 | { | 2067 | { |
| 2068 | if (link->flags & ATA_LFLAG_NO_SRST) | 2068 | if ((link->flags & ATA_LFLAG_NO_SRST) || ata_link_offline(link)) |
| 2069 | return 0; | 2069 | return 0; |
| 2070 | if (rc == -EAGAIN) { | 2070 | if (rc == -EAGAIN) { |
| 2071 | if (classify) | 2071 | if (classify) |
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 8e6c78ac70f8..15499522e642 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c | |||
| @@ -1889,11 +1889,6 @@ int ata_sff_softreset(struct ata_link *link, unsigned int *classes, | |||
| 1889 | 1889 | ||
| 1890 | DPRINTK("ENTER\n"); | 1890 | DPRINTK("ENTER\n"); |
| 1891 | 1891 | ||
| 1892 | if (ata_link_offline(link)) { | ||
| 1893 | classes[0] = ATA_DEV_NONE; | ||
| 1894 | goto out; | ||
| 1895 | } | ||
| 1896 | |||
| 1897 | /* determine if device 0/1 are present */ | 1892 | /* determine if device 0/1 are present */ |
| 1898 | if (ata_devchk(ap, 0)) | 1893 | if (ata_devchk(ap, 0)) |
| 1899 | devmask |= (1 << 0); | 1894 | devmask |= (1 << 0); |
| @@ -1919,7 +1914,6 @@ int ata_sff_softreset(struct ata_link *link, unsigned int *classes, | |||
| 1919 | classes[1] = ata_sff_dev_classify(&link->device[1], | 1914 | classes[1] = ata_sff_dev_classify(&link->device[1], |
| 1920 | devmask & (1 << 1), &err); | 1915 | devmask & (1 << 1), &err); |
| 1921 | 1916 | ||
| 1922 | out: | ||
| 1923 | DPRINTK("EXIT, classes[0]=%u [1]=%u\n", classes[0], classes[1]); | 1917 | DPRINTK("EXIT, classes[0]=%u [1]=%u\n", classes[0], classes[1]); |
| 1924 | return 0; | 1918 | return 0; |
| 1925 | } | 1919 | } |
diff --git a/drivers/ata/pata_bf54x.c b/drivers/ata/pata_bf54x.c index d98bd7455e6b..0a5ad98635b1 100644 --- a/drivers/ata/pata_bf54x.c +++ b/drivers/ata/pata_bf54x.c | |||
| @@ -1103,11 +1103,6 @@ static int bfin_softreset(struct ata_link *link, unsigned int *classes, | |||
| 1103 | unsigned int devmask = 0, err_mask; | 1103 | unsigned int devmask = 0, err_mask; |
| 1104 | u8 err; | 1104 | u8 err; |
| 1105 | 1105 | ||
| 1106 | if (ata_link_offline(link)) { | ||
| 1107 | classes[0] = ATA_DEV_NONE; | ||
| 1108 | goto out; | ||
| 1109 | } | ||
| 1110 | |||
| 1111 | /* determine if device 0/1 are present */ | 1106 | /* determine if device 0/1 are present */ |
| 1112 | if (bfin_devchk(ap, 0)) | 1107 | if (bfin_devchk(ap, 0)) |
| 1113 | devmask |= (1 << 0); | 1108 | devmask |= (1 << 0); |
| @@ -1132,7 +1127,6 @@ static int bfin_softreset(struct ata_link *link, unsigned int *classes, | |||
| 1132 | classes[1] = ata_sff_dev_classify(&ap->link.device[1], | 1127 | classes[1] = ata_sff_dev_classify(&ap->link.device[1], |
| 1133 | devmask & (1 << 1), &err); | 1128 | devmask & (1 << 1), &err); |
| 1134 | 1129 | ||
| 1135 | out: | ||
| 1136 | return 0; | 1130 | return 0; |
| 1137 | } | 1131 | } |
| 1138 | 1132 | ||
diff --git a/drivers/ata/pata_scc.c b/drivers/ata/pata_scc.c index 7bdea8a4ca7e..e965b251ca24 100644 --- a/drivers/ata/pata_scc.c +++ b/drivers/ata/pata_scc.c | |||
| @@ -615,11 +615,6 @@ static int scc_softreset(struct ata_link *link, unsigned int *classes, | |||
| 615 | 615 | ||
| 616 | DPRINTK("ENTER\n"); | 616 | DPRINTK("ENTER\n"); |
| 617 | 617 | ||
| 618 | if (ata_link_offline(link)) { | ||
| 619 | classes[0] = ATA_DEV_NONE; | ||
| 620 | goto out; | ||
| 621 | } | ||
| 622 | |||
| 623 | /* determine if device 0/1 are present */ | 618 | /* determine if device 0/1 are present */ |
| 624 | if (scc_devchk(ap, 0)) | 619 | if (scc_devchk(ap, 0)) |
| 625 | devmask |= (1 << 0); | 620 | devmask |= (1 << 0); |
| @@ -645,7 +640,6 @@ static int scc_softreset(struct ata_link *link, unsigned int *classes, | |||
| 645 | classes[1] = ata_sff_dev_classify(&ap->link.device[1], | 640 | classes[1] = ata_sff_dev_classify(&ap->link.device[1], |
| 646 | devmask & (1 << 1), &err); | 641 | devmask & (1 << 1), &err); |
| 647 | 642 | ||
| 648 | out: | ||
| 649 | DPRINTK("EXIT, classes[0]=%u [1]=%u\n", classes[0], classes[1]); | 643 | DPRINTK("EXIT, classes[0]=%u [1]=%u\n", classes[0], classes[1]); |
| 650 | return 0; | 644 | return 0; |
| 651 | } | 645 | } |
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c index 9c4e6a6698c2..fddd346b1d57 100644 --- a/drivers/ata/sata_fsl.c +++ b/drivers/ata/sata_fsl.c | |||
| @@ -678,6 +678,15 @@ static unsigned int sata_fsl_dev_classify(struct ata_port *ap) | |||
| 678 | return ata_dev_classify(&tf); | 678 | return ata_dev_classify(&tf); |
| 679 | } | 679 | } |
| 680 | 680 | ||
| 681 | static int sata_fsl_prereset(struct ata_linke *link, unsigned long deadline) | ||
| 682 | { | ||
| 683 | /* FIXME: Never skip softreset, sata_fsl_softreset() is | ||
| 684 | * combination of soft and hard resets. sata_fsl_softreset() | ||
| 685 | * needs to be splitted into soft and hard resets. | ||
| 686 | */ | ||
| 687 | return 0; | ||
| 688 | } | ||
| 689 | |||
| 681 | static int sata_fsl_softreset(struct ata_link *link, unsigned int *class, | 690 | static int sata_fsl_softreset(struct ata_link *link, unsigned int *class, |
| 682 | unsigned long deadline) | 691 | unsigned long deadline) |
| 683 | { | 692 | { |
| @@ -1157,6 +1166,7 @@ static const struct ata_port_operations sata_fsl_ops = { | |||
| 1157 | 1166 | ||
| 1158 | .freeze = sata_fsl_freeze, | 1167 | .freeze = sata_fsl_freeze, |
| 1159 | .thaw = sata_fsl_thaw, | 1168 | .thaw = sata_fsl_thaw, |
| 1169 | .prereset = sata_fsl_prereset, | ||
| 1160 | .softreset = sata_fsl_softreset, | 1170 | .softreset = sata_fsl_softreset, |
| 1161 | .post_internal_cmd = sata_fsl_post_internal_cmd, | 1171 | .post_internal_cmd = sata_fsl_post_internal_cmd, |
| 1162 | 1172 | ||
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index 20757fa6115d..27a110110077 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c | |||
| @@ -663,12 +663,6 @@ static int sil24_softreset(struct ata_link *link, unsigned int *class, | |||
| 663 | 663 | ||
| 664 | DPRINTK("ENTER\n"); | 664 | DPRINTK("ENTER\n"); |
| 665 | 665 | ||
| 666 | if (ata_link_offline(link)) { | ||
| 667 | DPRINTK("PHY reports no device\n"); | ||
| 668 | *class = ATA_DEV_NONE; | ||
| 669 | goto out; | ||
| 670 | } | ||
| 671 | |||
| 672 | /* put the port into known state */ | 666 | /* put the port into known state */ |
| 673 | if (sil24_init_port(ap)) { | 667 | if (sil24_init_port(ap)) { |
| 674 | reason = "port not ready"; | 668 | reason = "port not ready"; |
| @@ -693,7 +687,6 @@ static int sil24_softreset(struct ata_link *link, unsigned int *class, | |||
| 693 | sil24_read_tf(ap, 0, &tf); | 687 | sil24_read_tf(ap, 0, &tf); |
| 694 | *class = ata_dev_classify(&tf); | 688 | *class = ata_dev_classify(&tf); |
| 695 | 689 | ||
| 696 | out: | ||
| 697 | DPRINTK("EXIT, class=%u\n", *class); | 690 | DPRINTK("EXIT, class=%u\n", *class); |
| 698 | return 0; | 691 | return 0; |
| 699 | 692 | ||
