]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
staging: comedi: cb_pcidas64: fix incorrect AI range code handling
authorIan Abbott <abbotti@mev.co.uk>
Fri, 27 Feb 2015 18:10:07 +0000 (18:10 +0000)
committerJiri Slaby <jslaby@suse.cz>
Thu, 5 Mar 2015 14:37:14 +0000 (15:37 +0100)
commit5bebf22856156a533aa6a107385e17b1422dba2e
treedcacc50cea1ea7a013204ba83677288eb96e1d30
parent52235599ac1399ae8e7fe3ffa4d19ff9a1ca1652
staging: comedi: cb_pcidas64: fix incorrect AI range code handling

commit be8e89087ec2d2c8a1ad1e3db64bf4efdfc3c298 upstream.

The hardware range code values and list of valid ranges for the AI
subdevice is incorrect for several supported boards.  The hardware range
code values for all boards except PCI-DAS4020/12 is determined by
calling `ai_range_bits_6xxx()` based on the maximum voltage of the range
and whether it is bipolar or unipolar, however it only returns the
correct hardware range code for the PCI-DAS60xx boards.  For
PCI-DAS6402/16 (and /12) it returns the wrong code for the unipolar
ranges.  For PCI-DAS64/Mx/16 it returns the wrong code for all the
ranges and the comedi range table is incorrect.

Change `ai_range_bits_6xxx()` to use a look-up table pointed to by new
member `ai_range_codes` of `struct pcidas64_board` to map the comedi
range table indices to the hardware range codes.  Use a new comedi range
table for the PCI-DAS64/Mx/16 boards (and the commented out variants).

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
drivers/staging/comedi/drivers/cb_pcidas64.c