diff options
Diffstat (limited to 'drivers/ide/ide-taskfile.c')
| -rw-r--r-- | drivers/ide/ide-taskfile.c | 29 | 
1 files changed, 16 insertions, 13 deletions
| diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c index 4c86a8d84b4c..155cc904f4eb 100644 --- a/drivers/ide/ide-taskfile.c +++ b/drivers/ide/ide-taskfile.c | |||
| @@ -59,32 +59,34 @@ void ide_tf_load(ide_drive_t *drive, ide_task_t *task) | |||
| 59 | SELECT_MASK(drive, 0); | 59 | SELECT_MASK(drive, 0); | 
| 60 | 60 | ||
| 61 | if (task->tf_flags & IDE_TFLAG_OUT_DATA) | 61 | if (task->tf_flags & IDE_TFLAG_OUT_DATA) | 
| 62 | hwif->OUTW((tf->hob_data << 8) | tf->data, IDE_DATA_REG); | 62 | hwif->OUTW((tf->hob_data << 8) | tf->data, | 
| 63 | hwif->io_ports[IDE_DATA_OFFSET]); | ||
| 63 | 64 | ||
| 64 | if (task->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) | 65 | if (task->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) | 
| 65 | hwif->OUTB(tf->hob_feature, IDE_FEATURE_REG); | 66 | hwif->OUTB(tf->hob_feature, hwif->io_ports[IDE_FEATURE_OFFSET]); | 
| 66 | if (task->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) | 67 | if (task->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) | 
| 67 | hwif->OUTB(tf->hob_nsect, IDE_NSECTOR_REG); | 68 | hwif->OUTB(tf->hob_nsect, hwif->io_ports[IDE_NSECTOR_OFFSET]); | 
| 68 | if (task->tf_flags & IDE_TFLAG_OUT_HOB_LBAL) | 69 | if (task->tf_flags & IDE_TFLAG_OUT_HOB_LBAL) | 
| 69 | hwif->OUTB(tf->hob_lbal, IDE_SECTOR_REG); | 70 | hwif->OUTB(tf->hob_lbal, hwif->io_ports[IDE_SECTOR_OFFSET]); | 
| 70 | if (task->tf_flags & IDE_TFLAG_OUT_HOB_LBAM) | 71 | if (task->tf_flags & IDE_TFLAG_OUT_HOB_LBAM) | 
| 71 | hwif->OUTB(tf->hob_lbam, IDE_LCYL_REG); | 72 | hwif->OUTB(tf->hob_lbam, hwif->io_ports[IDE_LCYL_OFFSET]); | 
| 72 | if (task->tf_flags & IDE_TFLAG_OUT_HOB_LBAH) | 73 | if (task->tf_flags & IDE_TFLAG_OUT_HOB_LBAH) | 
| 73 | hwif->OUTB(tf->hob_lbah, IDE_HCYL_REG); | 74 | hwif->OUTB(tf->hob_lbah, hwif->io_ports[IDE_HCYL_OFFSET]); | 
| 74 | 75 | ||
| 75 | if (task->tf_flags & IDE_TFLAG_OUT_FEATURE) | 76 | if (task->tf_flags & IDE_TFLAG_OUT_FEATURE) | 
| 76 | hwif->OUTB(tf->feature, IDE_FEATURE_REG); | 77 | hwif->OUTB(tf->feature, hwif->io_ports[IDE_FEATURE_OFFSET]); | 
| 77 | if (task->tf_flags & IDE_TFLAG_OUT_NSECT) | 78 | if (task->tf_flags & IDE_TFLAG_OUT_NSECT) | 
| 78 | hwif->OUTB(tf->nsect, IDE_NSECTOR_REG); | 79 | hwif->OUTB(tf->nsect, hwif->io_ports[IDE_NSECTOR_OFFSET]); | 
| 79 | if (task->tf_flags & IDE_TFLAG_OUT_LBAL) | 80 | if (task->tf_flags & IDE_TFLAG_OUT_LBAL) | 
| 80 | hwif->OUTB(tf->lbal, IDE_SECTOR_REG); | 81 | hwif->OUTB(tf->lbal, hwif->io_ports[IDE_SECTOR_OFFSET]); | 
| 81 | if (task->tf_flags & IDE_TFLAG_OUT_LBAM) | 82 | if (task->tf_flags & IDE_TFLAG_OUT_LBAM) | 
| 82 | hwif->OUTB(tf->lbam, IDE_LCYL_REG); | 83 | hwif->OUTB(tf->lbam, hwif->io_ports[IDE_LCYL_OFFSET]); | 
| 83 | if (task->tf_flags & IDE_TFLAG_OUT_LBAH) | 84 | if (task->tf_flags & IDE_TFLAG_OUT_LBAH) | 
| 84 | hwif->OUTB(tf->lbah, IDE_HCYL_REG); | 85 | hwif->OUTB(tf->lbah, hwif->io_ports[IDE_HCYL_OFFSET]); | 
| 85 | 86 | ||
| 86 | if (task->tf_flags & IDE_TFLAG_OUT_DEVICE) | 87 | if (task->tf_flags & IDE_TFLAG_OUT_DEVICE) | 
| 87 | hwif->OUTB((tf->device & HIHI) | drive->select.all, IDE_SELECT_REG); | 88 | hwif->OUTB((tf->device & HIHI) | drive->select.all, | 
| 89 | hwif->io_ports[IDE_SELECT_OFFSET]); | ||
| 88 | } | 90 | } | 
| 89 | 91 | ||
| 90 | int taskfile_lib_get_identify (ide_drive_t *drive, u8 *buf) | 92 | int taskfile_lib_get_identify (ide_drive_t *drive, u8 *buf) | 
| @@ -152,7 +154,8 @@ ide_startstop_t do_rw_taskfile (ide_drive_t *drive, ide_task_t *task) | |||
| 152 | switch (task->data_phase) { | 154 | switch (task->data_phase) { | 
| 153 | case TASKFILE_MULTI_OUT: | 155 | case TASKFILE_MULTI_OUT: | 
| 154 | case TASKFILE_OUT: | 156 | case TASKFILE_OUT: | 
| 155 | hwif->OUTBSYNC(drive, tf->command, IDE_COMMAND_REG); | 157 | hwif->OUTBSYNC(drive, tf->command, | 
| 158 | hwif->io_ports[IDE_COMMAND_OFFSET]); | ||
| 156 | ndelay(400); /* FIXME */ | 159 | ndelay(400); /* FIXME */ | 
| 157 | return pre_task_out_intr(drive, task->rq); | 160 | return pre_task_out_intr(drive, task->rq); | 
| 158 | case TASKFILE_MULTI_IN: | 161 | case TASKFILE_MULTI_IN: | 
