fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / scsi / aic7xxx / aic7xxx_osm_pci.c
index cb30d9c..ea5687d 100644 (file)
@@ -130,7 +130,7 @@ static struct pci_device_id ahc_linux_pci_id_table[] = {
 
 MODULE_DEVICE_TABLE(pci, ahc_linux_pci_id_table);
 
-struct pci_driver aic7xxx_pci_driver = {
+static struct pci_driver aic7xxx_pci_driver = {
        .name           = "aic7xxx",
        .probe          = ahc_linux_pci_dev_probe,
        .remove         = ahc_linux_pci_dev_remove,
@@ -219,6 +219,7 @@ ahc_linux_pci_dev_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
                ahc->flags |= AHC_39BIT_ADDRESSING;
        } else {
                if (dma_set_mask(dev, DMA_32BIT_MASK)) {
+                       ahc_free(ahc);
                        printk(KERN_WARNING "aic7xxx: No suitable DMA available.\n");
                        return (-ENODEV);
                }
@@ -245,8 +246,7 @@ ahc_linux_pci_dev_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 int
 ahc_linux_pci_init(void)
 {
-       /* Translate error or zero return into zero or one */
-       return pci_module_init(&aic7xxx_pci_driver) ? 0 : 1;
+       return pci_register_driver(&aic7xxx_pci_driver);
 }
 
 void
@@ -374,7 +374,7 @@ ahc_pci_map_int(struct ahc_softc *ahc)
        int error;
 
        error = request_irq(ahc->dev_softc->irq, ahc_linux_isr,
-                           SA_SHIRQ, "aic7xxx", ahc);
+                           IRQF_SHARED, "aic7xxx", ahc);
        if (error == 0)
                ahc->platform_data->irq = ahc->dev_softc->irq;