diff options
Diffstat (limited to 'drivers/ide')
-rw-r--r-- | drivers/ide/ide-floppy.c | 5 | ||||
-rw-r--r-- | drivers/ide/ide-tape.c | 11 |
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(); |
1218 | out: | 1220 | out: |
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 | ||