aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/ide/ide-atapi.c4
-rw-r--r--drivers/ide/ide-tape.c7
2 files changed, 6 insertions, 5 deletions
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
index 0c4f45247d86..d5249dfc5546 100644
--- a/drivers/ide/ide-atapi.c
+++ b/drivers/ide/ide-atapi.c
@@ -31,7 +31,7 @@ ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc,
31 debug_log("Enter %s - interrupt handler\n", __func__); 31 debug_log("Enter %s - interrupt handler\n", __func__);
32 32
33 if (pc->flags & PC_FLAG_TIMEDOUT) { 33 if (pc->flags & PC_FLAG_TIMEDOUT) {
34 if (drive->media == ide_floppy) 34 if (drive->media == ide_floppy || drive->media == ide_tape)
35 drive->pc_callback(drive); 35 drive->pc_callback(drive);
36 else 36 else
37 pc->callback(drive); 37 pc->callback(drive);
@@ -100,7 +100,7 @@ cmd_finished:
100 return ide_stopped; 100 return ide_stopped;
101 } 101 }
102 /* Command finished - Call the callback function */ 102 /* Command finished - Call the callback function */
103 if (drive->media == ide_floppy) 103 if (drive->media == ide_floppy || drive->media == ide_tape)
104 drive->pc_callback(drive); 104 drive->pc_callback(drive);
105 else 105 else
106 pc->callback(drive); 106 pc->callback(drive);
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
index 663671f69f88..38ca7b1b7cf9 100644
--- a/drivers/ide/ide-tape.c
+++ b/drivers/ide/ide-tape.c
@@ -689,7 +689,6 @@ static void idetape_init_pc(struct ide_atapi_pc *pc)
689 pc->buf_size = IDETAPE_PC_BUFFER_SIZE; 689 pc->buf_size = IDETAPE_PC_BUFFER_SIZE;
690 pc->bh = NULL; 690 pc->bh = NULL;
691 pc->b_data = NULL; 691 pc->b_data = NULL;
692 pc->callback = ide_tape_callback;
693} 692}
694 693
695static void idetape_create_request_sense_cmd(struct ide_atapi_pc *pc) 694static void idetape_create_request_sense_cmd(struct ide_atapi_pc *pc)
@@ -886,7 +885,7 @@ static ide_startstop_t idetape_issue_pc(ide_drive_t *drive,
886 pc->error = IDETAPE_ERROR_GENERAL; 885 pc->error = IDETAPE_ERROR_GENERAL;
887 } 886 }
888 tape->failed_pc = NULL; 887 tape->failed_pc = NULL;
889 pc->callback(drive); 888 drive->pc_callback(drive);
890 return ide_stopped; 889 return ide_stopped;
891 } 890 }
892 debug_log(DBG_SENSE, "Retry #%d, cmd = %02X\n", pc->retries, pc->c[0]); 891 debug_log(DBG_SENSE, "Retry #%d, cmd = %02X\n", pc->retries, pc->c[0]);
@@ -948,7 +947,7 @@ static ide_startstop_t idetape_media_access_finished(ide_drive_t *drive)
948 pc->error = IDETAPE_ERROR_GENERAL; 947 pc->error = IDETAPE_ERROR_GENERAL;
949 tape->failed_pc = NULL; 948 tape->failed_pc = NULL;
950 } 949 }
951 pc->callback(drive); 950 drive->pc_callback(drive);
952 return ide_stopped; 951 return ide_stopped;
953} 952}
954 953
@@ -2465,6 +2464,8 @@ static void idetape_setup(ide_drive_t *drive, idetape_tape_t *tape, int minor)
2465 u8 gcw[2]; 2464 u8 gcw[2];
2466 u16 *ctl = (u16 *)&tape->caps[12]; 2465 u16 *ctl = (u16 *)&tape->caps[12];
2467 2466
2467 drive->pc_callback = ide_tape_callback;
2468
2468 spin_lock_init(&tape->lock); 2469 spin_lock_init(&tape->lock);
2469 drive->dsc_overlap = 1; 2470 drive->dsc_overlap = 1;
2470 if (drive->hwif->host_flags & IDE_HFLAG_NO_DSC) { 2471 if (drive->hwif->host_flags & IDE_HFLAG_NO_DSC) {