Implement test_irq() method. Remove interrupt bit test (not trusted anyway) from siimage_io_dma_test_irq() and siimage_mmio_dma_test_irq(); this allows to replace the former function with now identical ide_dma_test_irq()... Signed-off-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> --- The patch is atop of ide-2.6.git 'for-next' branch. drivers/ide/siimage.c | 26 +++++++------------------- 1 files changed, 7 insertions(+), 19 deletions(-) Index: ide-2.6/drivers/ide/siimage.c =================================================================== --- ide-2.6.orig/drivers/ide/siimage.c +++ ide-2.6/drivers/ide/siimage.c @@ -337,24 +337,14 @@ static void sil_set_dma_mode(ide_drive_t sil_iowrite16(dev, ultra, ua); } -/* returns 1 if dma irq issued, 0 otherwise */ -static int siimage_io_dma_test_irq(ide_drive_t *drive) +static int sil_test_irq(ide_hwif_t *hwif) { - ide_hwif_t *hwif = drive->hwif; struct pci_dev *dev = to_pci_dev(hwif->dev); - u8 dma_altstat = 0; unsigned long addr = siimage_selreg(hwif, 1); + u8 val = sil_ioread8(dev, addr); - /* return 1 if INTR asserted */ - if (inb(hwif->dma_base + ATA_DMA_STATUS) & 4) - return 1; - - /* return 1 if Device INTR asserted */ - pci_read_config_byte(dev, addr, &dma_altstat); - if (dma_altstat & 8) - return 0; /* return 1; */ - - return 0; + /* Return 1 if INTRQ asserted */ + return (val & 8) ? 1 : 0; } /** @@ -397,10 +387,6 @@ static int siimage_mmio_dma_test_irq(ide if (readb((void __iomem *)(hwif->dma_base + ATA_DMA_STATUS)) & 4) return 1; - /* return 1 if Device INTR asserted */ - if (readb((void __iomem *)addr) & 8) - return 0; /* return 1; */ - return 0; } @@ -409,7 +395,7 @@ static int siimage_dma_test_irq(ide_driv if (drive->hwif->host_flags & IDE_HFLAG_MMIO) return siimage_mmio_dma_test_irq(drive); else - return siimage_io_dma_test_irq(drive); + return ide_dma_test_irq(drive); } /** @@ -694,6 +680,7 @@ static const struct ide_port_ops sil_pat .set_pio_mode = sil_set_pio_mode, .set_dma_mode = sil_set_dma_mode, .quirkproc = sil_quirkproc, + .test_irq = sil_test_irq, .udma_filter = sil_pata_udma_filter, .cable_detect = sil_cable_detect, }; @@ -704,6 +691,7 @@ static const struct ide_port_ops sil_sat .reset_poll = sil_sata_reset_poll, .pre_reset = sil_sata_pre_reset, .quirkproc = sil_quirkproc, + .test_irq = sil_test_irq, .udma_filter = sil_sata_udma_filter, .cable_detect = sil_cable_detect, }; -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html