]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
staging: comedi: das1800: use comedi_legacy_detach()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Thu, 18 Apr 2013 21:33:04 +0000 (14:33 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Apr 2013 18:19:53 +0000 (11:19 -0700)
Use the new comedi_legacy_detach() helper in the (*detach) to release
the first I/O region requested by this driver.

An additional I/O region is requested for some of the boards this driver
supports. The iobase for that region is stored in the private data so
that the (*detach) knows it needs to be released. Remove the extra
cleanup in the (*attach) that releases the first region.

For aesthetics, move the release of the additional region in the
(*detach) so it follows the (*attach) order.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/das1800.c

index 7676201020290d8c599ad21bca27a45f0608a4d7..4aa2c509124d562b24e9bfd6fcb65bf1943feb1c 100644 (file)
@@ -1541,11 +1541,8 @@ static int das1800_attach(struct comedi_device *dev,
                unsigned long iobase2 = dev->iobase + IOBASE2;
 
                ret = __comedi_request_region(dev, iobase2, DAS1800_SIZE);
-               if (ret) {
-                       release_region(dev->iobase, DAS1800_SIZE);
-                       dev->iobase = 0;
-                       return -EIO;
-               }
+               if (ret)
+                       return ret;
                devpriv->iobase2 = iobase2;
        }
 
@@ -1671,21 +1668,20 @@ static void das1800_detach(struct comedi_device *dev)
 {
        struct das1800_private *devpriv = dev->private;
 
-       if (dev->iobase)
-               release_region(dev->iobase, DAS1800_SIZE);
        if (dev->irq)
                free_irq(dev->irq, dev);
        if (devpriv) {
-               if (devpriv->iobase2)
-                       release_region(devpriv->iobase2, DAS1800_SIZE);
                if (devpriv->dma0)
                        free_dma(devpriv->dma0);
                if (devpriv->dma1)
                        free_dma(devpriv->dma1);
                kfree(devpriv->ai_buf0);
                kfree(devpriv->ai_buf1);
+               if (devpriv->iobase2)
+                       release_region(devpriv->iobase2, DAS1800_SIZE);
        }
-};
+       comedi_legacy_detach(dev);
+}
 
 static struct comedi_driver das1800_driver = {
        .driver_name    = "das1800",