libata: move ata_altstatus() to pio data xfer functions
Move ata_altstatus() out from ata_hsm_move() to the pio data xfer functions like ata_pio_sectors() and atapi_pio_bytes() where it makes more sense. Signed-off-by: Albert Lee <albertcc@tw.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
@@ -4614,6 +4614,8 @@ static void ata_pio_sectors(struct ata_queued_cmd *qc)
|
|||||||
ata_pio_sector(qc);
|
ata_pio_sector(qc);
|
||||||
} else
|
} else
|
||||||
ata_pio_sector(qc);
|
ata_pio_sector(qc);
|
||||||
|
|
||||||
|
ata_altstatus(qc->ap); /* flush */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -4788,6 +4790,7 @@ static void atapi_pio_bytes(struct ata_queued_cmd *qc)
|
|||||||
VPRINTK("ata%u: xfering %d bytes\n", ap->print_id, bytes);
|
VPRINTK("ata%u: xfering %d bytes\n", ap->print_id, bytes);
|
||||||
|
|
||||||
__atapi_pio_bytes(qc, bytes);
|
__atapi_pio_bytes(qc, bytes);
|
||||||
|
ata_altstatus(ap); /* flush */
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -4959,7 +4962,6 @@ fsm_start:
|
|||||||
*/
|
*/
|
||||||
ap->hsm_task_state = HSM_ST;
|
ap->hsm_task_state = HSM_ST;
|
||||||
ata_pio_sectors(qc);
|
ata_pio_sectors(qc);
|
||||||
ata_altstatus(ap); /* flush */
|
|
||||||
} else
|
} else
|
||||||
/* send CDB */
|
/* send CDB */
|
||||||
atapi_send_cdb(ap, qc);
|
atapi_send_cdb(ap, qc);
|
||||||
@@ -5040,7 +5042,6 @@ fsm_start:
|
|||||||
|
|
||||||
if (!(qc->tf.flags & ATA_TFLAG_WRITE)) {
|
if (!(qc->tf.flags & ATA_TFLAG_WRITE)) {
|
||||||
ata_pio_sectors(qc);
|
ata_pio_sectors(qc);
|
||||||
ata_altstatus(ap);
|
|
||||||
status = ata_wait_idle(ap);
|
status = ata_wait_idle(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5060,13 +5061,11 @@ fsm_start:
|
|||||||
if (ap->hsm_task_state == HSM_ST_LAST &&
|
if (ap->hsm_task_state == HSM_ST_LAST &&
|
||||||
(!(qc->tf.flags & ATA_TFLAG_WRITE))) {
|
(!(qc->tf.flags & ATA_TFLAG_WRITE))) {
|
||||||
/* all data read */
|
/* all data read */
|
||||||
ata_altstatus(ap);
|
|
||||||
status = ata_wait_idle(ap);
|
status = ata_wait_idle(ap);
|
||||||
goto fsm_start;
|
goto fsm_start;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ata_altstatus(ap); /* flush */
|
|
||||||
poll_next = 1;
|
poll_next = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user