diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-10-13 15:39:42 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-10-13 15:39:42 -0400 |
commit | bfa7d8e55f0c5ae22ef57eb22942c74fdde7b9bd (patch) | |
tree | 2e21bf3c435a6a6646dd720652e33f0aacdb7b85 /drivers/ide/ide-io.c | |
parent | a9ab09e26055a76295548ca36ec00de2f4367d32 (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.c | 15 |
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 |