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 <[email protected]>
Cc: Ian Abbott <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
---
 drivers/staging/comedi/drivers/adv_pci1723.c | 29 ++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/drivers/staging/comedi/drivers/adv_pci1723.c 
b/drivers/staging/comedi/drivers/adv_pci1723.c
index a790bb7..68ca075 100644
--- a/drivers/staging/comedi/drivers/adv_pci1723.c
+++ b/drivers/staging/comedi/drivers/adv_pci1723.c
@@ -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);
-- 
1.7.11

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to