aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging/comedi/drivers/pcl724.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/comedi/drivers/pcl724.c')
-rw-r--r--drivers/staging/comedi/drivers/pcl724.c37
1 files changed, 10 insertions, 27 deletions
diff --git a/drivers/staging/comedi/drivers/pcl724.c b/drivers/staging/comedi/drivers/pcl724.c
index 7b3c4293c01..4f033d88eec 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[] = {