aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide')
-rw-r--r--drivers/ide/ide-floppy.c5
-rw-r--r--drivers/ide/ide-tape.c11
2 files changed, 12 insertions, 4 deletions
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
index e7a1025c03c4..13f650fa2125 100644
--- a/drivers/ide/ide-floppy.c
+++ b/drivers/ide/ide-floppy.c
@@ -619,7 +619,7 @@ static ide_startstop_t idefloppy_issue_pc(ide_drive_t *drive,
619 619
620 ide_pktcmd_tf_load(drive, IDE_TFLAG_OUT_DEVICE, bcount, dma); 620 ide_pktcmd_tf_load(drive, IDE_TFLAG_OUT_DEVICE, bcount, dma);
621 621
622 if (floppy->flags & IDEFLOPPY_FLAG_DRQ_INTERRUPT) { 622 if (pc->flags & PC_FLAG_DRQ_INTERRUPT) {
623 /* Issue the packet command */ 623 /* Issue the packet command */
624 ide_execute_command(drive, WIN_PACKETCMD, 624 ide_execute_command(drive, WIN_PACKETCMD,
625 &idefloppy_transfer_pc1, 625 &idefloppy_transfer_pc1,
@@ -800,6 +800,9 @@ static ide_startstop_t idefloppy_do_request(ide_drive_t *drive,
800 return ide_stopped; 800 return ide_stopped;
801 } 801 }
802 802
803 if (floppy->flags & IDEFLOPPY_FLAG_DRQ_INTERRUPT)
804 pc->flags |= PC_FLAG_DRQ_INTERRUPT;
805
803 if (floppy->flags & IDEFLOPPY_FLAG_ZIP_DRIVE) 806 if (floppy->flags & IDEFLOPPY_FLAG_ZIP_DRIVE)
804 pc->flags |= PC_FLAG_ZIP_DRIVE; 807 pc->flags |= PC_FLAG_ZIP_DRIVE;
805 808
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
index 5adc2c9ae418..cba18a675506 100644
--- a/drivers/ide/ide-tape.c
+++ b/drivers/ide/ide-tape.c
@@ -1020,7 +1020,7 @@ static ide_startstop_t idetape_issue_pc(ide_drive_t *drive,
1020 1020
1021 ide_pktcmd_tf_load(drive, IDE_TFLAG_OUT_DEVICE, bcount, dma_ok); 1021 ide_pktcmd_tf_load(drive, IDE_TFLAG_OUT_DEVICE, bcount, dma_ok);
1022 1022
1023 if (test_bit(IDETAPE_FLAG_DRQ_INTERRUPT, &tape->flags)) { 1023 if (pc->flags & PC_FLAG_DRQ_INTERRUPT) {
1024 ide_execute_command(drive, WIN_PACKETCMD, &idetape_transfer_pc, 1024 ide_execute_command(drive, WIN_PACKETCMD, &idetape_transfer_pc,
1025 IDETAPE_WAIT_CMD, NULL); 1025 IDETAPE_WAIT_CMD, NULL);
1026 return ide_started; 1026 return ide_started;
@@ -1143,8 +1143,10 @@ static ide_startstop_t idetape_do_request(ide_drive_t *drive,
1143 } 1143 }
1144 1144
1145 /* Retry a failed packet command */ 1145 /* Retry a failed packet command */
1146 if (tape->failed_pc && tape->pc->c[0] == REQUEST_SENSE) 1146 if (tape->failed_pc && tape->pc->c[0] == REQUEST_SENSE) {
1147 return idetape_issue_pc(drive, tape->failed_pc); 1147 pc = tape->failed_pc;
1148 goto out;
1149 }
1148 1150
1149 if (postponed_rq != NULL) 1151 if (postponed_rq != NULL)
1150 if (rq != postponed_rq) { 1152 if (rq != postponed_rq) {
@@ -1216,6 +1218,9 @@ static ide_startstop_t idetape_do_request(ide_drive_t *drive,
1216 } 1218 }
1217 BUG(); 1219 BUG();
1218out: 1220out:
1221 if (test_bit(IDETAPE_FLAG_DRQ_INTERRUPT, &tape->flags))
1222 pc->flags |= PC_FLAG_DRQ_INTERRUPT;
1223
1219 return idetape_issue_pc(drive, pc); 1224 return idetape_issue_pc(drive, pc);
1220} 1225}
1221 1226