-/*
- * Handler for command with PIO data-out phase (Write Multiple).
- */
-ide_startstop_t task_mulout_intr (ide_drive_t *drive)
-{
- struct request *rq = HWGROUP(drive)->rq;
- u8 stat;
-
- stat = HWIF(drive)->INB(IDE_STATUS_REG);
- if (!OK_STAT(stat, DRIVE_READY, drive->bad_wstat))
- return task_error(drive, rq, __FUNCTION__, stat, drive->mult_count);
-
- /* Deal with unexpected ATA data phase. */
- if (((stat & DRQ_STAT) == 0) ^ !rq->nr_sectors)
- return task_error(drive, rq, __FUNCTION__, stat, drive->mult_count);
-
- if (!rq->nr_sectors) {
- task_end_request(drive, rq, stat);
- return ide_stopped;
- }
-
- /* Still data left to transfer. */
- task_multi_sectors(drive, rq, IDE_PIO_OUT);
- ide_set_handler(drive, &task_mulout_intr, WAIT_WORSTCASE, NULL);
-
- return ide_started;
-}
-EXPORT_SYMBOL(task_mulout_intr);
-
-ide_startstop_t pre_task_mulout_intr (ide_drive_t *drive, struct request *rq)
-{
- ide_startstop_t startstop;
-
- if (ide_wait_stat(&startstop, drive, DATA_READY,
- drive->bad_wstat, WAIT_DRQ)) {
- printk(KERN_ERR "%s: no DRQ after issuing MULTWRITE%s\n",
- drive->name, drive->addressing ? "_EXT" : "");
- return startstop;
- }
-
- if (!drive->unmask)
- local_irq_disable();
-
- ide_set_handler(drive, &task_mulout_intr, WAIT_WORSTCASE, NULL);
- task_multi_sectors(drive, rq, IDE_PIO_OUT);
-
- return ide_started;
-}
-EXPORT_SYMBOL(pre_task_mulout_intr);
-
-int ide_diag_taskfile (ide_drive_t *drive, ide_task_t *args, unsigned long data_size, u8 *buf)