staging: comedi: amplc_pci230: simplify pci230_ai_read()
authorIan Abbott <abbotti@mev.co.uk>
Mon, 1 Sep 2014 11:03:47 +0000 (12:03 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 2 Sep 2014 18:21:31 +0000 (11:21 -0700)
commit66a462ba451346599d0b78098e41eceac3099946
treeabbb8bf527437b561a0e4a75907667af60b5497f
parent9405d8724045a84c960a1e4ac9876cf5fb1de35e
staging: comedi: amplc_pci230: simplify pci230_ai_read()

`pci230_ai_read()` reads a sample from the ADC data register and
converts it to a comedi sample value.  The AI sample may have 12 or 16
bits of resolution, depending on the board type, but 12-bit sample
values are in bits 15 to 4 of the register.  The hardware value is
signed, 2's complement if set to a bipolar mode, or unsigned, straight
binary if set to a unipolar mode.  To convert to a Comedi sample value
it may need shifting right by 4 bits, and the top bit of the sample
value may need to be toggled.

Simplify the existing code by doing the 2's complement to straight
binary conversion before the shift.  That way, it is always bit 15 that
is inverted regardless of the resolution.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/amplc_pci230.c