diff options
Diffstat (limited to 'drivers/staging/comedi/drivers/pcmad.c')
-rw-r--r-- | drivers/staging/comedi/drivers/pcmad.c | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/drivers/staging/comedi/drivers/pcmad.c b/drivers/staging/comedi/drivers/pcmad.c index 13e84215fac3..b7c932e152e0 100644 --- a/drivers/staging/comedi/drivers/pcmad.c +++ b/drivers/staging/comedi/drivers/pcmad.c @@ -105,18 +105,12 @@ static int pcmad_attach(struct comedi_device *dev, struct comedi_devconfig *it) { const struct pcmad_board_struct *board = comedi_board(dev); struct pcmad_priv_struct *devpriv; - int ret; struct comedi_subdevice *s; - unsigned long iobase; + int ret; - iobase = it->options[0]; - printk(KERN_INFO "comedi%d: pcmad: 0x%04lx ", dev->minor, iobase); - if (!request_region(iobase, PCMAD_SIZE, "pcmad")) { - printk(KERN_CONT "I/O port conflict\n"); - return -EIO; - } - printk(KERN_CONT "\n"); - dev->iobase = iobase; + ret = comedi_request_region(dev, it->options[0], PCMAD_SIZE); + if (ret) + return ret; ret = comedi_alloc_subdevices(dev, 1); if (ret) @@ -127,8 +121,6 @@ static int pcmad_attach(struct comedi_device *dev, struct comedi_devconfig *it) return -ENOMEM; dev->private = devpriv; - dev->board_name = board->name; - s = &dev->subdevices[0]; s->type = COMEDI_SUBD_AI; s->subdev_flags = SDF_READABLE | AREF_GROUND; @@ -141,14 +133,6 @@ static int pcmad_attach(struct comedi_device *dev, struct comedi_devconfig *it) return 0; } -static void pcmad_detach(struct comedi_device *dev) -{ - if (dev->irq) - free_irq(dev->irq, dev); - if (dev->iobase) - release_region(dev->iobase, PCMAD_SIZE); -} - static const struct pcmad_board_struct pcmad_boards[] = { { .name = "pcmad12", @@ -162,7 +146,7 @@ static struct comedi_driver pcmad_driver = { .driver_name = "pcmad", .module = THIS_MODULE, .attach = pcmad_attach, - .detach = pcmad_detach, + .detach = comedi_legacy_detach, .board_name = &pcmad_boards[0].name, .num_names = ARRAY_SIZE(pcmad_boards), .offset = sizeof(pcmad_boards[0]), |