ide: call write_devctl() method from tf_read() method
authorSergei Shtylyov <sshtylyov@ru.mvista.com>
Wed, 8 Apr 2009 12:13:02 +0000 (14:13 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Wed, 8 Apr 2009 12:13:02 +0000 (14:13 +0200)
Use write_devctl() method to clear/set the HOB bit in tf_read() method.

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-io-std.c
drivers/ide/ns87415.c
drivers/ide/scc_pata.c

index 7950b3bb4312367b3c75cece169fe04012a101a3..66c27768e85be5d61817baf7125e9a700983f63b 100644 (file)
@@ -133,21 +133,17 @@ void ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
        ide_hwif_t *hwif = drive->hwif;
        struct ide_io_ports *io_ports = &hwif->io_ports;
        struct ide_taskfile *tf = &cmd->tf;
-       void (*tf_outb)(u8 addr, unsigned long port);
        u8 (*tf_inb)(unsigned long port);
        u8 valid = cmd->valid.in.tf;
        u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0;
 
-       if (mmio) {
-               tf_outb = ide_mm_outb;
+       if (mmio)
                tf_inb  = ide_mm_inb;
-       } else {
-               tf_outb = ide_outb;
+       else
                tf_inb  = ide_inb;
-       }
 
        /* be sure we're looking at the low order bits */
-       tf_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
+       hwif->tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);
 
        if (valid & IDE_VALID_ERROR)
                tf->error  = tf_inb(io_ports->feature_addr);
@@ -163,7 +159,7 @@ void ide_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
                tf->device = tf_inb(io_ports->device_addr);
 
        if (cmd->tf_flags & IDE_TFLAG_LBA48) {
-               tf_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
+               hwif->tp_ops->write_devctl(hwif, ATA_HOB | ATA_DEVCTL_OBS);
 
                tf = &cmd->hob;
                valid = cmd->valid.in.hob;
index 3ab5bb196d2f2c9a9e2a2225a087a676696cbb0c..f1305f4d2be73b79ca3b65e7eca3d7da7cf728b2 100644 (file)
@@ -68,7 +68,7 @@ static void superio_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
        u8 valid = cmd->valid.in.tf;
 
        /* be sure we're looking at the low order bits */
-       outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
+       ide_write_devctl(hwif, ATA_DEVCTL_OBS);
 
        if (valid & IDE_VALID_ERROR)
                tf->error  = inb(io_ports->feature_addr);
@@ -84,7 +84,7 @@ static void superio_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
                tf->device = superio_ide_inb(io_ports->device_addr);
 
        if (cmd->tf_flags & IDE_TFLAG_LBA48) {
-               outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
+               ide_write_devctl(hwif, ATA_HOB | ATA_DEVCTL_OBS);
 
                tf = &cmd->hob;
                valid = cmd->valid.in.hob;
index f5a6fa0a8bea0b162b5b5988a0eb38e7170cb0fe..feabf548704911b8b0f76bb2b0d1934024693940 100644 (file)
@@ -686,7 +686,7 @@ static void scc_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
        u8 valid = cmd->valid.in.tf;
 
        /* be sure we're looking at the low order bits */
-       scc_ide_outb(ATA_DEVCTL_OBS, io_ports->ctl_addr);
+       scc_write_devctl(hwif, ATA_DEVCTL_OBS);
 
        if (valid & IDE_VALID_ERROR)
                tf->error  = scc_ide_inb(io_ports->feature_addr);
@@ -702,7 +702,7 @@ static void scc_tf_read(ide_drive_t *drive, struct ide_cmd *cmd)
                tf->device = scc_ide_inb(io_ports->device_addr);
 
        if (cmd->tf_flags & IDE_TFLAG_LBA48) {
-               scc_ide_outb(ATA_HOB | ATA_DEVCTL_OBS, io_ports->ctl_addr);
+               scc_write_devctl(hwif, ATA_HOB | ATA_DEVCTL_OBS);
 
                tf = &cmd->hob;
                valid = cmd->valid.in.hob;