siimage: implement test_irq() method
authorSergei Shtylyov <sshtylyov@ru.mvista.com>
Mon, 15 Jun 2009 16:53:00 +0000 (18:53 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Mon, 15 Jun 2009 16:53:00 +0000 (18:53 +0200)
Implement test_irq() method based on the driver's former dma_test_irq() methods.

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/siimage.c

index af4fe7c..d95df52 100644 (file)
@@ -338,6 +338,16 @@ static void sil_set_dma_mode(ide_drive_t *drive, const u8 speed)
        sil_iowrite16(dev, ultra, ua);
 }
 
+static int sil_test_irq(ide_hwif_t *hwif)
+{
+       struct pci_dev *dev     = to_pci_dev(hwif->dev);
+       unsigned long addr      = siimage_selreg(hwif, 1);
+       u8 val                  = sil_ioread8(dev, addr);
+
+       /* Return 1 if INTRQ asserted */
+       return (val & 8) ? 1 : 0;
+}
+
 /**
  *     siimage_mmio_dma_test_irq       -       check we caused an IRQ
  *     @drive: drive we are testing
@@ -670,6 +680,7 @@ static const struct ide_port_ops sil_pata_port_ops = {
        .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,
 };
@@ -680,6 +691,7 @@ static const struct ide_port_ops sil_sata_port_ops = {
        .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,
 };