• Ian Abbott's avatar
    staging: comedi: cb_pcidas64: fix incorrect AI range code handling · be8e8908
    Ian Abbott authored
    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: default avatarIan Abbott <abbotti@mev.co.uk>
    Cc: <stable@vger.kernel.org> # 3.18.x
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    be8e8908
cb_pcidas64.c 113 KB