summaryrefslogtreecommitdiff
path: root/drivers/staging/comedi/drivers/ni_atmio16d.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/comedi/drivers/ni_atmio16d.c')
-rw-r--r--drivers/staging/comedi/drivers/ni_atmio16d.c30
1 files changed, 6 insertions, 24 deletions
diff --git a/drivers/staging/comedi/drivers/ni_atmio16d.c b/drivers/staging/comedi/drivers/ni_atmio16d.c
index 4a17494f55ed..6c97a0925aad 100644
--- a/drivers/staging/comedi/drivers/ni_atmio16d.c
+++ b/drivers/staging/comedi/drivers/ni_atmio16d.c
@@ -638,22 +638,13 @@ static int atmio16d_attach(struct comedi_device *dev,
{
const struct atmio16_board_t *board = comedi_board(dev);
struct atmio16d_private *devpriv;
+ struct comedi_subdevice *s;
unsigned int irq;
- unsigned long iobase;
int ret;
- struct comedi_subdevice *s;
-
- /* make sure the address range is free and allocate it */
- iobase = it->options[0];
- printk(KERN_INFO "comedi%d: atmio16d: 0x%04lx ", dev->minor, iobase);
- if (!request_region(iobase, ATMIO16D_SIZE, "ni_atmio16d")) {
- printk("I/O port conflict\n");
- return -EIO;
- }
- dev->iobase = iobase;
-
- dev->board_name = board->name;
+ ret = comedi_request_region(dev, it->options[0], ATMIO16D_SIZE);
+ if (ret)
+ return ret;
ret = comedi_alloc_subdevices(dev, 4);
if (ret)
@@ -776,18 +767,9 @@ static int atmio16d_attach(struct comedi_device *dev,
static void atmio16d_detach(struct comedi_device *dev)
{
- const struct atmio16_board_t *board = comedi_board(dev);
- struct comedi_subdevice *s;
-
- if (dev->subdevices && board->has_8255) {
- s = &dev->subdevices[3];
- subdev_8255_cleanup(dev, s);
- }
- if (dev->irq)
- free_irq(dev->irq, dev);
+ comedi_spriv_free(dev, 3);
reset_atmio16d(dev);
- if (dev->iobase)
- release_region(dev->iobase, ATMIO16D_SIZE);
+ comedi_legacy_detach(dev);
}
static const struct atmio16_board_t atmio16_boards[] = {