iio: core: Introduce _zeropoint for differential channels
Address an ABI gap for device where the offset of both lines in a differential pair may be controlled so as to allow a wider range of inputs, but without having any direct effect of the differential measurement. _offset cannot be used as to remain in line with existing usage, userspace would be expected to apply it as (_raw + _offset) * _scale whereas _zeropoint is not. i.e. If we were computing the differential in software it would be. ((postive_raw + _zeropoint) - (negative_raw + zeropoint) + _offset) * _scale = ((postive_raw - negative_raw) + _offset) * _scale = (differential_raw + _offset) * _scale Similarly calibbias is expected to tweak the measurement seen, not the adjust the two lines of the differential pair. Needed for in_capacitanceX-capacitanceY_zeropoint for the AD7746 CDC driver. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Link: https://lore.kernel.org/r/20220626122938.582107-12-jic23@kernel.org
This commit is contained in:
parent
431e9147b4
commit
5c64990b99
@ -207,6 +207,25 @@ Description:
|
||||
is required is a consistent labeling. Units after application
|
||||
of scale and offset are nanofarads.
|
||||
|
||||
What: /sys/.../iio:deviceX/in_capacitanceY-capacitanceZ_zeropoint
|
||||
KernelVersion: 6.1
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
For differential channels, this an offset that is applied
|
||||
equally to both inputs. As the reading is of the difference
|
||||
between the two inputs, this should not be applied to the _raw
|
||||
reading by userspace (unlike _offset) and unlike calibbias
|
||||
it does not affect the differential value measured because
|
||||
the effect of _zeropoint cancels out across the two inputs
|
||||
that make up the differential pair. It's purpose is to bring
|
||||
the individual signals, before the differential is measured,
|
||||
within the measurement range of the device. The naming is
|
||||
chosen because if the separate inputs that make the
|
||||
differential pair are drawn on a graph in their
|
||||
_raw units, this is the value that the zero point on the
|
||||
measurement axis represents. It is expressed with the
|
||||
same scaling as _raw.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_temp_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_tempX_raw
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_temp_x_raw
|
||||
|
@ -168,6 +168,7 @@ static const char * const iio_chan_info_postfix[] = {
|
||||
[IIO_CHAN_INFO_OVERSAMPLING_RATIO] = "oversampling_ratio",
|
||||
[IIO_CHAN_INFO_THERMOCOUPLE_TYPE] = "thermocouple_type",
|
||||
[IIO_CHAN_INFO_CALIBAMBIENT] = "calibambient",
|
||||
[IIO_CHAN_INFO_ZEROPOINT] = "zeropoint",
|
||||
};
|
||||
/**
|
||||
* iio_device_id() - query the unique ID for the device
|
||||
|
@ -63,6 +63,7 @@ enum iio_chan_info_enum {
|
||||
IIO_CHAN_INFO_OVERSAMPLING_RATIO,
|
||||
IIO_CHAN_INFO_THERMOCOUPLE_TYPE,
|
||||
IIO_CHAN_INFO_CALIBAMBIENT,
|
||||
IIO_CHAN_INFO_ZEROPOINT,
|
||||
};
|
||||
|
||||
#endif /* _IIO_TYPES_H_ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user