aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/comedi/drivers/aio_aio12_8.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/comedi/drivers/aio_aio12_8.c')
-rw-r--r--drivers/staging/comedi/drivers/aio_aio12_8.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/drivers/staging/comedi/drivers/aio_aio12_8.c b/drivers/staging/comedi/drivers/aio_aio12_8.c
index 601f03d5897f..e2dc08a058bc 100644
--- a/drivers/staging/comedi/drivers/aio_aio12_8.c
+++ b/drivers/staging/comedi/drivers/aio_aio12_8.c
@@ -200,17 +200,11 @@ static int aio_aio12_8_attach(struct comedi_device *dev,
const struct aio12_8_boardtype *board = comedi_board(dev);
struct aio12_8_private *devpriv;
struct comedi_subdevice *s;
- int iobase;
int ret;
- dev->board_name = board->name;
-
- iobase = it->options[0];
- if (!request_region(iobase, 32, dev->board_name)) {
- printk(KERN_ERR "I/O port conflict");
- return -EIO;
- }
- dev->iobase = iobase;
+ ret = comedi_request_region(dev, it->options[0], 32);
+ if (ret)
+ return ret;
devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL);
if (!devpriv)
@@ -250,8 +244,8 @@ static int aio_aio12_8_attach(struct comedi_device *dev,
s = &dev->subdevices[2];
/* 8255 Digital i/o subdevice */
- iobase = dev->iobase + AIO12_8_8255_BASE_REG;
- ret = subdev_8255_init(dev, s, NULL, iobase);
+ ret = subdev_8255_init(dev, s, NULL,
+ dev->iobase + AIO12_8_8255_BASE_REG);
if (ret)
return ret;
@@ -267,10 +261,8 @@ static int aio_aio12_8_attach(struct comedi_device *dev,
static void aio_aio12_8_detach(struct comedi_device *dev)
{
- if (dev->subdevices)
- subdev_8255_cleanup(dev, &dev->subdevices[2]);
- if (dev->iobase)
- release_region(dev->iobase, 24);
+ comedi_spriv_free(dev, 2);
+ comedi_legacy_detach(dev);
}
static struct comedi_driver aio_aio12_8_driver = {