aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-15 15:21:57 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-15 15:21:57 -0400
commit9fd13a27c8a35ff1986793cb96aaedb5e75b5368 (patch)
treee6393bb2d3ccfd83f937ddaea2ef63818b8ef2b8
parent6ffb66410dd9f5f383d9265d51ab667333a8296c (diff)
ide-tape: set PC_FLAG_DMA_IN_PROGRESS flag in idetape_transfer_pc()
Set PC_FLAG_DMA_IN_PROGRESS flag in idetape_transfer_pc() instead of idetape_issue_pc() to match the other ATAPI device drivers. Cc: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
-rw-r--r--drivers/ide/ide-tape.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
index e8a5852fa2d4..1ce8b31453c5 100644
--- a/drivers/ide/ide-tape.c
+++ b/drivers/ide/ide-tape.c
@@ -984,8 +984,10 @@ static ide_startstop_t idetape_transfer_pc(ide_drive_t *drive)
984 ide_set_handler(drive, &idetape_pc_intr, IDETAPE_WAIT_CMD, NULL); 984 ide_set_handler(drive, &idetape_pc_intr, IDETAPE_WAIT_CMD, NULL);
985 985
986 /* Begin DMA, if necessary */ 986 /* Begin DMA, if necessary */
987 if (pc->flags & PC_FLAG_DMA_IN_PROGRESS) 987 if (pc->flags & PC_FLAG_DMA_OK) {
988 pc->flags |= PC_FLAG_DMA_IN_PROGRESS;
988 hwif->dma_ops->dma_start(drive); 989 hwif->dma_ops->dma_start(drive);
990 }
989 991
990 /* Send the actual packet */ 992 /* Send the actual packet */
991 hwif->output_data(drive, NULL, pc->c, 12); 993 hwif->output_data(drive, NULL, pc->c, 12);
@@ -1053,11 +1055,11 @@ static ide_startstop_t idetape_issue_pc(ide_drive_t *drive,
1053 if ((pc->flags & PC_FLAG_DMA_OK) && drive->using_dma) 1055 if ((pc->flags & PC_FLAG_DMA_OK) && drive->using_dma)
1054 dma_ok = !hwif->dma_ops->dma_setup(drive); 1056 dma_ok = !hwif->dma_ops->dma_setup(drive);
1055 1057
1058 if (!dma_ok)
1059 pc->flags &= ~PC_FLAG_DMA_OK;
1060
1056 ide_pktcmd_tf_load(drive, IDE_TFLAG_OUT_DEVICE, bcount, dma_ok); 1061 ide_pktcmd_tf_load(drive, IDE_TFLAG_OUT_DEVICE, bcount, dma_ok);
1057 1062
1058 if (dma_ok)
1059 /* Will begin DMA later */
1060 pc->flags |= PC_FLAG_DMA_IN_PROGRESS;
1061 if (test_bit(IDETAPE_FLAG_DRQ_INTERRUPT, &tape->flags)) { 1063 if (test_bit(IDETAPE_FLAG_DRQ_INTERRUPT, &tape->flags)) {
1062 ide_execute_command(drive, WIN_PACKETCMD, &idetape_transfer_pc, 1064 ide_execute_command(drive, WIN_PACKETCMD, &idetape_transfer_pc,
1063 IDETAPE_WAIT_CMD, NULL); 1065 IDETAPE_WAIT_CMD, NULL);