aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-io.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-04-26 16:44:19 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-26 16:44:19 -0400
commita52b0d25a722e84da999005b75f972aa4824253c (patch)
tree4a3a48305f744e6bde2e3fd663a4473dd712049c /drivers/ide/ide-io.c
parent539a5fe22620a1665cce504167953a71a43232ad (diff)
parentf37afdaca711838b50ecd89b9c15fc745270d77c (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (46 commits) ide: constify struct ide_dma_ops ide: add struct ide_dma_ops (take 3) ide: add IDE_HFLAG_SERIALIZE_DMA host flag sl82c105: check bridge revision in sl82c105_init_one() au1xxx-ide: use ->init_dma method palm_bk3710: use ->init_dma method sgiioc4: use ->init_dma method icside: use ->init_dma method ide-pmac: use ->init_dma method ide: do complete DMA setup in ->init_dma method (take 2) au1xxx-ide: fix MWDMA support ide: cleanup ide_setup_dma() ide: factor out setting PCI bus-mastering from ide_hwif_setup_dma() ide: export ide_allocate_dma_engine() ide: move ide_setup_dma() call out from ->init_dma method alim15x3: skip DMA initialization completely on revs < 0x20 pdc202xx_old: remove init_dma_pdc202xx() ide: don't display "BIOS" settings in ide_setup_dma() ide: remove ->cds field from ide_hwif_t (take 2) ide: remove ide_dma_iobase() ...
Diffstat (limited to 'drivers/ide/ide-io.c')
-rw-r--r--drivers/ide/ide-io.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index 51d181ee9cf7..0fe89a599275 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -218,7 +218,7 @@ static ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *
218 * we could be smarter and check for current xfer_speed 218 * we could be smarter and check for current xfer_speed
219 * in struct drive etc... 219 * in struct drive etc...
220 */ 220 */
221 if (drive->hwif->dma_host_set == NULL) 221 if (drive->hwif->dma_ops == NULL)
222 break; 222 break;
223 /* 223 /*
224 * TODO: respect ->using_dma setting 224 * TODO: respect ->using_dma setting
@@ -721,6 +721,7 @@ static ide_startstop_t do_special (ide_drive_t *drive)
721#endif 721#endif
722 if (s->b.set_tune) { 722 if (s->b.set_tune) {
723 ide_hwif_t *hwif = drive->hwif; 723 ide_hwif_t *hwif = drive->hwif;
724 const struct ide_port_ops *port_ops = hwif->port_ops;
724 u8 req_pio = drive->tune_req; 725 u8 req_pio = drive->tune_req;
725 726
726 s->b.set_tune = 0; 727 s->b.set_tune = 0;
@@ -733,10 +734,10 @@ static ide_startstop_t do_special (ide_drive_t *drive)
733 unsigned long flags; 734 unsigned long flags;
734 735
735 spin_lock_irqsave(&ide_lock, flags); 736 spin_lock_irqsave(&ide_lock, flags);
736 hwif->set_pio_mode(drive, req_pio); 737 port_ops->set_pio_mode(drive, req_pio);
737 spin_unlock_irqrestore(&ide_lock, flags); 738 spin_unlock_irqrestore(&ide_lock, flags);
738 } else 739 } else
739 hwif->set_pio_mode(drive, req_pio); 740 port_ops->set_pio_mode(drive, req_pio);
740 } else { 741 } else {
741 int keep_dma = drive->using_dma; 742 int keep_dma = drive->using_dma;
742 743
@@ -1237,12 +1238,12 @@ static ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error)
1237 1238
1238 if (error < 0) { 1239 if (error < 0) {
1239 printk(KERN_WARNING "%s: DMA timeout error\n", drive->name); 1240 printk(KERN_WARNING "%s: DMA timeout error\n", drive->name);
1240 (void)HWIF(drive)->ide_dma_end(drive); 1241 (void)hwif->dma_ops->dma_end(drive);
1241 ret = ide_error(drive, "dma timeout error", 1242 ret = ide_error(drive, "dma timeout error",
1242 ide_read_status(drive)); 1243 ide_read_status(drive));
1243 } else { 1244 } else {
1244 printk(KERN_WARNING "%s: DMA timeout retry\n", drive->name); 1245 printk(KERN_WARNING "%s: DMA timeout retry\n", drive->name);
1245 hwif->dma_timeout(drive); 1246 hwif->dma_ops->dma_timeout(drive);
1246 } 1247 }
1247 1248
1248 /* 1249 /*
@@ -1354,7 +1355,7 @@ void ide_timer_expiry (unsigned long data)
1354 startstop = handler(drive); 1355 startstop = handler(drive);
1355 } else if (drive_is_ready(drive)) { 1356 } else if (drive_is_ready(drive)) {
1356 if (drive->waiting_for_dma) 1357 if (drive->waiting_for_dma)
1357 hwgroup->hwif->dma_lost_irq(drive); 1358 hwif->dma_ops->dma_lost_irq(drive);
1358 (void)ide_ack_intr(hwif); 1359 (void)ide_ack_intr(hwif);
1359 printk(KERN_WARNING "%s: lost interrupt\n", drive->name); 1360 printk(KERN_WARNING "%s: lost interrupt\n", drive->name);
1360 startstop = handler(drive); 1361 startstop = handler(drive);