aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-04-22 18:34:54 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-04-23 10:41:40 -0700
commit77630119ba0d64ddbe1c839adfd05483d403a0ac (patch)
tree83409ea58b3bd2eaf1616d0977cbc09ac0b02065 /drivers/staging
parent2bc405831d5bd83f263c2a0eac915ba5292d4cbe (diff)
staging: comedi: das800: interrupts are required for async command support
Interrupt support is optional with this driver. Only hook up the async command support for the analog input subdevice if the user requested an interrupt when attaching to the board. This also allows removing the extra test in das800_ai_do_cmd(). For aesthetic reasons, add some whitespace to the subdevice init. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/comedi/drivers/das800.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/drivers/staging/comedi/drivers/das800.c b/drivers/staging/comedi/drivers/das800.c
index 3711f81321d..78e913e3dfe 100644
--- a/drivers/staging/comedi/drivers/das800.c
+++ b/drivers/staging/comedi/drivers/das800.c
@@ -412,12 +412,6 @@ static int das800_ai_do_cmd(struct comedi_device *dev,
unsigned long irq_flags;
struct comedi_async *async = s->async;
- if (!dev->irq) {
- comedi_error(dev,
- "no irq assigned for das-800, cannot do hardware conversions");
- return -1;
- }
-
disable_das800(dev);
/* set channel scan limits */
@@ -767,16 +761,19 @@ static int das800_attach(struct comedi_device *dev, struct comedi_devconfig *it)
/* analog input subdevice */
s = &dev->subdevices[0];
dev->read_subdev = s;
- s->type = COMEDI_SUBD_AI;
- s->subdev_flags = SDF_READABLE | SDF_GROUND | SDF_CMD_READ;
- s->n_chan = 8;
- s->len_chanlist = 8;
- s->maxdata = (1 << thisboard->resolution) - 1;
- s->range_table = thisboard->ai_range;
- s->do_cmd = das800_ai_do_cmd;
- s->do_cmdtest = das800_ai_do_cmdtest;
- s->insn_read = das800_ai_rinsn;
- s->cancel = das800_cancel;
+ s->type = COMEDI_SUBD_AI;
+ s->subdev_flags = SDF_READABLE | SDF_GROUND;
+ s->n_chan = 8;
+ s->maxdata = (1 << thisboard->resolution) - 1;
+ s->range_table = thisboard->ai_range;
+ s->insn_read = das800_ai_rinsn;
+ if (dev->irq) {
+ s->subdev_flags |= SDF_CMD_READ;
+ s->len_chanlist = 8;
+ s->do_cmdtest = das800_ai_do_cmdtest;
+ s->do_cmd = das800_ai_do_cmd;
+ s->cancel = das800_cancel;
+ }
/* di */
s = &dev->subdevices[1];