]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/staging/comedi/drivers/s626.c
staging: comedi_pci: make comedi_pci_disable() safe to call
[karo-tx-linux.git] / drivers / staging / comedi / drivers / s626.c
index 6dc1d281286550fd8ace7b748b365ac38b219b34..92338791f4a255bc743c62c8ab6eba496a9322f7 100644 (file)
@@ -64,6 +64,7 @@ INSN_CONFIG instructions:
    comedi_do_insn(cf,&insn); //executing configuration
 */
 
+#include <linux/pci.h>
 #include <linux/interrupt.h>
 #include <linux/kernel.h>
 #include <linux/types.h>
@@ -2789,7 +2790,6 @@ static int s626_auto_attach(struct comedi_device *dev,
 
 static void s626_detach(struct comedi_device *dev)
 {
-       struct pci_dev *pcidev = comedi_to_pci_dev(dev);
        struct s626_private *devpriv = dev->private;
 
        if (devpriv) {
@@ -2817,10 +2817,7 @@ static void s626_detach(struct comedi_device *dev)
                if (devpriv->base_addr)
                        iounmap(devpriv->base_addr);
        }
-       if (pcidev) {
-               if (dev->iobase)
-                       comedi_pci_disable(pcidev);
-       }
+       comedi_pci_disable(dev);
 }
 
 static struct comedi_driver s626_driver = {
@@ -2831,14 +2828,9 @@ static struct comedi_driver s626_driver = {
 };
 
 static int s626_pci_probe(struct pci_dev *dev,
-                                   const struct pci_device_id *ent)
-{
-       return comedi_pci_auto_config(dev, &s626_driver);
-}
-
-static void s626_pci_remove(struct pci_dev *dev)
+                         const struct pci_device_id *id)
 {
-       comedi_pci_auto_unconfig(dev);
+       return comedi_pci_auto_config(dev, &s626_driver, id->driver_data);
 }
 
 /*
@@ -2857,7 +2849,7 @@ static struct pci_driver s626_pci_driver = {
        .name           = "s626",
        .id_table       = s626_pci_table,
        .probe          = s626_pci_probe,
-       .remove         = s626_pci_remove,
+       .remove         = comedi_pci_auto_unconfig,
 };
 module_comedi_pci_driver(s626_driver, s626_pci_driver);