linux/drivers/staging/comedi
Ian Abbott 51935aeef6 staging: comedi: adl_pci7x3x: fix digital output on PCI-7230
[ Upstream commit ad83dbd974 ]

The "adl_pci7x3x" driver replaced the "adl_pci7230" and "adl_pci7432"
drivers in commits 8f567c373c ("staging: comedi: new adl_pci7x3x
driver") and 657f77d173 ("staging: comedi: remove adl_pci7230 and
adl_pci7432 drivers").  Although the new driver code agrees with the
user manuals for the respective boards, digital outputs stopped working
on the PCI-7230.  This has 16 digital output channels and the previous
adl_pci7230 driver shifted the 16 bit output state left by 16 bits
before writing to the hardware register.  The new adl_pci7x3x driver
doesn't do that.  Fix it in `adl_pci7x3x_do_insn_bits()` by checking
for the special case of the subdevice having only 16 channels and
duplicating the 16 bit output state into both halves of the 32-bit
register.  That should work both for what the board actually does and
for what the user manual says it should do.

Fixes: 8f567c373c ("staging: comedi: new adl_pci7x3x driver")
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Cc: <stable@vger.kernel.org> # 3.13+, needs backporting for 3.7 to 3.12
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2015-10-27 22:14:38 -04:00
..
drivers staging: comedi: adl_pci7x3x: fix digital output on PCI-7230 2015-10-27 22:14:38 -04:00
kcomedilib Staging: comedi: kcomedilib: replace deprecated simple_strtoul() with kstrtouint() 2014-02-15 12:42:41 -08:00
comedi.h staging: comedi: add CMDF_ROUND_... as synonyms for TRIG_ROUND_... 2014-09-08 13:50:14 -07:00
comedi_buf.c staging: comedi: migrate copyrights from "comedi_fc.c" 2014-09-19 15:55:32 -07:00
comedi_compat32.c staging: comedi: comedi_compat32.c: fix COMEDI_CMD copy back 2015-03-23 21:02:47 -04:00
comedi_compat32.h staging: comedi: comedi_compat32.h: checkpatch.pl --strict cleanup 2014-07-18 16:10:40 -07:00
comedi_fops.c staging: comedi: fix memory leak / bad pointer freeing for chanlist 2014-10-29 16:18:31 +08:00
comedi_internal.h staging: comedi: comedi_internal.h: checkpatch.pl --strict cleanup 2014-07-18 16:10:39 -07:00
comedi_pci.c staging: comedi: comedi_pci: introduce comedi_pci_detach() 2014-08-30 13:24:54 -07:00
comedi_pcmcia.c staging: comedi: remove FSF address from boilerplate text 2013-05-13 17:34:22 -04:00
comedi_usb.c staging: comedi: introduce comedi_to_usb_dev() 2013-05-21 10:59:10 -07:00
comedidev.h staging: comedi: add comedi_read_array_from_buffer() 2014-09-19 15:55:32 -07:00
comedilib.h staging: comedi: comedi_bond: handle base channel for insn_bits 2013-08-26 06:41:56 -07:00
drivers.c staging: comedi: migrate copyrights from "comedi_fc.c" 2014-09-19 15:55:32 -07:00
Kconfig staging: comedi: Kconfig: fix config COMEDI_ADDI_APCI_3120 dependants 2014-10-29 16:18:31 +08:00
Makefile staging: comedi: remove comedi_debug module parameter 2013-11-25 11:50:53 -08:00
proc.c Staging: comedi: proc: title block update 2014-03-19 04:41:04 +00:00
range.c Staging: comedi: range: remove unnecessary sanity check 2014-03-08 18:59:48 -08:00
TODO staging: comedi: TODO: remove item "reserve major number" 2014-05-28 14:18:11 -07:00