aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/ata/libahci.c18
-rw-r--r--drivers/ata/libata-core.c21
-rw-r--r--drivers/ata/libata-eh.c2
-rw-r--r--drivers/ata/libata-sff.c12
-rw-r--r--drivers/ata/pata_bf54x.c4
-rw-r--r--drivers/ata/pata_samsung_cf.c2
-rw-r--r--drivers/ata/pata_scc.c4
-rw-r--r--drivers/ata/sata_fsl.c19
-rw-r--r--drivers/ata/sata_inic162x.c2
-rw-r--r--drivers/ata/sata_sil24.c14
-rw-r--r--drivers/ata/sata_via.c2
-rw-r--r--include/linux/libata.h5
12 files changed, 57 insertions, 48 deletions
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
index 437f92597788..524dbe8be163 100644
--- a/drivers/ata/libahci.c
+++ b/drivers/ata/libahci.c
@@ -567,7 +567,7 @@ int ahci_stop_engine(struct ata_port *ap)
567 writel(tmp, port_mmio + PORT_CMD); 567 writel(tmp, port_mmio + PORT_CMD);
568 568
569 /* wait for engine to stop. This could be as long as 500 msec */ 569 /* wait for engine to stop. This could be as long as 500 msec */
570 tmp = ata_wait_register(port_mmio + PORT_CMD, 570 tmp = ata_wait_register(ap, port_mmio + PORT_CMD,
571 PORT_CMD_LIST_ON, PORT_CMD_LIST_ON, 1, 500); 571 PORT_CMD_LIST_ON, PORT_CMD_LIST_ON, 1, 500);
572 if (tmp & PORT_CMD_LIST_ON) 572 if (tmp & PORT_CMD_LIST_ON)
573 return -EIO; 573 return -EIO;
@@ -614,7 +614,7 @@ static int ahci_stop_fis_rx(struct ata_port *ap)
614 writel(tmp, port_mmio + PORT_CMD); 614 writel(tmp, port_mmio + PORT_CMD);
615 615
616 /* wait for completion, spec says 500ms, give it 1000 */ 616 /* wait for completion, spec says 500ms, give it 1000 */
617 tmp = ata_wait_register(port_mmio + PORT_CMD, PORT_CMD_FIS_ON, 617 tmp = ata_wait_register(ap, port_mmio + PORT_CMD, PORT_CMD_FIS_ON,
618 PORT_CMD_FIS_ON, 10, 1000); 618 PORT_CMD_FIS_ON, 10, 1000);
619 if (tmp & PORT_CMD_FIS_ON) 619 if (tmp & PORT_CMD_FIS_ON)
620 return -EBUSY; 620 return -EBUSY;
@@ -671,7 +671,7 @@ static int ahci_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
671 readl(port_mmio + PORT_CMD); 671 readl(port_mmio + PORT_CMD);
672 672
673 /* wait 10ms to be sure we've come out of LPM state */ 673 /* wait 10ms to be sure we've come out of LPM state */
674 msleep(10); 674 ata_msleep(ap, 10);
675 } else { 675 } else {
676 cmd |= PORT_CMD_ALPE; 676 cmd |= PORT_CMD_ALPE;
677 if (policy == ATA_LPM_MIN_POWER) 677 if (policy == ATA_LPM_MIN_POWER)
@@ -740,7 +740,7 @@ static void ahci_start_port(struct ata_port *ap)
740 emp->led_state, 740 emp->led_state,
741 4); 741 4);
742 if (rc == -EBUSY) 742 if (rc == -EBUSY)
743 msleep(1); 743 ata_msleep(ap, 1);
744 else 744 else
745 break; 745 break;
746 } 746 }
@@ -799,7 +799,7 @@ int ahci_reset_controller(struct ata_host *host)
799 * reset must complete within 1 second, or 799 * reset must complete within 1 second, or
800 * the hardware should be considered fried. 800 * the hardware should be considered fried.
801 */ 801 */
802 tmp = ata_wait_register(mmio + HOST_CTL, HOST_RESET, 802 tmp = ata_wait_register(NULL, mmio + HOST_CTL, HOST_RESET,
803 HOST_RESET, 10, 1000); 803 HOST_RESET, 10, 1000);
804 804
805 if (tmp & HOST_RESET) { 805 if (tmp & HOST_RESET) {
@@ -1179,7 +1179,7 @@ int ahci_kick_engine(struct ata_port *ap)
1179 writel(tmp, port_mmio + PORT_CMD); 1179 writel(tmp, port_mmio + PORT_CMD);
1180 1180
1181 rc = 0; 1181 rc = 0;
1182 tmp = ata_wait_register(port_mmio + PORT_CMD, 1182 tmp = ata_wait_register(ap, port_mmio + PORT_CMD,
1183 PORT_CMD_CLO, PORT_CMD_CLO, 1, 500); 1183 PORT_CMD_CLO, PORT_CMD_CLO, 1, 500);
1184 if (tmp & PORT_CMD_CLO) 1184 if (tmp & PORT_CMD_CLO)
1185 rc = -EIO; 1185 rc = -EIO;
@@ -1209,8 +1209,8 @@ static int ahci_exec_polled_cmd(struct ata_port *ap, int pmp,
1209 writel(1, port_mmio + PORT_CMD_ISSUE); 1209 writel(1, port_mmio + PORT_CMD_ISSUE);
1210 1210
1211 if (timeout_msec) { 1211 if (timeout_msec) {
1212 tmp = ata_wait_register(port_mmio + PORT_CMD_ISSUE, 0x1, 0x1, 1212 tmp = ata_wait_register(ap, port_mmio + PORT_CMD_ISSUE,
1213 1, timeout_msec); 1213 0x1, 0x1, 1, timeout_msec);
1214 if (tmp & 0x1) { 1214 if (tmp & 0x1) {
1215 ahci_kick_engine(ap); 1215 ahci_kick_engine(ap);
1216 return -EBUSY; 1216 return -EBUSY;
@@ -1257,7 +1257,7 @@ int ahci_do_softreset(struct ata_link *link, unsigned int *class,
1257 } 1257 }
1258 1258
1259 /* spec says at least 5us, but be generous and sleep for 1ms */ 1259 /* spec says at least 5us, but be generous and sleep for 1ms */
1260 msleep(1); 1260 ata_msleep(ap, 1);
1261 1261
1262 /* issue the second D2H Register FIS */ 1262 /* issue the second D2H Register FIS */
1263 tf.ctl &= ~ATA_SRST; 1263 tf.ctl &= ~ATA_SRST;
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 7c5538b9fa3b..42d9ce29f50d 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3404,7 +3404,7 @@ int ata_wait_ready(struct ata_link *link, unsigned long deadline,
3404 warned = 1; 3404 warned = 1;
3405 } 3405 }
3406 3406
3407 msleep(50); 3407 ata_msleep(link->ap, 50);
3408 } 3408 }
3409} 3409}
3410 3410
@@ -3425,7 +3425,7 @@ int ata_wait_ready(struct ata_link *link, unsigned long deadline,
3425int ata_wait_after_reset(struct ata_link *link, unsigned long deadline, 3425int ata_wait_after_reset(struct ata_link *link, unsigned long deadline,
3426 int (*check_ready)(struct ata_link *link)) 3426 int (*check_ready)(struct ata_link *link))
3427{ 3427{
3428 msleep(ATA_WAIT_AFTER_RESET); 3428 ata_msleep(link->ap, ATA_WAIT_AFTER_RESET);
3429 3429
3430 return ata_wait_ready(link, deadline, check_ready); 3430 return ata_wait_ready(link, deadline, check_ready);
3431} 3431}
@@ -3473,7 +3473,7 @@ int sata_link_debounce(struct ata_link *link, const unsigned long *params,
3473 last_jiffies = jiffies; 3473 last_jiffies = jiffies;
3474 3474
3475 while (1) { 3475 while (1) {
3476 msleep(interval); 3476 ata_msleep(link->ap, interval);
3477 if ((rc = sata_scr_read(link, SCR_STATUS, &cur))) 3477 if ((rc = sata_scr_read(link, SCR_STATUS, &cur)))
3478 return rc; 3478 return rc;
3479 cur &= 0xf; 3479 cur &= 0xf;
@@ -3538,7 +3538,7 @@ int sata_link_resume(struct ata_link *link, const unsigned long *params,
3538 * immediately after resuming. Delay 200ms before 3538 * immediately after resuming. Delay 200ms before
3539 * debouncing. 3539 * debouncing.
3540 */ 3540 */
3541 msleep(200); 3541 ata_msleep(link->ap, 200);
3542 3542
3543 /* is SControl restored correctly? */ 3543 /* is SControl restored correctly? */
3544 if ((rc = sata_scr_read(link, SCR_CONTROL, &scontrol))) 3544 if ((rc = sata_scr_read(link, SCR_CONTROL, &scontrol)))
@@ -3742,7 +3742,7 @@ int sata_link_hardreset(struct ata_link *link, const unsigned long *timing,
3742 /* Couldn't find anything in SATA I/II specs, but AHCI-1.1 3742 /* Couldn't find anything in SATA I/II specs, but AHCI-1.1
3743 * 10.4.2 says at least 1 ms. 3743 * 10.4.2 says at least 1 ms.
3744 */ 3744 */
3745 msleep(1); 3745 ata_msleep(link->ap, 1);
3746 3746
3747 /* bring link back */ 3747 /* bring link back */
3748 rc = sata_link_resume(link, timing, deadline); 3748 rc = sata_link_resume(link, timing, deadline);
@@ -6483,8 +6483,14 @@ int ata_ratelimit(void)
6483 return __ratelimit(&ratelimit); 6483 return __ratelimit(&ratelimit);
6484} 6484}
6485 6485
6486void ata_msleep(struct ata_port *ap, unsigned int msecs)
6487{
6488 msleep(msecs);
6489}
6490
6486/** 6491/**
6487 * ata_wait_register - wait until register value changes 6492 * ata_wait_register - wait until register value changes
6493 * @ap: ATA port to wait register for, can be NULL
6488 * @reg: IO-mapped register 6494 * @reg: IO-mapped register
6489 * @mask: Mask to apply to read register value 6495 * @mask: Mask to apply to read register value
6490 * @val: Wait condition 6496 * @val: Wait condition
@@ -6506,7 +6512,7 @@ int ata_ratelimit(void)
6506 * RETURNS: 6512 * RETURNS:
6507 * The final register value. 6513 * The final register value.
6508 */ 6514 */
6509u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val, 6515u32 ata_wait_register(struct ata_port *ap, void __iomem *reg, u32 mask, u32 val,
6510 unsigned long interval, unsigned long timeout) 6516 unsigned long interval, unsigned long timeout)
6511{ 6517{
6512 unsigned long deadline; 6518 unsigned long deadline;
@@ -6521,7 +6527,7 @@ u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val,
6521 deadline = ata_deadline(jiffies, timeout); 6527 deadline = ata_deadline(jiffies, timeout);
6522 6528
6523 while ((tmp & mask) == val && time_before(jiffies, deadline)) { 6529 while ((tmp & mask) == val && time_before(jiffies, deadline)) {
6524 msleep(interval); 6530 ata_msleep(ap, interval);
6525 tmp = ioread32(reg); 6531 tmp = ioread32(reg);
6526 } 6532 }
6527 6533
@@ -6605,6 +6611,7 @@ EXPORT_SYMBOL_GPL(ata_std_postreset);
6605EXPORT_SYMBOL_GPL(ata_dev_classify); 6611EXPORT_SYMBOL_GPL(ata_dev_classify);
6606EXPORT_SYMBOL_GPL(ata_dev_pair); 6612EXPORT_SYMBOL_GPL(ata_dev_pair);
6607EXPORT_SYMBOL_GPL(ata_ratelimit); 6613EXPORT_SYMBOL_GPL(ata_ratelimit);
6614EXPORT_SYMBOL_GPL(ata_msleep);
6608EXPORT_SYMBOL_GPL(ata_wait_register); 6615EXPORT_SYMBOL_GPL(ata_wait_register);
6609EXPORT_SYMBOL_GPL(ata_scsi_queuecmd); 6616EXPORT_SYMBOL_GPL(ata_scsi_queuecmd);
6610EXPORT_SYMBOL_GPL(ata_scsi_slave_config); 6617EXPORT_SYMBOL_GPL(ata_scsi_slave_config);
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 06a4db1ec10e..6780f4d16e81 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -779,7 +779,7 @@ void ata_port_wait_eh(struct ata_port *ap)
779 779
780 /* make sure SCSI EH is complete */ 780 /* make sure SCSI EH is complete */
781 if (scsi_host_in_recovery(ap->scsi_host)) { 781 if (scsi_host_in_recovery(ap->scsi_host)) {
782 msleep(10); 782 ata_msleep(ap, 10);
783 goto retry; 783 goto retry;
784 } 784 }
785} 785}
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 193f242eec05..14d18bf81255 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -222,7 +222,7 @@ int ata_sff_busy_sleep(struct ata_port *ap,
222 timeout = ata_deadline(timer_start, tmout_pat); 222 timeout = ata_deadline(timer_start, tmout_pat);
223 while (status != 0xff && (status & ATA_BUSY) && 223 while (status != 0xff && (status & ATA_BUSY) &&
224 time_before(jiffies, timeout)) { 224 time_before(jiffies, timeout)) {
225 msleep(50); 225 ata_msleep(ap, 50);
226 status = ata_sff_busy_wait(ap, ATA_BUSY, 3); 226 status = ata_sff_busy_wait(ap, ATA_BUSY, 3);
227 } 227 }
228 228
@@ -234,7 +234,7 @@ int ata_sff_busy_sleep(struct ata_port *ap,
234 timeout = ata_deadline(timer_start, tmout); 234 timeout = ata_deadline(timer_start, tmout);
235 while (status != 0xff && (status & ATA_BUSY) && 235 while (status != 0xff && (status & ATA_BUSY) &&
236 time_before(jiffies, timeout)) { 236 time_before(jiffies, timeout)) {
237 msleep(50); 237 ata_msleep(ap, 50);
238 status = ap->ops->sff_check_status(ap); 238 status = ap->ops->sff_check_status(ap);
239 } 239 }
240 240
@@ -360,7 +360,7 @@ static void ata_dev_select(struct ata_port *ap, unsigned int device,
360 360
361 if (wait) { 361 if (wait) {
362 if (can_sleep && ap->link.device[device].class == ATA_DEV_ATAPI) 362 if (can_sleep && ap->link.device[device].class == ATA_DEV_ATAPI)
363 msleep(150); 363 ata_msleep(ap, 150);
364 ata_wait_idle(ap); 364 ata_wait_idle(ap);
365 } 365 }
366} 366}
@@ -1356,7 +1356,7 @@ fsm_start:
1356 */ 1356 */
1357 status = ata_sff_busy_wait(ap, ATA_BUSY, 5); 1357 status = ata_sff_busy_wait(ap, ATA_BUSY, 5);
1358 if (status & ATA_BUSY) { 1358 if (status & ATA_BUSY) {
1359 msleep(2); 1359 ata_msleep(ap, 2);
1360 status = ata_sff_busy_wait(ap, ATA_BUSY, 10); 1360 status = ata_sff_busy_wait(ap, ATA_BUSY, 10);
1361 if (status & ATA_BUSY) { 1361 if (status & ATA_BUSY) {
1362 ata_sff_queue_pio_task(link, ATA_SHORT_PAUSE); 1362 ata_sff_queue_pio_task(link, ATA_SHORT_PAUSE);
@@ -1937,7 +1937,7 @@ int ata_sff_wait_after_reset(struct ata_link *link, unsigned int devmask,
1937 unsigned int dev1 = devmask & (1 << 1); 1937 unsigned int dev1 = devmask & (1 << 1);
1938 int rc, ret = 0; 1938 int rc, ret = 0;
1939 1939
1940 msleep(ATA_WAIT_AFTER_RESET); 1940 ata_msleep(ap, ATA_WAIT_AFTER_RESET);
1941 1941
1942 /* always check readiness of the master device */ 1942 /* always check readiness of the master device */
1943 rc = ata_sff_wait_ready(link, deadline); 1943 rc = ata_sff_wait_ready(link, deadline);
@@ -1966,7 +1966,7 @@ int ata_sff_wait_after_reset(struct ata_link *link, unsigned int devmask,
1966 lbal = ioread8(ioaddr->lbal_addr); 1966 lbal = ioread8(ioaddr->lbal_addr);
1967 if ((nsect == 1) && (lbal == 1)) 1967 if ((nsect == 1) && (lbal == 1))
1968 break; 1968 break;
1969 msleep(50); /* give drive a breather */ 1969 ata_msleep(ap, 50); /* give drive a breather */
1970 } 1970 }
1971 1971
1972 rc = ata_sff_wait_ready(link, deadline); 1972 rc = ata_sff_wait_ready(link, deadline);
diff --git a/drivers/ata/pata_bf54x.c b/drivers/ata/pata_bf54x.c
index 9cae65de750e..e1423cd2531f 100644
--- a/drivers/ata/pata_bf54x.c
+++ b/drivers/ata/pata_bf54x.c
@@ -1046,7 +1046,7 @@ static void bfin_bus_post_reset(struct ata_port *ap, unsigned int devmask)
1046 dev1 = 0; 1046 dev1 = 0;
1047 break; 1047 break;
1048 } 1048 }
1049 msleep(50); /* give drive a breather */ 1049 ata_msleep(ap, 50); /* give drive a breather */
1050 } 1050 }
1051 if (dev1) 1051 if (dev1)
1052 ata_sff_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT); 1052 ata_sff_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT);
@@ -1087,7 +1087,7 @@ static unsigned int bfin_bus_softreset(struct ata_port *ap,
1087 * 1087 *
1088 * Old drivers/ide uses the 2mS rule and then waits for ready 1088 * Old drivers/ide uses the 2mS rule and then waits for ready
1089 */ 1089 */
1090 msleep(150); 1090 ata_msleep(ap, 150);
1091 1091
1092 /* Before we perform post reset processing we want to see if 1092 /* Before we perform post reset processing we want to see if
1093 * the bus shows 0xFF because the odd clown forgets the D7 1093 * the bus shows 0xFF because the odd clown forgets the D7
diff --git a/drivers/ata/pata_samsung_cf.c b/drivers/ata/pata_samsung_cf.c
index 6f9cfb24b751..8a51d673e5b2 100644
--- a/drivers/ata/pata_samsung_cf.c
+++ b/drivers/ata/pata_samsung_cf.c
@@ -322,7 +322,7 @@ static int pata_s3c_wait_after_reset(struct ata_link *link,
322{ 322{
323 int rc; 323 int rc;
324 324
325 msleep(ATA_WAIT_AFTER_RESET); 325 ata_msleep(link->ap, ATA_WAIT_AFTER_RESET);
326 326
327 /* always check readiness of the master device */ 327 /* always check readiness of the master device */
328 rc = ata_sff_wait_ready(link, deadline); 328 rc = ata_sff_wait_ready(link, deadline);
diff --git a/drivers/ata/pata_scc.c b/drivers/ata/pata_scc.c
index fe36966f7e34..093715c3273a 100644
--- a/drivers/ata/pata_scc.c
+++ b/drivers/ata/pata_scc.c
@@ -530,7 +530,7 @@ static int scc_wait_after_reset(struct ata_link *link, unsigned int devmask,
530 * 530 *
531 * Old drivers/ide uses the 2mS rule and then waits for ready. 531 * Old drivers/ide uses the 2mS rule and then waits for ready.
532 */ 532 */
533 msleep(150); 533 ata_msleep(ap, 150);
534 534
535 /* always check readiness of the master device */ 535 /* always check readiness of the master device */
536 rc = ata_sff_wait_ready(link, deadline); 536 rc = ata_sff_wait_ready(link, deadline);
@@ -559,7 +559,7 @@ static int scc_wait_after_reset(struct ata_link *link, unsigned int devmask,
559 lbal = in_be32(ioaddr->lbal_addr); 559 lbal = in_be32(ioaddr->lbal_addr);
560 if ((nsect == 1) && (lbal == 1)) 560 if ((nsect == 1) && (lbal == 1))
561 break; 561 break;
562 msleep(50); /* give drive a breather */ 562 ata_msleep(ap, 50); /* give drive a breather */
563 } 563 }
564 564
565 rc = ata_sff_wait_ready(link, deadline); 565 rc = ata_sff_wait_ready(link, deadline);
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
index 1440dc0af242..b0214d00d50b 100644
--- a/drivers/ata/sata_fsl.c
+++ b/drivers/ata/sata_fsl.c
@@ -678,7 +678,7 @@ static void sata_fsl_port_stop(struct ata_port *ap)
678 iowrite32(temp, hcr_base + HCONTROL); 678 iowrite32(temp, hcr_base + HCONTROL);
679 679
680 /* Poll for controller to go offline - should happen immediately */ 680 /* Poll for controller to go offline - should happen immediately */
681 ata_wait_register(hcr_base + HSTATUS, ONLINE, ONLINE, 1, 1); 681 ata_wait_register(ap, hcr_base + HSTATUS, ONLINE, ONLINE, 1, 1);
682 682
683 ap->private_data = NULL; 683 ap->private_data = NULL;
684 dma_free_coherent(dev, SATA_FSL_PORT_PRIV_DMA_SZ, 684 dma_free_coherent(dev, SATA_FSL_PORT_PRIV_DMA_SZ,
@@ -729,7 +729,8 @@ try_offline_again:
729 iowrite32(temp, hcr_base + HCONTROL); 729 iowrite32(temp, hcr_base + HCONTROL);
730 730
731 /* Poll for controller to go offline */ 731 /* Poll for controller to go offline */
732 temp = ata_wait_register(hcr_base + HSTATUS, ONLINE, ONLINE, 1, 500); 732 temp = ata_wait_register(ap, hcr_base + HSTATUS, ONLINE, ONLINE,
733 1, 500);
733 734
734 if (temp & ONLINE) { 735 if (temp & ONLINE) {
735 ata_port_printk(ap, KERN_ERR, 736 ata_port_printk(ap, KERN_ERR,
@@ -752,7 +753,7 @@ try_offline_again:
752 /* 753 /*
753 * PHY reset should remain asserted for atleast 1ms 754 * PHY reset should remain asserted for atleast 1ms
754 */ 755 */
755 msleep(1); 756 ata_msleep(ap, 1);
756 757
757 /* 758 /*
758 * Now, bring the host controller online again, this can take time 759 * Now, bring the host controller online again, this can take time
@@ -766,7 +767,7 @@ try_offline_again:
766 temp |= HCONTROL_PMP_ATTACHED; 767 temp |= HCONTROL_PMP_ATTACHED;
767 iowrite32(temp, hcr_base + HCONTROL); 768 iowrite32(temp, hcr_base + HCONTROL);
768 769
769 temp = ata_wait_register(hcr_base + HSTATUS, ONLINE, 0, 1, 500); 770 temp = ata_wait_register(ap, hcr_base + HSTATUS, ONLINE, 0, 1, 500);
770 771
771 if (!(temp & ONLINE)) { 772 if (!(temp & ONLINE)) {
772 ata_port_printk(ap, KERN_ERR, 773 ata_port_printk(ap, KERN_ERR,
@@ -784,7 +785,7 @@ try_offline_again:
784 * presence 785 * presence
785 */ 786 */
786 787
787 temp = ata_wait_register(hcr_base + HSTATUS, 0xFF, 0, 1, 500); 788 temp = ata_wait_register(ap, hcr_base + HSTATUS, 0xFF, 0, 1, 500);
788 if ((!(temp & 0x10)) || ata_link_offline(link)) { 789 if ((!(temp & 0x10)) || ata_link_offline(link)) {
789 ata_port_printk(ap, KERN_WARNING, 790 ata_port_printk(ap, KERN_WARNING,
790 "No Device OR PHYRDY change,Hstatus = 0x%x\n", 791 "No Device OR PHYRDY change,Hstatus = 0x%x\n",
@@ -797,7 +798,7 @@ try_offline_again:
797 * Wait for the first D2H from device,i.e,signature update notification 798 * Wait for the first D2H from device,i.e,signature update notification
798 */ 799 */
799 start_jiffies = jiffies; 800 start_jiffies = jiffies;
800 temp = ata_wait_register(hcr_base + HSTATUS, 0xFF, 0x10, 801 temp = ata_wait_register(ap, hcr_base + HSTATUS, 0xFF, 0x10,
801 500, jiffies_to_msecs(deadline - start_jiffies)); 802 500, jiffies_to_msecs(deadline - start_jiffies));
802 803
803 if ((temp & 0xFF) != 0x18) { 804 if ((temp & 0xFF) != 0x18) {
@@ -880,7 +881,7 @@ static int sata_fsl_softreset(struct ata_link *link, unsigned int *class,
880 iowrite32(pmp, CQPMP + hcr_base); 881 iowrite32(pmp, CQPMP + hcr_base);
881 iowrite32(1, CQ + hcr_base); 882 iowrite32(1, CQ + hcr_base);
882 883
883 temp = ata_wait_register(CQ + hcr_base, 0x1, 0x1, 1, 5000); 884 temp = ata_wait_register(ap, CQ + hcr_base, 0x1, 0x1, 1, 5000);
884 if (temp & 0x1) { 885 if (temp & 0x1) {
885 ata_port_printk(ap, KERN_WARNING, "ATA_SRST issue failed\n"); 886 ata_port_printk(ap, KERN_WARNING, "ATA_SRST issue failed\n");
886 887
@@ -896,7 +897,7 @@ static int sata_fsl_softreset(struct ata_link *link, unsigned int *class,
896 goto err; 897 goto err;
897 } 898 }
898 899
899 msleep(1); 900 ata_msleep(ap, 1);
900 901
901 /* 902 /*
902 * SATA device enters reset state after receving a Control register 903 * SATA device enters reset state after receving a Control register
@@ -915,7 +916,7 @@ static int sata_fsl_softreset(struct ata_link *link, unsigned int *class,
915 if (pmp != SATA_PMP_CTRL_PORT) 916 if (pmp != SATA_PMP_CTRL_PORT)
916 iowrite32(pmp, CQPMP + hcr_base); 917 iowrite32(pmp, CQPMP + hcr_base);
917 iowrite32(1, CQ + hcr_base); 918 iowrite32(1, CQ + hcr_base);
918 msleep(150); /* ?? */ 919 ata_msleep(ap, 150); /* ?? */
919 920
920 /* 921 /*
921 * The above command would have signalled an interrupt on command 922 * The above command would have signalled an interrupt on command
diff --git a/drivers/ata/sata_inic162x.c b/drivers/ata/sata_inic162x.c
index a36149ebf4a2..83a44471b189 100644
--- a/drivers/ata/sata_inic162x.c
+++ b/drivers/ata/sata_inic162x.c
@@ -614,7 +614,7 @@ static int inic_hardreset(struct ata_link *link, unsigned int *class,
614 614
615 writew(IDMA_CTL_RST_ATA, idma_ctl); 615 writew(IDMA_CTL_RST_ATA, idma_ctl);
616 readw(idma_ctl); /* flush */ 616 readw(idma_ctl); /* flush */
617 msleep(1); 617 ata_msleep(ap, 1);
618 writew(0, idma_ctl); 618 writew(0, idma_ctl);
619 619
620 rc = sata_link_resume(link, timing, deadline); 620 rc = sata_link_resume(link, timing, deadline);
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
index be7726d7686d..af41c6fd1254 100644
--- a/drivers/ata/sata_sil24.c
+++ b/drivers/ata/sata_sil24.c
@@ -589,9 +589,9 @@ static int sil24_init_port(struct ata_port *ap)
589 sil24_clear_pmp(ap); 589 sil24_clear_pmp(ap);
590 590
591 writel(PORT_CS_INIT, port + PORT_CTRL_STAT); 591 writel(PORT_CS_INIT, port + PORT_CTRL_STAT);
592 ata_wait_register(port + PORT_CTRL_STAT, 592 ata_wait_register(ap, port + PORT_CTRL_STAT,
593 PORT_CS_INIT, PORT_CS_INIT, 10, 100); 593 PORT_CS_INIT, PORT_CS_INIT, 10, 100);
594 tmp = ata_wait_register(port + PORT_CTRL_STAT, 594 tmp = ata_wait_register(ap, port + PORT_CTRL_STAT,
595 PORT_CS_RDY, 0, 10, 100); 595 PORT_CS_RDY, 0, 10, 100);
596 596
597 if ((tmp & (PORT_CS_INIT | PORT_CS_RDY)) != PORT_CS_RDY) { 597 if ((tmp & (PORT_CS_INIT | PORT_CS_RDY)) != PORT_CS_RDY) {
@@ -631,7 +631,7 @@ static int sil24_exec_polled_cmd(struct ata_port *ap, int pmp,
631 writel((u64)paddr >> 32, port + PORT_CMD_ACTIVATE + 4); 631 writel((u64)paddr >> 32, port + PORT_CMD_ACTIVATE + 4);
632 632
633 irq_mask = (PORT_IRQ_COMPLETE | PORT_IRQ_ERROR) << PORT_IRQ_RAW_SHIFT; 633 irq_mask = (PORT_IRQ_COMPLETE | PORT_IRQ_ERROR) << PORT_IRQ_RAW_SHIFT;
634 irq_stat = ata_wait_register(port + PORT_IRQ_STAT, irq_mask, 0x0, 634 irq_stat = ata_wait_register(ap, port + PORT_IRQ_STAT, irq_mask, 0x0,
635 10, timeout_msec); 635 10, timeout_msec);
636 636
637 writel(irq_mask, port + PORT_IRQ_STAT); /* clear IRQs */ 637 writel(irq_mask, port + PORT_IRQ_STAT); /* clear IRQs */
@@ -719,9 +719,9 @@ static int sil24_hardreset(struct ata_link *link, unsigned int *class,
719 "state, performing PORT_RST\n"); 719 "state, performing PORT_RST\n");
720 720
721 writel(PORT_CS_PORT_RST, port + PORT_CTRL_STAT); 721 writel(PORT_CS_PORT_RST, port + PORT_CTRL_STAT);
722 msleep(10); 722 ata_msleep(ap, 10);
723 writel(PORT_CS_PORT_RST, port + PORT_CTRL_CLR); 723 writel(PORT_CS_PORT_RST, port + PORT_CTRL_CLR);
724 ata_wait_register(port + PORT_CTRL_STAT, PORT_CS_RDY, 0, 724 ata_wait_register(ap, port + PORT_CTRL_STAT, PORT_CS_RDY, 0,
725 10, 5000); 725 10, 5000);
726 726
727 /* restore port configuration */ 727 /* restore port configuration */
@@ -740,7 +740,7 @@ static int sil24_hardreset(struct ata_link *link, unsigned int *class,
740 tout_msec = 5000; 740 tout_msec = 5000;
741 741
742 writel(PORT_CS_DEV_RST, port + PORT_CTRL_STAT); 742 writel(PORT_CS_DEV_RST, port + PORT_CTRL_STAT);
743 tmp = ata_wait_register(port + PORT_CTRL_STAT, 743 tmp = ata_wait_register(ap, port + PORT_CTRL_STAT,
744 PORT_CS_DEV_RST, PORT_CS_DEV_RST, 10, 744 PORT_CS_DEV_RST, PORT_CS_DEV_RST, 10,
745 tout_msec); 745 tout_msec);
746 746
@@ -1253,7 +1253,7 @@ static void sil24_init_controller(struct ata_host *host)
1253 tmp = readl(port + PORT_CTRL_STAT); 1253 tmp = readl(port + PORT_CTRL_STAT);
1254 if (tmp & PORT_CS_PORT_RST) { 1254 if (tmp & PORT_CS_PORT_RST) {
1255 writel(PORT_CS_PORT_RST, port + PORT_CTRL_CLR); 1255 writel(PORT_CS_PORT_RST, port + PORT_CTRL_CLR);
1256 tmp = ata_wait_register(port + PORT_CTRL_STAT, 1256 tmp = ata_wait_register(NULL, port + PORT_CTRL_STAT,
1257 PORT_CS_PORT_RST, 1257 PORT_CS_PORT_RST,
1258 PORT_CS_PORT_RST, 10, 100); 1258 PORT_CS_PORT_RST, 10, 100);
1259 if (tmp & PORT_CS_PORT_RST) 1259 if (tmp & PORT_CS_PORT_RST)
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
index 4730c42a5ee5..c21589986c69 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -349,7 +349,7 @@ static int vt6420_prereset(struct ata_link *link, unsigned long deadline)
349 349
350 /* wait for phy to become ready, if necessary */ 350 /* wait for phy to become ready, if necessary */
351 do { 351 do {
352 msleep(200); 352 ata_msleep(link->ap, 200);
353 svia_scr_read(link, SCR_STATUS, &sstatus); 353 svia_scr_read(link, SCR_STATUS, &sstatus);
354 if ((sstatus & 0xf) != 1) 354 if ((sstatus & 0xf) != 1)
355 break; 355 break;
diff --git a/include/linux/libata.h b/include/linux/libata.h
index bc4ee218b185..2fbd22bd68ce 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -1004,8 +1004,9 @@ extern int ata_host_suspend(struct ata_host *host, pm_message_t mesg);
1004extern void ata_host_resume(struct ata_host *host); 1004extern void ata_host_resume(struct ata_host *host);
1005#endif 1005#endif
1006extern int ata_ratelimit(void); 1006extern int ata_ratelimit(void);
1007extern u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val, 1007extern void ata_msleep(struct ata_port *ap, unsigned int msecs);
1008 unsigned long interval, unsigned long timeout); 1008extern u32 ata_wait_register(struct ata_port *ap, void __iomem *reg, u32 mask,
1009 u32 val, unsigned long interval, unsigned long timeout);
1009extern int atapi_cmd_type(u8 opcode); 1010extern int atapi_cmd_type(u8 opcode);
1010extern void ata_tf_to_fis(const struct ata_taskfile *tf, 1011extern void ata_tf_to_fis(const struct ata_taskfile *tf,
1011 u8 pmp, int is_cmd, u8 *fis); 1012 u8 pmp, int is_cmd, u8 *fis);