if (dma)
return lba48 ? WIN_READDMA_EXT : WIN_READDMA;
if (drive->mult_count) {
+ task->data_phase = TASKFILE_MULTI_IN;
task->handler = &task_mulin_intr;
return lba48 ? WIN_MULTREAD_EXT : WIN_MULTREAD;
}
+ task->data_phase = TASKFILE_IN;
task->handler = &task_in_intr;
return lba48 ? WIN_READ_EXT : WIN_READ;
} else {
if (dma)
return lba48 ? WIN_WRITEDMA_EXT : WIN_WRITEDMA;
if (drive->mult_count) {
+ task->data_phase = TASKFILE_MULTI_OUT;
task->prehandler = &pre_task_mulout_intr;
task->handler = &task_mulout_intr;
return lba48 ? WIN_MULTWRITE_EXT : WIN_MULTWRITE;
}
+ task->data_phase = TASKFILE_OUT;
task->prehandler = &pre_task_out_intr;
task->handler = &task_out_intr;
return lba48 ? WIN_WRITE_EXT : WIN_WRITE;
args.tfRegister[IDE_COMMAND_OFFSET] = get_command(drive, rq, &args);
args.rq = (struct request *) rq;
rq->special = (ide_task_t *)&args;
+ drive->hwif->data_phase = args.data_phase;
return do_rw_taskfile(drive, &args);
}
args.tfRegister[IDE_COMMAND_OFFSET] = get_command(drive, rq, &args);
args.rq = (struct request *) rq;
rq->special = (ide_task_t *)&args;
+ drive->hwif->data_phase = args.data_phase;
return do_rw_taskfile(drive, &args);
}
args.hobRegister[IDE_CONTROL_OFFSET_HOB]= (drive->ctl|0x80);
args.rq = (struct request *) rq;
rq->special = (ide_task_t *)&args;
+ drive->hwif->data_phase = args.data_phase;
return do_rw_taskfile(drive, &args);
}
args.tfRegister[IDE_HCYL_OFFSET] = SMART_HCYL_PASS;
args.tfRegister[IDE_COMMAND_OFFSET] = WIN_SMART;
args.command_type = IDE_DRIVE_TASK_IN;
+ args.data_phase = TASKFILE_IN;
args.handler = &task_in_intr;
(void) smart_enable(drive);
return ide_raw_taskfile(drive, &args, buf);