diff options
| -rw-r--r-- | drivers/ide/at91_ide.c | 15 | ||||
| -rw-r--r-- | drivers/ide/ide-h8300.c | 15 | ||||
| -rw-r--r-- | drivers/ide/ide-io-std.c | 15 | ||||
| -rw-r--r-- | drivers/ide/ide-io.c | 12 | ||||
| -rw-r--r-- | drivers/ide/ide-taskfile.c | 6 | ||||
| -rw-r--r-- | drivers/ide/ns87415.c | 9 | ||||
| -rw-r--r-- | drivers/ide/scc_pata.c | 15 | ||||
| -rw-r--r-- | drivers/ide/tx4938ide.c | 15 | ||||
| -rw-r--r-- | drivers/ide/tx4939ide.c | 15 |
9 files changed, 17 insertions, 100 deletions
diff --git a/drivers/ide/at91_ide.c b/drivers/ide/at91_ide.c index b7be66d600f8..04b39ff02d76 100644 --- a/drivers/ide/at91_ide.c +++ b/drivers/ide/at91_ide.c | |||
| @@ -195,12 +195,6 @@ static void at91_ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 195 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) | 195 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) |
| 196 | HIHI = 0xFF; | 196 | HIHI = 0xFF; |
| 197 | 197 | ||
| 198 | if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) { | ||
| 199 | u8 data[2] = { tf->data, tf->hob_data }; | ||
| 200 | |||
| 201 | at91_ide_output_data(drive, cmd, data, 2); | ||
| 202 | } | ||
| 203 | |||
| 204 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) | 198 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) |
| 205 | ide_mm_outb(tf->hob_feature, io_ports->feature_addr); | 199 | ide_mm_outb(tf->hob_feature, io_ports->feature_addr); |
| 206 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) | 200 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) |
| @@ -233,15 +227,6 @@ static void at91_ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 233 | struct ide_io_ports *io_ports = &hwif->io_ports; | 227 | struct ide_io_ports *io_ports = &hwif->io_ports; |
| 234 | struct ide_taskfile *tf = &cmd->tf; | 228 | struct ide_taskfile *tf = &cmd->tf; |
| 235 | 229 | ||
| 236 | if (cmd->ftf_flags & IDE_FTFLAG_IN_DATA) { | ||
| 237 | u8 data[2]; | ||
| 238 | |||
| 239 | at91_ide_input_data(drive, cmd, data, 2); | ||
| 240 | |||
| 241 | tf->data = data[0]; | ||
| 242 | tf->hob_data = data[1]; | ||
| 243 | } | ||
| 244 | |||
| 245 | /* be sure we're looking at the low order bits */ | 230 | /* be sure we're looking at the low order bits */ |
| 246 | ide_mm_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); | 231 | ide_mm_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); |
| 247 | 232 | ||
diff --git a/drivers/ide/ide-h8300.c b/drivers/ide/ide-h8300.c index 6cb1785d32e6..8541a9abd7ac 100644 --- a/drivers/ide/ide-h8300.c +++ b/drivers/ide/ide-h8300.c | |||
| @@ -54,12 +54,6 @@ static void h8300_tf_load(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 54 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) | 54 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) |
| 55 | HIHI = 0xFF; | 55 | HIHI = 0xFF; |
| 56 | 56 | ||
| 57 | if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) { | ||
| 58 | u8 data[2] = { tf->data, tf->hob_data }; | ||
| 59 | |||
| 60 | h8300_output_data(drive, cmd, data, 2); | ||
| 61 | } | ||
| 62 | |||
| 63 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) | 57 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) |
| 64 | outb(tf->hob_feature, io_ports->feature_addr); | 58 | outb(tf->hob_feature, io_ports->feature_addr); |
| 65 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) | 59 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) |
| @@ -93,15 +87,6 @@ static void h8300_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 93 | struct ide_io_ports *io_ports = &hwif->io_ports; | 87 | struct ide_io_ports *io_ports = &hwif->io_ports; |
| 94 | struct ide_taskfile *tf = &cmd->tf; | 88 | struct ide_taskfile *tf = &cmd->tf; |
| 95 | 89 | ||
| 96 | if (cmd->ftf_flags & IDE_FTFLAG_IN_DATA) { | ||
| 97 | u8 data[2]; | ||
| 98 | |||
| 99 | h8300_input_data(drive, cmd, data, 2); | ||
| 100 | |||
| 101 | tf->data = data[0]; | ||
| 102 | tf->hob_data = data[1]; | ||
| 103 | } | ||
| 104 | |||
| 105 | /* be sure we're looking at the low order bits */ | 90 | /* be sure we're looking at the low order bits */ |
| 106 | outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); | 91 | outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); |
| 107 | 92 | ||
diff --git a/drivers/ide/ide-io-std.c b/drivers/ide/ide-io-std.c index f06940df255e..7f77bb7db488 100644 --- a/drivers/ide/ide-io-std.c +++ b/drivers/ide/ide-io-std.c | |||
| @@ -90,12 +90,6 @@ void ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 90 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) | 90 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) |
| 91 | HIHI = 0xFF; | 91 | HIHI = 0xFF; |
| 92 | 92 | ||
| 93 | if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) { | ||
| 94 | u8 data[2] = { tf->data, tf->hob_data }; | ||
| 95 | |||
| 96 | ide_output_data(drive, cmd, data, 2); | ||
| 97 | } | ||
| 98 | |||
| 99 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) | 93 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) |
| 100 | tf_outb(tf->hob_feature, io_ports->feature_addr); | 94 | tf_outb(tf->hob_feature, io_ports->feature_addr); |
| 101 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) | 95 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) |
| @@ -141,15 +135,6 @@ void ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 141 | tf_inb = ide_inb; | 135 | tf_inb = ide_inb; |
| 142 | } | 136 | } |
| 143 | 137 | ||
| 144 | if (cmd->ftf_flags & IDE_FTFLAG_IN_DATA) { | ||
| 145 | u8 data[2]; | ||
| 146 | |||
| 147 | ide_input_data(drive, cmd, data, 2); | ||
| 148 | |||
| 149 | tf->data = data[0]; | ||
| 150 | tf->hob_data = data[1]; | ||
| 151 | } | ||
| 152 | |||
| 153 | /* be sure we're looking at the low order bits */ | 138 | /* be sure we're looking at the low order bits */ |
| 154 | tf_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); | 139 | tf_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); |
| 155 | 140 | ||
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index 5b57905a7d71..5589dce88674 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
| @@ -73,6 +73,7 @@ EXPORT_SYMBOL_GPL(ide_end_rq); | |||
| 73 | 73 | ||
| 74 | void ide_complete_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 stat, u8 err) | 74 | void ide_complete_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 stat, u8 err) |
| 75 | { | 75 | { |
| 76 | const struct ide_tp_ops *tp_ops = drive->hwif->tp_ops; | ||
| 76 | struct ide_taskfile *tf = &cmd->tf; | 77 | struct ide_taskfile *tf = &cmd->tf; |
| 77 | struct request *rq = cmd->rq; | 78 | struct request *rq = cmd->rq; |
| 78 | u8 tf_cmd = tf->command; | 79 | u8 tf_cmd = tf->command; |
| @@ -80,7 +81,16 @@ void ide_complete_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 stat, u8 err) | |||
| 80 | tf->error = err; | 81 | tf->error = err; |
| 81 | tf->status = stat; | 82 | tf->status = stat; |
| 82 | 83 | ||
| 83 | drive->hwif->tp_ops->tf_read(drive, cmd); | 84 | if (cmd->ftf_flags & IDE_FTFLAG_IN_DATA) { |
| 85 | u8 data[2]; | ||
| 86 | |||
| 87 | tp_ops->input_data(drive, cmd, data, 2); | ||
| 88 | |||
| 89 | tf->data = data[0]; | ||
| 90 | tf->hob_data = data[1]; | ||
| 91 | } | ||
| 92 | |||
| 93 | tp_ops->tf_read(drive, cmd); | ||
| 84 | 94 | ||
| 85 | if ((cmd->tf_flags & IDE_TFLAG_CUSTOM_HANDLER) && | 95 | if ((cmd->tf_flags & IDE_TFLAG_CUSTOM_HANDLER) && |
| 86 | tf_cmd == ATA_CMD_IDLEIMMEDIATE) { | 96 | tf_cmd == ATA_CMD_IDLEIMMEDIATE) { |
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c index 47f13cd11031..243421ce40d0 100644 --- a/drivers/ide/ide-taskfile.c +++ b/drivers/ide/ide-taskfile.c | |||
| @@ -82,6 +82,12 @@ ide_startstop_t do_rw_taskfile(ide_drive_t *drive, struct ide_cmd *orig_cmd) | |||
| 82 | ide_tf_dump(drive->name, tf); | 82 | ide_tf_dump(drive->name, tf); |
| 83 | tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS); | 83 | tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS); |
| 84 | SELECT_MASK(drive, 0); | 84 | SELECT_MASK(drive, 0); |
| 85 | |||
| 86 | if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) { | ||
| 87 | u8 data[2] = { tf->data, tf->hob_data }; | ||
| 88 | |||
| 89 | tp_ops->output_data(drive, cmd, data, 2); | ||
| 90 | } | ||
| 85 | tp_ops->tf_load(drive, cmd); | 91 | tp_ops->tf_load(drive, cmd); |
| 86 | } | 92 | } |
| 87 | 93 | ||
diff --git a/drivers/ide/ns87415.c b/drivers/ide/ns87415.c index 7d64bc079fa8..9f6dff83b141 100644 --- a/drivers/ide/ns87415.c +++ b/drivers/ide/ns87415.c | |||
| @@ -66,15 +66,6 @@ static void superio_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 66 | struct ide_io_ports *io_ports = &drive->hwif->io_ports; | 66 | struct ide_io_ports *io_ports = &drive->hwif->io_ports; |
| 67 | struct ide_taskfile *tf = &cmd->tf; | 67 | struct ide_taskfile *tf = &cmd->tf; |
| 68 | 68 | ||
| 69 | if (cmd->ftf_flags & IDE_FTFLAG_IN_DATA) { | ||
| 70 | u8 data[2]; | ||
| 71 | |||
| 72 | ide_input_data(drive, cmd, data, 2); | ||
| 73 | |||
| 74 | tf->data = data[0]; | ||
| 75 | tf->hob_data = data[1]; | ||
| 76 | } | ||
| 77 | |||
| 78 | /* be sure we're looking at the low order bits */ | 69 | /* be sure we're looking at the low order bits */ |
| 79 | outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); | 70 | outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); |
| 80 | 71 | ||
diff --git a/drivers/ide/scc_pata.c b/drivers/ide/scc_pata.c index 9c47cbf8c506..97f8e0ef21b1 100644 --- a/drivers/ide/scc_pata.c +++ b/drivers/ide/scc_pata.c | |||
| @@ -656,12 +656,6 @@ static void scc_tf_load(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 656 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) | 656 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) |
| 657 | HIHI = 0xFF; | 657 | HIHI = 0xFF; |
| 658 | 658 | ||
| 659 | if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) { | ||
| 660 | u8 data[2] = { tf->data, tf->hob_data }; | ||
| 661 | |||
| 662 | scc_output_data(drive, NULL, data, 2); | ||
| 663 | } | ||
| 664 | |||
| 665 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) | 659 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) |
| 666 | scc_ide_outb(tf->hob_feature, io_ports->feature_addr); | 660 | scc_ide_outb(tf->hob_feature, io_ports->feature_addr); |
| 667 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) | 661 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) |
| @@ -694,15 +688,6 @@ static void scc_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 694 | struct ide_io_ports *io_ports = &drive->hwif->io_ports; | 688 | struct ide_io_ports *io_ports = &drive->hwif->io_ports; |
| 695 | struct ide_taskfile *tf = &cmd->tf; | 689 | struct ide_taskfile *tf = &cmd->tf; |
| 696 | 690 | ||
| 697 | if (cmd->ftf_flags & IDE_FTFLAG_IN_DATA) { | ||
| 698 | u8 data[2]; | ||
| 699 | |||
| 700 | scc_input_data(drive, cmd, data, 2); | ||
| 701 | |||
| 702 | tf->data = data[0]; | ||
| 703 | tf->hob_data = data[1]; | ||
| 704 | } | ||
| 705 | |||
| 706 | /* be sure we're looking at the low order bits */ | 691 | /* be sure we're looking at the low order bits */ |
| 707 | scc_ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); | 692 | scc_ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); |
| 708 | 693 | ||
diff --git a/drivers/ide/tx4938ide.c b/drivers/ide/tx4938ide.c index c075464308a0..be391b615963 100644 --- a/drivers/ide/tx4938ide.c +++ b/drivers/ide/tx4938ide.c | |||
| @@ -92,12 +92,6 @@ static void tx4938ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 92 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) | 92 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) |
| 93 | HIHI = 0xFF; | 93 | HIHI = 0xFF; |
| 94 | 94 | ||
| 95 | if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) { | ||
| 96 | u8 data[2] = { tf->data, tf->hob_data }; | ||
| 97 | |||
| 98 | hwif->tp_ops->output_data(drive, cmd, data, 2); | ||
| 99 | } | ||
| 100 | |||
| 101 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) | 95 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) |
| 102 | tx4938ide_outb(tf->hob_feature, io_ports->feature_addr); | 96 | tx4938ide_outb(tf->hob_feature, io_ports->feature_addr); |
| 103 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) | 97 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) |
| @@ -131,15 +125,6 @@ static void tx4938ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 131 | struct ide_io_ports *io_ports = &hwif->io_ports; | 125 | struct ide_io_ports *io_ports = &hwif->io_ports; |
| 132 | struct ide_taskfile *tf = &cmd->tf; | 126 | struct ide_taskfile *tf = &cmd->tf; |
| 133 | 127 | ||
| 134 | if (cmd->ftf_flags & IDE_FTFLAG_IN_DATA) { | ||
| 135 | u8 data[2]; | ||
| 136 | |||
| 137 | hwif->tp_ops->input_data(drive, cmd, data, 2); | ||
| 138 | |||
| 139 | tf->data = data[0]; | ||
| 140 | tf->hob_data = data[1]; | ||
| 141 | } | ||
| 142 | |||
| 143 | /* be sure we're looking at the low order bits */ | 128 | /* be sure we're looking at the low order bits */ |
| 144 | tx4938ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); | 129 | tx4938ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); |
| 145 | 130 | ||
diff --git a/drivers/ide/tx4939ide.c b/drivers/ide/tx4939ide.c index c350d0c7ba4a..5a614d1c94f1 100644 --- a/drivers/ide/tx4939ide.c +++ b/drivers/ide/tx4939ide.c | |||
| @@ -457,12 +457,6 @@ static void tx4939ide_tf_load(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 457 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) | 457 | if (cmd->ftf_flags & IDE_FTFLAG_FLAGGED) |
| 458 | HIHI = 0xFF; | 458 | HIHI = 0xFF; |
| 459 | 459 | ||
| 460 | if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) { | ||
| 461 | u8 data[2] = { tf->data, tf->hob_data }; | ||
| 462 | |||
| 463 | hwif->tp_ops->output_data(drive, cmd, data, 2); | ||
| 464 | } | ||
| 465 | |||
| 466 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) | 460 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE) |
| 467 | tx4939ide_outb(tf->hob_feature, io_ports->feature_addr); | 461 | tx4939ide_outb(tf->hob_feature, io_ports->feature_addr); |
| 468 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) | 462 | if (cmd->tf_flags & IDE_TFLAG_OUT_HOB_NSECT) |
| @@ -498,15 +492,6 @@ static void tx4939ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) | |||
| 498 | struct ide_io_ports *io_ports = &hwif->io_ports; | 492 | struct ide_io_ports *io_ports = &hwif->io_ports; |
| 499 | struct ide_taskfile *tf = &cmd->tf; | 493 | struct ide_taskfile *tf = &cmd->tf; |
| 500 | 494 | ||
| 501 | if (cmd->ftf_flags & IDE_FTFLAG_IN_DATA) { | ||
| 502 | u8 data[2]; | ||
| 503 | |||
| 504 | hwif->tp_ops->input_data(drive, cmd, data, 2); | ||
| 505 | |||
| 506 | tf->data = data[0]; | ||
| 507 | tf->hob_data = data[1]; | ||
| 508 | } | ||
| 509 | |||
| 510 | /* be sure we're looking at the low order bits */ | 495 | /* be sure we're looking at the low order bits */ |
| 511 | tx4939ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); | 496 | tx4939ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr); |
| 512 | 497 | ||
