staging: comedi: adv_pci1723: fix initial dio subdevice state and io_bits
authorH Hartley Sweeten <hartleys@visionengravers.com>
Sat, 18 Aug 2012 01:17:38 +0000 (18:17 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 4 Sep 2012 18:20:33 +0000 (11:20 -0700)
The initial state and io_bits for the dio subdevice is determined in
the pci1723_attach() but it's being saved in the wrong subdevice. Move
the code so it gets saved correctly.

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

index a790bb75c1c8ae7ff20983cee694c94a7c9917c2..68ca0756ae80125b3f1e1a3dcd432800c8b90b04 100644 (file)
@@ -350,6 +350,21 @@ static int pci1723_attach(struct comedi_device *dev,
                s->insn_write = pci1723_ao_write_winsn;
                s->insn_read = pci1723_insn_read_ao;
 
+               subdev++;
+       }
+
+       if (this_board->n_diochan) {
+               s = dev->subdevices + subdev;
+               s->type = COMEDI_SUBD_DIO;
+               s->subdev_flags =
+                   SDF_READABLE | SDF_WRITABLE | SDF_GROUND | SDF_COMMON;
+               s->n_chan = this_board->n_diochan;
+               s->maxdata = 1;
+               s->len_chanlist = this_board->n_diochan;
+               s->range_table = &range_digital;
+               s->insn_config = pci1723_dio_insn_config;
+               s->insn_bits = pci1723_dio_insn_bits;
+
                /* read DIO config */
                switch (inw(dev->iobase + PCI1723_DIGITAL_IO_PORT_MODE)
                                                                       & 0x03) {
@@ -372,20 +387,6 @@ static int pci1723_attach(struct comedi_device *dev,
                subdev++;
        }
 
-       if (this_board->n_diochan) {
-               s = dev->subdevices + subdev;
-               s->type = COMEDI_SUBD_DIO;
-               s->subdev_flags =
-                   SDF_READABLE | SDF_WRITABLE | SDF_GROUND | SDF_COMMON;
-               s->n_chan = this_board->n_diochan;
-               s->maxdata = 1;
-               s->len_chanlist = this_board->n_diochan;
-               s->range_table = &range_digital;
-               s->insn_config = pci1723_dio_insn_config;
-               s->insn_bits = pci1723_dio_insn_bits;
-               subdev++;
-       }
-
        devpriv->valid = 1;
 
        pci1723_reset(dev);