aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-04-18 14:33:04 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-04-19 11:19:53 -0700
commite608796ab624049419e987be32f81ab08486c7ba (patch)
tree1b864e07662a4c26263ffeb78e772cf7b165253c
parent4b3fb0ff745582e2381945dc56f8f1b3e4a2c9c3 (diff)
staging: comedi: das1800: use comedi_legacy_detach()
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>
-rw-r--r--drivers/staging/comedi/drivers/das1800.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/staging/comedi/drivers/das1800.c b/drivers/staging/comedi/drivers/das1800.c
index 76762010202..4aa2c509124 100644
--- a/drivers/staging/comedi/drivers/das1800.c
+++ b/drivers/staging/comedi/drivers/das1800.c
@@ -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",