staging: comedi: adl_pci9118: don't reset digital outputs
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Fri, 5 Sep 2014 16:25:36 +0000 (09:25 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 8 Sep 2014 20:56:07 +0000 (13:56 -0700)
Currently this driver resets the digital output channels to a low state
when the driver is attached and detached.

Since the digital output state can be read, initialize the subdevice
state when the driver is attached and don't reset them.

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

index a9fd34306676a8dfee70bbb08b528a5d94073b68..c758a467aad4c5bc3c64a0313d4591b87796c8b2 100644 (file)
@@ -1706,7 +1706,6 @@ static int pci9118_reset(struct comedi_device *dev)
        outl(devpriv->ao_data[0], dev->iobase + PCI9118_AO_REG(0));
        outl(devpriv->ao_data[1], dev->iobase + PCI9118_AO_REG(1));
 
-       outl(0, dev->iobase + PCI9118_DIO_REG); /* reset digi outs to L */
        udelay(10);
        inl(dev->iobase + PCI9118_AI_FIFO_REG);
        pci9118_ai_reset_fifo(dev);
@@ -1907,6 +1906,9 @@ static int pci9118_common_attach(struct comedi_device *dev, int disable_irq,
        s->range_table  = &range_digital;
        s->insn_bits    = pci9118_do_insn_bits;
 
+       /* get the current state of the digital outputs */
+       s->state = inl(dev->iobase + PCI9118_DIO_REG) >> 4;
+
        devpriv->ai_maskharderr = 0x10a;
                                        /* default measure crash condition */
        if (hw_err_mask)                /* disable some requested */
This page took 0.025194 seconds and 5 git commands to generate.