diff options
Diffstat (limited to 'drivers/staging/comedi/drivers/pcl724.c')
-rw-r--r-- | drivers/staging/comedi/drivers/pcl724.c | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/drivers/staging/comedi/drivers/pcl724.c b/drivers/staging/comedi/drivers/pcl724.c index 7b3c4293c01b..4f033d88eeca 100644 --- a/drivers/staging/comedi/drivers/pcl724.c +++ b/drivers/staging/comedi/drivers/pcl724.c @@ -100,28 +100,19 @@ static int pcl724_attach(struct comedi_device *dev, struct comedi_devconfig *it) { const struct pcl724_board *board = comedi_board(dev); struct comedi_subdevice *s; - unsigned long iobase; unsigned int iorange; int ret, i, n_subdevices; #ifdef PCL724_IRQ unsigned int irq; #endif - iobase = it->options[0]; iorange = board->io_range; - if ((board->can_have96) && ((it->options[1] == 1) - || (it->options[1] == 96))) + if ((board->can_have96) && + ((it->options[1] == 1) || (it->options[1] == 96))) iorange = PCL722_96_SIZE; /* PCL-724 in 96 DIO configuration */ - printk(KERN_INFO "comedi%d: pcl724: board=%s, 0x%03lx ", dev->minor, - board->name, iobase); - if (!request_region(iobase, iorange, "pcl724")) { - printk("I/O port conflict\n"); - return -EIO; - } - - dev->iobase = iobase; - - dev->board_name = board->name; + ret = comedi_request_region(dev, it->options[0], iorange); + if (ret) + return ret; #ifdef PCL724_IRQ irq = 0; @@ -134,8 +125,8 @@ static int pcl724_attach(struct comedi_device *dev, struct comedi_devconfig *it) "DISABLING IT", irq); irq = 0; /* Bad IRQ */ } else { - if (request_irq - (irq, interrupt_pcl724, 0, "pcl724", dev)) { + if (request_irq(irq, interrupt_pcl724, 0, + dev->board_name, dev)) { printk(KERN_WARNING ", unable to allocate IRQ %u, " "DISABLING IT", irq); @@ -178,19 +169,11 @@ static int pcl724_attach(struct comedi_device *dev, struct comedi_devconfig *it) static void pcl724_detach(struct comedi_device *dev) { - const struct pcl724_board *board = comedi_board(dev); - struct comedi_subdevice *s; int i; - for (i = 0; i < dev->n_subdevices; i++) { - s = &dev->subdevices[i]; - subdev_8255_cleanup(dev, s); - } -#ifdef PCL724_IRQ - if (dev->irq) - free_irq(dev->irq, dev); -#endif - release_region(dev->iobase, board->io_range); + for (i = 0; i < dev->n_subdevices; i++) + comedi_spriv_free(dev, i); + comedi_legacy_detach(dev); } static const struct pcl724_board boardtypes[] = { |