staging: iio: ad7780: check if ad778x before gain update
authorGiuliano Belinassi <giuliano.belinassi@gmail.com>
Thu, 8 Nov 2018 13:03:20 +0000 (11:03 -0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Fri, 16 Nov 2018 18:32:17 +0000 (18:32 +0000)
Only the ad778x have the 'gain' status bit. Check it before updating
through a new variable is_ad778x in chip_info.

Signed-off-by: Giuliano Belinassi <giuliano.belinassi@usp.br>
Acked-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/staging/iio/adc/ad7780.c

index 91e016d534edce2e9685e1adad2701882c54eb68..9ec2b002539e99b3d3769b8c339fde5485f34752 100644 (file)
@@ -35,6 +35,7 @@ struct ad7780_chip_info {
        struct iio_chan_spec    channel;
        unsigned int            pattern_mask;
        unsigned int            pattern;
+       bool                    is_ad778x;
 };
 
 struct ad7780_state {
@@ -113,10 +114,12 @@ static int ad7780_postprocess_sample(struct ad_sigma_delta *sigma_delta,
            ((raw_sample & chip_info->pattern_mask) != chip_info->pattern))
                return -EIO;
 
-       if (raw_sample & AD7780_GAIN)
-               st->gain = 1;
-       else
-               st->gain = 128;
+       if (chip_info->is_ad778x) {
+               if (raw_sample & AD7780_GAIN)
+                       st->gain = 1;
+               else
+                       st->gain = 128;
+       }
 
        return 0;
 }
@@ -135,21 +138,25 @@ static const struct ad7780_chip_info ad7780_chip_info_tbl[] = {
                .channel = AD7780_CHANNEL(12, 24),
                .pattern = 0x5,
                .pattern_mask = 0x7,
+               .is_ad778x = false,
        },
        [ID_AD7171] = {
                .channel = AD7780_CHANNEL(16, 24),
                .pattern = 0x5,
                .pattern_mask = 0x7,
+               .is_ad778x = false,
        },
        [ID_AD7780] = {
                .channel = AD7780_CHANNEL(24, 32),
                .pattern = 0x1,
                .pattern_mask = 0x3,
+               .is_ad778x = true,
        },
        [ID_AD7781] = {
                .channel = AD7780_CHANNEL(20, 32),
                .pattern = 0x1,
                .pattern_mask = 0x3,
+               .is_ad778x = true,
        },
 };