提交 b9a8bbf9 编写于 作者: H H Hartley Sweeten 提交者: Greg Kroah-Hartman

staging: comedi: pcl711: save the irq for the pcl711b only when used

Move the storing of the irq in the mode register for the pcl711b board
so it's only done when the irq is actually used by the driver.
Signed-off-by: NH Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: NIan Abbott <abbotti@mev.co.uk>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 bca757ad
......@@ -474,8 +474,12 @@ static int pcl711_attach(struct comedi_device *dev, struct comedi_devconfig *it)
{
const struct pcl711_board *board = comedi_board(dev);
struct pcl711_private *devpriv;
int ret;
struct comedi_subdevice *s;
int ret;
devpriv = comedi_alloc_devpriv(dev, sizeof(*devpriv));
if (!devpriv)
return -ENOMEM;
ret = comedi_request_region(dev, it->options[0], 0x10);
if (ret)
......@@ -484,18 +488,22 @@ static int pcl711_attach(struct comedi_device *dev, struct comedi_devconfig *it)
if (it->options[1] && it->options[1] <= board->maxirq) {
ret = request_irq(it->options[1], pcl711_interrupt, 0,
dev->board_name, dev);
if (ret == 0)
if (ret == 0) {
dev->irq = it->options[1];
/*
* The PCL711b needs the irq number in the
* mode register.
*/
if (board->is_pcl711b)
devpriv->mode = (dev->irq << 4);
}
}
ret = comedi_alloc_subdevices(dev, 4);
if (ret)
return ret;
devpriv = comedi_alloc_devpriv(dev, sizeof(*devpriv));
if (!devpriv)
return -ENOMEM;
/* Analog Input subdevice */
s = &dev->subdevices[0];
s->type = COMEDI_SUBD_AI;
......@@ -540,13 +548,6 @@ static int pcl711_attach(struct comedi_device *dev, struct comedi_devconfig *it)
s->range_table = &range_digital;
s->insn_bits = pcl711_do_insn_bits;
/*
this is the "base value" for the mode register, which is
used for the irq on the PCL711
*/
if (board->is_pcl711b)
devpriv->mode = (dev->irq << 4);
/* clear DAC */
outb(0, dev->iobase + PCL711_DA0_LO);
outb(0, dev->iobase + PCL711_DA0_HI);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册