]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
staging: comedi: ni_labpc: fix command support with analog input subdevice
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Fri, 22 Mar 2013 16:43:45 +0000 (09:43 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Mar 2013 18:41:51 +0000 (11:41 -0700)
An interrupt is required for command support to work with the
analog input subdevice. When used with the ISA driver, enabling
the interrupt is optional. Fix the subdevice init so that command
support is only enabled if the irq is available.

Add some whitespace to the subdevice init. Change the 'maxdata'
value to hex as this is more common in comedi drivers.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/ni_labpc.c

index b6bfb2b626a8e55f04ec5aa41af58599ad2d2540..ef9a206068fd66ad7083a66ad5b62728cbeb49ac 100644 (file)
@@ -1758,18 +1758,20 @@ int labpc_common_attach(struct comedi_device *dev, unsigned long iobase,
 
        /* analog input subdevice */
        s = &dev->subdevices[0];
-       dev->read_subdev = s;
-       s->type = COMEDI_SUBD_AI;
-       s->subdev_flags =
-           SDF_READABLE | SDF_GROUND | SDF_COMMON | SDF_DIFF | SDF_CMD_READ;
-       s->n_chan = 8;
-       s->len_chanlist = 8;
-       s->maxdata = (1 << 12) - 1;     /* 12 bit resolution */
-       s->range_table = board->ai_range_table;
-       s->do_cmd = labpc_ai_cmd;
-       s->do_cmdtest = labpc_ai_cmdtest;
-       s->insn_read = labpc_ai_insn_read;
-       s->cancel = labpc_cancel;
+       s->type         = COMEDI_SUBD_AI;
+       s->subdev_flags = SDF_READABLE | SDF_GROUND | SDF_COMMON | SDF_DIFF;
+       s->n_chan       = 8;
+       s->len_chanlist = 8;
+       s->maxdata      = 0x0fff;
+       s->range_table  = board->ai_range_table;
+       s->insn_read    = labpc_ai_insn_read;
+       if (dev->irq) {
+               dev->read_subdev = s;
+               s->subdev_flags |= SDF_CMD_READ;
+               s->do_cmd       = labpc_ai_cmd;
+               s->do_cmdtest   = labpc_ai_cmdtest;
+               s->cancel       = labpc_cancel;
+       }
 
        /* analog output */
        s = &dev->subdevices[1];