]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/staging/comedi/drivers/amplc_pc236.c
staging: comedi_pci: make comedi_pci_disable() safe to call
[karo-tx-linux.git] / drivers / staging / comedi / drivers / amplc_pc236.c
index 28983541957787683201d1f46da984ebc3a07d58..45168488503d9691d59fa8adae93a4101eb2e1ee 100644 (file)
@@ -52,6 +52,7 @@ the IRQ jumper.  If no interrupt is connected, then subdevice 1 is
 unused.
 */
 
+#include <linux/pci.h>
 #include <linux/interrupt.h>
 
 #include "../comedidev.h"
@@ -575,11 +576,9 @@ static void pc236_detach(struct comedi_device *dev)
                        release_region(dev->iobase, PC236_IO_SIZE);
        } else if (is_pci_board(thisboard)) {
                struct pci_dev *pcidev = comedi_to_pci_dev(dev);
-               if (pcidev) {
-                       if (dev->iobase)
-                               comedi_pci_disable(pcidev);
+               comedi_pci_disable(dev);
+               if (pcidev)
                        pci_dev_put(pcidev);
-               }
        }
 }
 
@@ -609,21 +608,17 @@ static DEFINE_PCI_DEVICE_TABLE(pc236_pci_table) = {
 MODULE_DEVICE_TABLE(pci, pc236_pci_table);
 
 static int amplc_pc236_pci_probe(struct pci_dev *dev,
-                                          const struct pci_device_id *ent)
-{
-       return comedi_pci_auto_config(dev, &amplc_pc236_driver);
-}
-
-static void amplc_pc236_pci_remove(struct pci_dev *dev)
+                                const struct pci_device_id *id)
 {
-       comedi_pci_auto_unconfig(dev);
+       return comedi_pci_auto_config(dev, &amplc_pc236_driver,
+                                     id->driver_data);
 }
 
 static struct pci_driver amplc_pc236_pci_driver = {
        .name = PC236_DRIVER_NAME,
        .id_table = pc236_pci_table,
        .probe = &amplc_pc236_pci_probe,
-       .remove = &amplc_pc236_pci_remove
+       .remove         = comedi_pci_auto_unconfig,
 };
 
 module_comedi_pci_driver(amplc_pc236_driver, amplc_pc236_pci_driver);