diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-04-28 17:44:38 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-04-28 17:44:38 -0400 |
commit | 32b3fe4fff0974d823a0c0d17d7b25690ecd5fc8 (patch) | |
tree | ede5f596c0770c206b6d75a9794fdb55b07aab93 | |
parent | 24cc434acc2b3aaf70eba4ba20890eca5fcfa686 (diff) |
ide: always use ->OUTBSYNC method for executing commands
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>
-rw-r--r-- | drivers/ide/ide-floppy.c | 3 | ||||
-rw-r--r-- | drivers/ide/ide-io.c | 3 | ||||
-rw-r--r-- | drivers/ide/ide-iops.c | 2 | ||||
-rw-r--r-- | drivers/ide/ide-probe.c | 6 | ||||
-rw-r--r-- | drivers/ide/ide-tape.c | 3 | ||||
-rw-r--r-- | drivers/scsi/ide-scsi.c | 6 |
6 files changed, 14 insertions, 9 deletions
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c index e2bcd3af45db..b9983c4a1fac 100644 --- a/drivers/ide/ide-floppy.c +++ b/drivers/ide/ide-floppy.c | |||
@@ -696,7 +696,8 @@ static ide_startstop_t idefloppy_issue_pc(ide_drive_t *drive, | |||
696 | return ide_started; | 696 | return ide_started; |
697 | } else { | 697 | } else { |
698 | /* Issue the packet command */ | 698 | /* Issue the packet command */ |
699 | hwif->OUTB(WIN_PACKETCMD, hwif->io_ports.command_addr); | 699 | hwif->OUTBSYNC(drive, WIN_PACKETCMD, |
700 | hwif->io_ports.command_addr); | ||
700 | return (*pkt_xfer_routine) (drive); | 701 | return (*pkt_xfer_routine) (drive); |
701 | } | 702 | } |
702 | } | 703 | } |
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index a17fc6430001..c32ca769b963 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
@@ -502,7 +502,8 @@ static ide_startstop_t ide_atapi_error(ide_drive_t *drive, struct request *rq, u | |||
502 | 502 | ||
503 | if (ide_read_status(drive) & (BUSY_STAT | DRQ_STAT)) | 503 | if (ide_read_status(drive) & (BUSY_STAT | DRQ_STAT)) |
504 | /* force an abort */ | 504 | /* force an abort */ |
505 | hwif->OUTB(WIN_IDLEIMMEDIATE, hwif->io_ports.command_addr); | 505 | hwif->OUTBSYNC(drive, WIN_IDLEIMMEDIATE, |
506 | hwif->io_ports.command_addr); | ||
506 | 507 | ||
507 | if (rq->errors >= ERROR_MAX) { | 508 | if (rq->errors >= ERROR_MAX) { |
508 | ide_kill_rq(drive, rq); | 509 | ide_kill_rq(drive, rq); |
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index 1789fbab2daf..7f2b4edc6369 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c | |||
@@ -593,7 +593,7 @@ int ide_driveid_update(ide_drive_t *drive) | |||
593 | SELECT_MASK(drive, 1); | 593 | SELECT_MASK(drive, 1); |
594 | ide_set_irq(drive, 1); | 594 | ide_set_irq(drive, 1); |
595 | msleep(50); | 595 | msleep(50); |
596 | hwif->OUTB(WIN_IDENTIFY, hwif->io_ports.command_addr); | 596 | hwif->OUTBSYNC(drive, WIN_IDENTIFY, hwif->io_ports.command_addr); |
597 | timeout = jiffies + WAIT_WORSTCASE; | 597 | timeout = jiffies + WAIT_WORSTCASE; |
598 | do { | 598 | do { |
599 | if (time_after(jiffies, timeout)) { | 599 | if (time_after(jiffies, timeout)) { |
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 8f7d57660643..099a0fe1745b 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
@@ -293,7 +293,7 @@ static int actual_try_to_identify (ide_drive_t *drive, u8 cmd) | |||
293 | hwif->OUTB(0, io_ports->feature_addr); | 293 | hwif->OUTB(0, io_ports->feature_addr); |
294 | 294 | ||
295 | /* ask drive for ID */ | 295 | /* ask drive for ID */ |
296 | hwif->OUTB(cmd, io_ports->command_addr); | 296 | hwif->OUTBSYNC(drive, cmd, io_ports->command_addr); |
297 | 297 | ||
298 | timeout = ((cmd == WIN_IDENTIFY) ? WAIT_WORSTCASE : WAIT_PIDENTIFY) / 2; | 298 | timeout = ((cmd == WIN_IDENTIFY) ? WAIT_WORSTCASE : WAIT_PIDENTIFY) / 2; |
299 | timeout += jiffies; | 299 | timeout += jiffies; |
@@ -480,7 +480,7 @@ static int do_probe (ide_drive_t *drive, u8 cmd) | |||
480 | msleep(50); | 480 | msleep(50); |
481 | hwif->OUTB(drive->select.all, io_ports->device_addr); | 481 | hwif->OUTB(drive->select.all, io_ports->device_addr); |
482 | msleep(50); | 482 | msleep(50); |
483 | hwif->OUTB(WIN_SRST, io_ports->command_addr); | 483 | hwif->OUTBSYNC(drive, WIN_SRST, io_ports->command_addr); |
484 | (void)ide_busy_sleep(hwif); | 484 | (void)ide_busy_sleep(hwif); |
485 | rc = try_to_identify(drive, cmd); | 485 | rc = try_to_identify(drive, cmd); |
486 | } | 486 | } |
@@ -516,7 +516,7 @@ static void enable_nest (ide_drive_t *drive) | |||
516 | printk("%s: enabling %s -- ", hwif->name, drive->id->model); | 516 | printk("%s: enabling %s -- ", hwif->name, drive->id->model); |
517 | SELECT_DRIVE(drive); | 517 | SELECT_DRIVE(drive); |
518 | msleep(50); | 518 | msleep(50); |
519 | hwif->OUTB(EXABYTE_ENABLE_NEST, hwif->io_ports.command_addr); | 519 | hwif->OUTBSYNC(drive, EXABYTE_ENABLE_NEST, hwif->io_ports.command_addr); |
520 | 520 | ||
521 | if (ide_busy_sleep(hwif)) { | 521 | if (ide_busy_sleep(hwif)) { |
522 | printk(KERN_CONT "failed (timeout)\n"); | 522 | printk(KERN_CONT "failed (timeout)\n"); |
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c index f4f31238bbef..f3f231de1835 100644 --- a/drivers/ide/ide-tape.c +++ b/drivers/ide/ide-tape.c | |||
@@ -1056,7 +1056,8 @@ static ide_startstop_t idetape_issue_pc(ide_drive_t *drive, | |||
1056 | IDETAPE_WAIT_CMD, NULL); | 1056 | IDETAPE_WAIT_CMD, NULL); |
1057 | return ide_started; | 1057 | return ide_started; |
1058 | } else { | 1058 | } else { |
1059 | hwif->OUTB(WIN_PACKETCMD, hwif->io_ports.command_addr); | 1059 | hwif->OUTBSYNC(drive, WIN_PACKETCMD, |
1060 | hwif->io_ports.command_addr); | ||
1060 | return idetape_transfer_pc(drive); | 1061 | return idetape_transfer_pc(drive); |
1061 | } | 1062 | } |
1062 | } | 1063 | } |
diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c index 1168fb0a713c..8f716da5b7de 100644 --- a/drivers/scsi/ide-scsi.c +++ b/drivers/scsi/ide-scsi.c | |||
@@ -256,7 +256,8 @@ idescsi_atapi_error(ide_drive_t *drive, struct request *rq, u8 stat, u8 err) | |||
256 | 256 | ||
257 | if (ide_read_status(drive) & (BUSY_STAT | DRQ_STAT)) | 257 | if (ide_read_status(drive) & (BUSY_STAT | DRQ_STAT)) |
258 | /* force an abort */ | 258 | /* force an abort */ |
259 | hwif->OUTB(WIN_IDLEIMMEDIATE, hwif->io_ports.command_addr); | 259 | hwif->OUTBSYNC(drive, WIN_IDLEIMMEDIATE, |
260 | hwif->io_ports.command_addr); | ||
260 | 261 | ||
261 | rq->errors++; | 262 | rq->errors++; |
262 | 263 | ||
@@ -573,7 +574,8 @@ static ide_startstop_t idescsi_issue_pc(ide_drive_t *drive, | |||
573 | return ide_started; | 574 | return ide_started; |
574 | } else { | 575 | } else { |
575 | /* Issue the packet command */ | 576 | /* Issue the packet command */ |
576 | hwif->OUTB(WIN_PACKETCMD, hwif->io_ports.command_addr); | 577 | hwif->OUTBSYNC(drive, WIN_PACKETCMD, |
578 | hwif->io_ports.command_addr); | ||
577 | return idescsi_transfer_pc(drive); | 579 | return idescsi_transfer_pc(drive); |
578 | } | 580 | } |
579 | } | 581 | } |