debug_log("Enter %s - interrupt handler\n", __func__);
 
        if (pc->flags & PC_FLAG_TIMEDOUT) {
-               if (drive->media == ide_floppy || drive->media == ide_tape)
-                       drive->pc_callback(drive);
-               else
-                       pc->callback(drive);
+               drive->pc_callback(drive);
                return ide_stopped;
        }
 
                        return ide_stopped;
                }
                /* Command finished - Call the callback function */
-               if (drive->media == ide_floppy || drive->media == ide_tape)
-                       drive->pc_callback(drive);
-               else
-                       pc->callback(drive);
+               drive->pc_callback(drive);
                return ide_stopped;
        }
 
 
        rq->cmd_type = REQ_TYPE_SENSE;
        rq->cmd_flags |= REQ_PREEMPT;
        pc->timeout = jiffies + WAIT_READY;
-       pc->callback = ide_scsi_callback;
        /* NOTE! Save the failed packet command in "rq->buffer" */
        rq->buffer = (void *) failed_cmd->special;
        pc->scsi_cmd = ((struct ide_atapi_pc *) failed_cmd->special)->scsi_cmd;
 #if IDESCSI_DEBUG_LOG
        set_bit(IDESCSI_LOG_CMD, &scsi->log);
 #endif /* IDESCSI_DEBUG_LOG */
+
+       drive->pc_callback = ide_scsi_callback;
+
        idescsi_add_settings(drive);
 }
 
        pc->scsi_cmd = cmd;
        pc->done = done;
        pc->timeout = jiffies + cmd->timeout_per_command;
-       pc->callback = ide_scsi_callback;
 
        if (test_bit(IDESCSI_LOG_CMD, &scsi->log)) {
                printk ("ide-scsi: %s: que %lu, cmd = ", drive->name, cmd->serial_number);