staging: comedi: drivers: free_irq() in comedi_legacy_detach()
[cascardo/linux.git] / drivers / staging / comedi / drivers / das6402.c
index 2efddb8..11424fb 100644 (file)
@@ -284,23 +284,12 @@ static int das6402_attach(struct comedi_device *dev,
 {
        struct das6402_private *devpriv;
        unsigned int irq;
-       unsigned long iobase;
        int ret;
        struct comedi_subdevice *s;
 
-       dev->board_name = "das6402";
-
-       iobase = it->options[0];
-       if (iobase == 0)
-               iobase = 0x300;
-
-       if (!request_region(iobase, DAS6402_SIZE, "das6402")) {
-               dev_err(dev->class_dev, "I/O port conflict\n");
-               return -EIO;
-       }
-       dev->iobase = iobase;
-
-       /* should do a probe here */
+       ret = comedi_request_region(dev, it->options[0], DAS6402_SIZE);
+       if (ret)
+               return ret;
 
        irq = it->options[0];
        dev_dbg(dev->class_dev, "( irq = %u )\n", irq);
@@ -335,19 +324,11 @@ static int das6402_attach(struct comedi_device *dev,
        return 0;
 }
 
-static void das6402_detach(struct comedi_device *dev)
-{
-       if (dev->irq)
-               free_irq(dev->irq, dev);
-       if (dev->iobase)
-               release_region(dev->iobase, DAS6402_SIZE);
-}
-
 static struct comedi_driver das6402_driver = {
        .driver_name    = "das6402",
        .module         = THIS_MODULE,
        .attach         = das6402_attach,
-       .detach         = das6402_detach,
+       .detach         = comedi_legacy_detach,
 };
 module_comedi_driver(das6402_driver)