From a223523034652fc3c58ea0a0197a6b4add296e8f Mon Sep 17 00:00:00 2001 From: Borislav Petkov Date: Wed, 23 Jul 2008 19:55:59 +0200 Subject: [PATCH] --- yaml --- r: 105030 b: refs/heads/master c: 776bb0270ea72c40f95347dcac868c9f602dcb3e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/ide/ide-atapi.c | 4 ++-- trunk/drivers/ide/ide-tape.c | 7 ++++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index e7a376888c43..ad0c9e0630aa 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2207fa5af1507ea018fc95e777276edb1ca5601a +refs/heads/master: 776bb0270ea72c40f95347dcac868c9f602dcb3e diff --git a/trunk/drivers/ide/ide-atapi.c b/trunk/drivers/ide/ide-atapi.c index 0c4f45247d86..d5249dfc5546 100644 --- a/trunk/drivers/ide/ide-atapi.c +++ b/trunk/drivers/ide/ide-atapi.c @@ -31,7 +31,7 @@ ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc, debug_log("Enter %s - interrupt handler\n", __func__); if (pc->flags & PC_FLAG_TIMEDOUT) { - if (drive->media == ide_floppy) + if (drive->media == ide_floppy || drive->media == ide_tape) drive->pc_callback(drive); else pc->callback(drive); @@ -100,7 +100,7 @@ ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc, return ide_stopped; } /* Command finished - Call the callback function */ - if (drive->media == ide_floppy) + if (drive->media == ide_floppy || drive->media == ide_tape) drive->pc_callback(drive); else pc->callback(drive); diff --git a/trunk/drivers/ide/ide-tape.c b/trunk/drivers/ide/ide-tape.c index 663671f69f88..38ca7b1b7cf9 100644 --- a/trunk/drivers/ide/ide-tape.c +++ b/trunk/drivers/ide/ide-tape.c @@ -689,7 +689,6 @@ static void idetape_init_pc(struct ide_atapi_pc *pc) pc->buf_size = IDETAPE_PC_BUFFER_SIZE; pc->bh = NULL; pc->b_data = NULL; - pc->callback = ide_tape_callback; } static 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, pc->error = IDETAPE_ERROR_GENERAL; } tape->failed_pc = NULL; - pc->callback(drive); + drive->pc_callback(drive); return ide_stopped; } 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) pc->error = IDETAPE_ERROR_GENERAL; tape->failed_pc = NULL; } - pc->callback(drive); + drive->pc_callback(drive); return ide_stopped; } @@ -2465,6 +2464,8 @@ static void idetape_setup(ide_drive_t *drive, idetape_tape_t *tape, int minor) u8 gcw[2]; u16 *ctl = (u16 *)&tape->caps[12]; + drive->pc_callback = ide_tape_callback; + spin_lock_init(&tape->lock); drive->dsc_overlap = 1; if (drive->hwif->host_flags & IDE_HFLAG_NO_DSC) {