staging:iio:cdc:ad7150: Add scale and offset to info_mask_shared_by_type
The datasheet provides these two values on the assumption they are applied to unshift raw value. Hence shift both the offset and scale by 4 to compensate. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Link: https://lore.kernel.org/r/20210314181511.531414-19-jic23@kernel.org
This commit is contained in:
parent
f28334febd
commit
18595e71c5
@ -121,6 +121,18 @@ static int ad7150_read_raw(struct iio_dev *indio_dev,
|
||||
return ret;
|
||||
*val = ret;
|
||||
|
||||
return IIO_VAL_INT;
|
||||
case IIO_CHAN_INFO_SCALE:
|
||||
/*
|
||||
* Base units for capacitance are nano farads and the value
|
||||
* calculated from the datasheet formula is in picofarad
|
||||
* so multiply by 1000
|
||||
*/
|
||||
*val = 1000;
|
||||
*val2 = 40944 >> 4; /* To match shift in _RAW */
|
||||
return IIO_VAL_FRACTIONAL;
|
||||
case IIO_CHAN_INFO_OFFSET:
|
||||
*val = -(12288 >> 4); /* To match shift in _RAW */
|
||||
return IIO_VAL_INT;
|
||||
case IIO_CHAN_INFO_SAMP_FREQ:
|
||||
/* Strangely same for both 1 and 2 chan parts */
|
||||
@ -425,6 +437,8 @@ static const struct iio_event_spec ad7150_events[] = {
|
||||
.channel = _chan, \
|
||||
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \
|
||||
BIT(IIO_CHAN_INFO_AVERAGE_RAW), \
|
||||
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE) | \
|
||||
BIT(IIO_CHAN_INFO_OFFSET), \
|
||||
.info_mask_shared_by_all = BIT(IIO_CHAN_INFO_SAMP_FREQ),\
|
||||
.event_spec = ad7150_events, \
|
||||
.num_event_specs = ARRAY_SIZE(ad7150_events), \
|
||||
@ -436,6 +450,8 @@ static const struct iio_event_spec ad7150_events[] = {
|
||||
.channel = _chan, \
|
||||
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \
|
||||
BIT(IIO_CHAN_INFO_AVERAGE_RAW), \
|
||||
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE) | \
|
||||
BIT(IIO_CHAN_INFO_OFFSET), \
|
||||
.info_mask_shared_by_all = BIT(IIO_CHAN_INFO_SAMP_FREQ),\
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user