diff options
Diffstat (limited to 'drivers/ide/scc_pata.c')
-rw-r--r-- | drivers/ide/scc_pata.c | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/drivers/ide/scc_pata.c b/drivers/ide/scc_pata.c index 5ecb70cf29dc..5be41f25204f 100644 --- a/drivers/ide/scc_pata.c +++ b/drivers/ide/scc_pata.c | |||
@@ -663,14 +663,9 @@ static void scc_tf_load(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid) | |||
663 | scc_ide_outb(tf->device, io_ports->device_addr); | 663 | scc_ide_outb(tf->device, io_ports->device_addr); |
664 | } | 664 | } |
665 | 665 | ||
666 | static void scc_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) | 666 | static void scc_tf_read(ide_drive_t *drive, struct ide_taskfile *tf, u8 valid) |
667 | { | 667 | { |
668 | struct ide_io_ports *io_ports = &drive->hwif->io_ports; | 668 | struct ide_io_ports *io_ports = &drive->hwif->io_ports; |
669 | struct ide_taskfile *tf = &cmd->tf; | ||
670 | u8 valid = cmd->valid.in.tf; | ||
671 | |||
672 | /* be sure we're looking at the low order bits */ | ||
673 | scc_write_devctl(hwif, ATA_DEVCTL_OBS); | ||
674 | 669 | ||
675 | if (valid & IDE_VALID_ERROR) | 670 | if (valid & IDE_VALID_ERROR) |
676 | tf->error = scc_ide_inb(io_ports->feature_addr); | 671 | tf->error = scc_ide_inb(io_ports->feature_addr); |
@@ -684,24 +679,6 @@ static void scc_tf_read(ide_drive_t *drive, struct ide_cmd *cmd) | |||
684 | tf->lbah = scc_ide_inb(io_ports->lbah_addr); | 679 | tf->lbah = scc_ide_inb(io_ports->lbah_addr); |
685 | if (valid & IDE_VALID_DEVICE) | 680 | if (valid & IDE_VALID_DEVICE) |
686 | tf->device = scc_ide_inb(io_ports->device_addr); | 681 | tf->device = scc_ide_inb(io_ports->device_addr); |
687 | |||
688 | if (cmd->tf_flags & IDE_TFLAG_LBA48) { | ||
689 | scc_write_devctl(hwif, ATA_HOB | ATA_DEVCTL_OBS); | ||
690 | |||
691 | tf = &cmd->hob; | ||
692 | valid = cmd->valid.in.hob; | ||
693 | |||
694 | if (valid & IDE_VALID_ERROR) | ||
695 | tf->error = scc_ide_inb(io_ports->feature_addr); | ||
696 | if (valid & IDE_VALID_NSECT) | ||
697 | tf->nsect = scc_ide_inb(io_ports->nsect_addr); | ||
698 | if (valid & IDE_VALID_LBAL) | ||
699 | tf->lbal = scc_ide_inb(io_ports->lbal_addr); | ||
700 | if (valid & IDE_VALID_LBAM) | ||
701 | tf->lbam = scc_ide_inb(io_ports->lbam_addr); | ||
702 | if (valid & IDE_VALID_LBAH) | ||
703 | tf->lbah = scc_ide_inb(io_ports->lbah_addr); | ||
704 | } | ||
705 | } | 682 | } |
706 | 683 | ||
707 | static void scc_input_data(ide_drive_t *drive, struct ide_cmd *cmd, | 684 | static void scc_input_data(ide_drive_t *drive, struct ide_cmd *cmd, |