staging:iio:adc:ad7152: Fix differential channel return value and increase delay.
authorMichael Hennerich <michael.hennerich@analog.com>
Fri, 2 Sep 2011 16:25:31 +0000 (17:25 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 6 Sep 2011 23:03:31 +0000 (16:03 -0700)
In differential mode zero scale equals to 0x8000.
Increase readout delay by 1ms.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/iio/adc/ad7152.c

index 122d56c..42996b9 100644 (file)
@@ -160,9 +160,9 @@ static IIO_DEVICE_ATTR(in_capacitance0_calibscale_calibration,
 static IIO_DEVICE_ATTR(in_capacitance1_calibscale_calibration,
                       S_IWUSR, NULL, ad7152_start_gain_calib, 1);
 
-/* Values are Update Rate (Hz), Conversion Time (ms) */
+/* Values are Update Rate (Hz), Conversion Time (ms) + 1*/
 static const unsigned char ad7152_filter_rate_table[][2] = {
-       {200, 5}, {50, 20}, {20, 50}, {17, 60},
+       {200, 5 + 1}, {50, 20 + 1}, {20, 50 + 1}, {17, 60 + 1},
 };
 
 static ssize_t ad7152_show_filter_rate_setup(struct device *dev,
@@ -367,6 +367,9 @@ static int ad7152_read_raw(struct iio_dev *indio_dev,
                        goto out;
                *val = swab16(ret);
 
+               if (chan->differential)
+                       *val -= 0x8000;
+
                ret = IIO_VAL_INT;
                break;
        case (1 << IIO_CHAN_INFO_CALIBSCALE_SEPARATE):