staging: comedi: addi_apci_3xxx: stub in analog input command support
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Wed, 12 Jun 2013 23:22:33 +0000 (16:22 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 17 Jun 2013 21:33:56 +0000 (14:33 -0700)
The analog input subdevice in this driver is broken. The attach of
this driver requests the irq and sets the dev->read_subdev to the
analog input subdevice but it does not setup the subdevice to support
commands.

Stub in the command support functions so we can fix the subdevice.

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/addi_apci_3xxx.c

index dbb35c7..77f0c45 100644 (file)
@@ -392,6 +392,25 @@ static irqreturn_t apci3xxx_irq_handler(int irq, void *d)
        return IRQ_RETVAL(1);
 }
 
+static int apci3xxx_ai_cmdtest(struct comedi_device *dev,
+                              struct comedi_subdevice *s,
+                              struct comedi_cmd *cmd)
+{
+       return 0;
+}
+
+static int apci3xxx_ai_cmd(struct comedi_device *dev,
+                          struct comedi_subdevice *s)
+{
+       return 0;
+}
+
+static int apci3xxx_ai_cancel(struct comedi_device *dev,
+                             struct comedi_subdevice *s)
+{
+       return 0;
+}
+
 static int apci3xxx_ao_insn_write(struct comedi_device *dev,
                                  struct comedi_subdevice *s,
                                  struct comedi_insn *insn,
@@ -600,7 +619,6 @@ static int apci3xxx_auto_attach(struct comedi_device *dev,
        /* Analog Input subdevice */
        s = &dev->subdevices[0];
        if (board->ai_n_chan) {
-               dev->read_subdev = s;
                s->type         = COMEDI_SUBD_AI;
                s->subdev_flags = SDF_READABLE | board->ai_subdev_flags;
                s->n_chan       = board->ai_n_chan;
@@ -609,7 +627,13 @@ static int apci3xxx_auto_attach(struct comedi_device *dev,
                s->range_table  = &apci3xxx_ai_range;
                s->insn_config  = apci3xxx_ai_insn_config;
                s->insn_read    = apci3xxx_ai_insn_read;
-
+               if (dev->irq) {
+                       dev->read_subdev = s;
+                       s->subdev_flags |= SDF_CMD_READ;
+                       s->do_cmdtest   = apci3xxx_ai_cmdtest;
+                       s->do_cmd       = apci3xxx_ai_cmd;
+                       s->cancel       = apci3xxx_ai_cancel;
+               }
        } else {
                s->type = COMEDI_SUBD_UNUSED;
        }