]> err.no Git - linux-2.6/blobdiff - drivers/scsi/ahci.c
[PATCH] libata: replace pci_module_init() with pci_register_driver()
[linux-2.6] / drivers / scsi / ahci.c
index 909a4dc79d08f4a8aa3a3afe7411d978c2e584ea..813031c01fbaec9028b91bed5dd1cf8710959ee7 100644 (file)
@@ -362,6 +362,14 @@ static const struct pci_device_id ahci_pci_tbl[] = {
        { PCI_VENDOR_ID_NVIDIA, 0x044f, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
          board_ahci },         /* MCP65 */
 
+       /* SiS */
+       { PCI_VENDOR_ID_SI, 0x1184, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* SiS 966 */
+       { PCI_VENDOR_ID_SI, 0x1185, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* SiS 966 */
+       { PCI_VENDOR_ID_SI, 0x0186, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+         board_ahci }, /* SiS 968 */
+
        { }     /* terminate list */
 };
 
@@ -654,14 +662,13 @@ static void ahci_init_controller(void __iomem *mmio, struct pci_dev *pdev,
                VPRINTK("PORT_SCR_ERR 0x%x\n", tmp);
                writel(tmp, port_mmio + PORT_SCR_ERR);
 
-               /* clear & turn off port IRQ */
+               /* clear port IRQ */
                tmp = readl(port_mmio + PORT_IRQ_STAT);
                VPRINTK("PORT_IRQ_STAT 0x%x\n", tmp);
                if (tmp)
                        writel(tmp, port_mmio + PORT_IRQ_STAT);
 
                writel(1 << i, mmio + HOST_IRQ_STAT);
-               writel(0, port_mmio + PORT_IRQ_MASK);
        }
 
        tmp = readl(mmio + HOST_CTL);
@@ -1068,14 +1075,8 @@ static void ahci_host_intr(struct ata_port *ap)
                return;
 
        /* ignore interim PIO setup fis interrupts */
-       if (ata_tag_valid(ap->active_tag)) {
-               struct ata_queued_cmd *qc =
-                       ata_qc_from_tag(ap, ap->active_tag);
-
-               if (qc && qc->tf.protocol == ATA_PROT_PIO &&
-                   (status & PORT_IRQ_PIOS_FIS))
-                       return;
-       }
+       if (ata_tag_valid(ap->active_tag) && (status & PORT_IRQ_PIOS_FIS)) 
+               return;
 
        if (ata_ratelimit())
                ata_port_printk(ap, KERN_INFO, "spurious interrupt "
@@ -1664,7 +1665,7 @@ static void ahci_remove_one (struct pci_dev *pdev)
 
 static int __init ahci_init(void)
 {
-       return pci_module_init(&ahci_pci_driver);
+       return pci_register_driver(&ahci_pci_driver);
 }
 
 static void __exit ahci_exit(void)