mirror of https://gitee.com/openkylin/linux.git
staging: iio: ad7780: check if ad778x before gain update
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>
This commit is contained in:
parent
72e3a5248d
commit
23da6a1511
|
@ -35,6 +35,7 @@ struct ad7780_chip_info {
|
||||||
struct iio_chan_spec channel;
|
struct iio_chan_spec channel;
|
||||||
unsigned int pattern_mask;
|
unsigned int pattern_mask;
|
||||||
unsigned int pattern;
|
unsigned int pattern;
|
||||||
|
bool is_ad778x;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ad7780_state {
|
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))
|
((raw_sample & chip_info->pattern_mask) != chip_info->pattern))
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
if (raw_sample & AD7780_GAIN)
|
if (chip_info->is_ad778x) {
|
||||||
st->gain = 1;
|
if (raw_sample & AD7780_GAIN)
|
||||||
else
|
st->gain = 1;
|
||||||
st->gain = 128;
|
else
|
||||||
|
st->gain = 128;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -135,21 +138,25 @@ static const struct ad7780_chip_info ad7780_chip_info_tbl[] = {
|
||||||
.channel = AD7780_CHANNEL(12, 24),
|
.channel = AD7780_CHANNEL(12, 24),
|
||||||
.pattern = 0x5,
|
.pattern = 0x5,
|
||||||
.pattern_mask = 0x7,
|
.pattern_mask = 0x7,
|
||||||
|
.is_ad778x = false,
|
||||||
},
|
},
|
||||||
[ID_AD7171] = {
|
[ID_AD7171] = {
|
||||||
.channel = AD7780_CHANNEL(16, 24),
|
.channel = AD7780_CHANNEL(16, 24),
|
||||||
.pattern = 0x5,
|
.pattern = 0x5,
|
||||||
.pattern_mask = 0x7,
|
.pattern_mask = 0x7,
|
||||||
|
.is_ad778x = false,
|
||||||
},
|
},
|
||||||
[ID_AD7780] = {
|
[ID_AD7780] = {
|
||||||
.channel = AD7780_CHANNEL(24, 32),
|
.channel = AD7780_CHANNEL(24, 32),
|
||||||
.pattern = 0x1,
|
.pattern = 0x1,
|
||||||
.pattern_mask = 0x3,
|
.pattern_mask = 0x3,
|
||||||
|
.is_ad778x = true,
|
||||||
},
|
},
|
||||||
[ID_AD7781] = {
|
[ID_AD7781] = {
|
||||||
.channel = AD7780_CHANNEL(20, 32),
|
.channel = AD7780_CHANNEL(20, 32),
|
||||||
.pattern = 0x1,
|
.pattern = 0x1,
|
||||||
.pattern_mask = 0x3,
|
.pattern_mask = 0x3,
|
||||||
|
.is_ad778x = true,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue