aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-io.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-10-13 15:39:42 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-10-13 15:39:42 -0400
commitbfa7d8e55f0c5ae22ef57eb22942c74fdde7b9bd (patch)
tree2e21bf3c435a6a6646dd720652e33f0aacdb7b85 /drivers/ide/ide-io.c
parenta9ab09e26055a76295548ca36ec00de2f4367d32 (diff)
ide: ->ide_dma_clear_irq() -> ->clear_irq()
* Rename ->ide_dma_clear_irq method to ->clear_irq and move it from ide_hwif_t to struct ide_port_ops. * Move ->waiting_for_dma check inside ->clear_irq method. * Move ->dma_base check inside ->clear_irq method. piix.c: * Add ich_port_ops and remove init_hwif_ich() wrapper. There should be no functional changes caused by this patch. Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/ide-io.c')
-rw-r--r--drivers/ide/ide-io.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index ec709269c066..d0579f1abddd 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -1418,23 +1418,16 @@ irqreturn_t ide_intr (int irq, void *dev_id)
1418 del_timer(&hwgroup->timer); 1418 del_timer(&hwgroup->timer);
1419 spin_unlock(&ide_lock); 1419 spin_unlock(&ide_lock);
1420 1420
1421 /* Some controllers might set DMA INTR no matter DMA or PIO; 1421 if (hwif->port_ops && hwif->port_ops->clear_irq)
1422 * bmdma status might need to be cleared even for 1422 hwif->port_ops->clear_irq(drive);
1423 * PIO interrupts to prevent spurious/lost irq.
1424 */
1425 if (hwif->ide_dma_clear_irq && !(drive->waiting_for_dma))
1426 /* ide_dma_end() needs bmdma status for error checking.
1427 * So, skip clearing bmdma status here and leave it
1428 * to ide_dma_end() if this is dma interrupt.
1429 */
1430 hwif->ide_dma_clear_irq(drive);
1431 1423
1432 if (drive->dev_flags & IDE_DFLAG_UNMASK) 1424 if (drive->dev_flags & IDE_DFLAG_UNMASK)
1433 local_irq_enable_in_hardirq(); 1425 local_irq_enable_in_hardirq();
1426
1434 /* service this interrupt, may set handler for next interrupt */ 1427 /* service this interrupt, may set handler for next interrupt */
1435 startstop = handler(drive); 1428 startstop = handler(drive);
1436 spin_lock_irq(&ide_lock);
1437 1429
1430 spin_lock_irq(&ide_lock);
1438 /* 1431 /*
1439 * Note that handler() may have set things up for another 1432 * Note that handler() may have set things up for another
1440 * interrupt to occur soon, but it cannot happen until 1433 * interrupt to occur soon, but it cannot happen until