ide: always use ->OUTBSYNC method for executing commands
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Mon, 28 Apr 2008 21:44:38 +0000 (23:44 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Mon, 28 Apr 2008 21:44:38 +0000 (23:44 +0200)
Always use ->OUTBSYNC method for executing commands so the posting is done
if needed (this affects only pmac and scc_pata host drivers at the moment).

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-floppy.c
drivers/ide/ide-io.c
drivers/ide/ide-iops.c
drivers/ide/ide-probe.c
drivers/ide/ide-tape.c
drivers/scsi/ide-scsi.c

index e2bcd3a..b9983c4 100644 (file)
@@ -696,7 +696,8 @@ static ide_startstop_t idefloppy_issue_pc(ide_drive_t *drive,
                return ide_started;
        } else {
                /* Issue the packet command */
-               hwif->OUTB(WIN_PACKETCMD, hwif->io_ports.command_addr);
+               hwif->OUTBSYNC(drive, WIN_PACKETCMD,
+                              hwif->io_ports.command_addr);
                return (*pkt_xfer_routine) (drive);
        }
 }
index a17fc64..c32ca76 100644 (file)
@@ -502,7 +502,8 @@ static ide_startstop_t ide_atapi_error(ide_drive_t *drive, struct request *rq, u
 
        if (ide_read_status(drive) & (BUSY_STAT | DRQ_STAT))
                /* force an abort */
-               hwif->OUTB(WIN_IDLEIMMEDIATE, hwif->io_ports.command_addr);
+               hwif->OUTBSYNC(drive, WIN_IDLEIMMEDIATE,
+                              hwif->io_ports.command_addr);
 
        if (rq->errors >= ERROR_MAX) {
                ide_kill_rq(drive, rq);
index 1789fba..7f2b4ed 100644 (file)
@@ -593,7 +593,7 @@ int ide_driveid_update(ide_drive_t *drive)
        SELECT_MASK(drive, 1);
        ide_set_irq(drive, 1);
        msleep(50);
-       hwif->OUTB(WIN_IDENTIFY, hwif->io_ports.command_addr);
+       hwif->OUTBSYNC(drive, WIN_IDENTIFY, hwif->io_ports.command_addr);
        timeout = jiffies + WAIT_WORSTCASE;
        do {
                if (time_after(jiffies, timeout)) {
index 8f7d576..099a0fe 100644 (file)
@@ -293,7 +293,7 @@ static int actual_try_to_identify (ide_drive_t *drive, u8 cmd)
                hwif->OUTB(0, io_ports->feature_addr);
 
        /* ask drive for ID */
-       hwif->OUTB(cmd, io_ports->command_addr);
+       hwif->OUTBSYNC(drive, cmd, io_ports->command_addr);
 
        timeout = ((cmd == WIN_IDENTIFY) ? WAIT_WORSTCASE : WAIT_PIDENTIFY) / 2;
        timeout += jiffies;
@@ -480,7 +480,7 @@ static int do_probe (ide_drive_t *drive, u8 cmd)
                        msleep(50);
                        hwif->OUTB(drive->select.all, io_ports->device_addr);
                        msleep(50);
-                       hwif->OUTB(WIN_SRST, io_ports->command_addr);
+                       hwif->OUTBSYNC(drive, WIN_SRST, io_ports->command_addr);
                        (void)ide_busy_sleep(hwif);
                        rc = try_to_identify(drive, cmd);
                }
@@ -516,7 +516,7 @@ static void enable_nest (ide_drive_t *drive)
        printk("%s: enabling %s -- ", hwif->name, drive->id->model);
        SELECT_DRIVE(drive);
        msleep(50);
-       hwif->OUTB(EXABYTE_ENABLE_NEST, hwif->io_ports.command_addr);
+       hwif->OUTBSYNC(drive, EXABYTE_ENABLE_NEST, hwif->io_ports.command_addr);
 
        if (ide_busy_sleep(hwif)) {
                printk(KERN_CONT "failed (timeout)\n");
index f4f3123..f3f231d 100644 (file)
@@ -1056,7 +1056,8 @@ static ide_startstop_t idetape_issue_pc(ide_drive_t *drive,
                                    IDETAPE_WAIT_CMD, NULL);
                return ide_started;
        } else {
-               hwif->OUTB(WIN_PACKETCMD, hwif->io_ports.command_addr);
+               hwif->OUTBSYNC(drive, WIN_PACKETCMD,
+                              hwif->io_ports.command_addr);
                return idetape_transfer_pc(drive);
        }
 }
index 1168fb0..8f716da 100644 (file)
@@ -256,7 +256,8 @@ idescsi_atapi_error(ide_drive_t *drive, struct request *rq, u8 stat, u8 err)
 
        if (ide_read_status(drive) & (BUSY_STAT | DRQ_STAT))
                /* force an abort */
-               hwif->OUTB(WIN_IDLEIMMEDIATE, hwif->io_ports.command_addr);
+               hwif->OUTBSYNC(drive, WIN_IDLEIMMEDIATE,
+                              hwif->io_ports.command_addr);
 
        rq->errors++;
 
@@ -573,7 +574,8 @@ static ide_startstop_t idescsi_issue_pc(ide_drive_t *drive,
                return ide_started;
        } else {
                /* Issue the packet command */
-               hwif->OUTB(WIN_PACKETCMD, hwif->io_ports.command_addr);
+               hwif->OUTBSYNC(drive, WIN_PACKETCMD,
+                              hwif->io_ports.command_addr);
                return idescsi_transfer_pc(drive);
        }
 }