OSDN Git Service

staging: comedi: adv_pci1710: only init async command members when needed
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Thu, 5 Dec 2013 20:43:35 +0000 (13:43 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 6 Dec 2013 21:07:16 +0000 (13:07 -0800)
The 'len_chanlist' and 'cancel' members of the comedi_subdevice are
only used with async command support. Only initialize them if the irq
was sucessfully requested.

Also, only init the dev->read_subdev if we have the irq.

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>
drivers/staging/comedi/drivers/adv_pci1710.c

index a1519c9..69ab2a6 100644 (file)
@@ -1264,21 +1264,21 @@ static int pci1710_auto_attach(struct comedi_device *dev,
 
        if (this_board->n_aichan) {
                s = &dev->subdevices[subdev];
-               dev->read_subdev = s;
                s->type = COMEDI_SUBD_AI;
                s->subdev_flags = SDF_READABLE | SDF_COMMON | SDF_GROUND;
                if (this_board->n_aichand)
                        s->subdev_flags |= SDF_DIFF;
                s->n_chan = this_board->n_aichan;
                s->maxdata = this_board->ai_maxdata;
-               s->len_chanlist = this_board->n_aichan;
                s->range_table = this_board->rangelist_ai;
-               s->cancel = pci171x_ai_cancel;
                s->insn_read = pci171x_insn_read_ai;
                if (dev->irq) {
+                       dev->read_subdev = s;
                        s->subdev_flags |= SDF_CMD_READ;
+                       s->len_chanlist = s->n_chan;
                        s->do_cmdtest = pci171x_ai_cmdtest;
                        s->do_cmd = pci171x_ai_cmd;
+                       s->cancel = pci171x_ai_cancel;
                }
                devpriv->i8254_osc_base = I8254_OSC_BASE_10MHZ;
                subdev++;