On Sun, 19 Jun 2022 19:58:33 +0100 Jonathan Cameron <jic23@xxxxxxxxxx> wrote: > From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > 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 _inputoffset is not. > Similarly calibbias is expected to tweak the measurement seen, not > the adjust the two lines of the differential pair. > > Needed for in_capacitanceX-capacitanceY_inputoffset for the > AD7746 CDC driver. > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > --- > I''m not entirely happy with the naming on this one, so if anyone > has a better idea I'm definitely open to it! > --- > Documentation/ABI/testing/sysfs-bus-iio | 13 +++++++++++++ > drivers/iio/industrialio-core.c | 1 + > include/linux/iio/types.h | 1 + > 3 files changed, 15 insertions(+) > > diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio > index d3a0c0ef8948..132eb4e849f9 100644 > --- a/Documentation/ABI/testing/sysfs-bus-iio > +++ b/Documentation/ABI/testing/sysfs-bus-iio > @@ -204,6 +204,19 @@ Description: > is required is a consistent labeling. Units after application > of scale and offset are nanofarads. > > +What: /sys/.../iio:deviceX/in_capacitableY-capacitanceZ_inputoffset capacitable? What was I drinking that day... Will fix. > +KernelVersion: 5.19 > +Contact: linux-iio@xxxxxxxxxxxxxxx > +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 _inputoffset cancels out across the two inputs > + that make up the differential pair. 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 > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > index 6b401f63805f..ad1c2354502d 100644 > --- a/drivers/iio/industrialio-core.c > +++ b/drivers/iio/industrialio-core.c > @@ -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_INPUTOFFSET] = "inputoffset", > }; > /** > * iio_device_id() - query the unique ID for the device > diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h > index a7aa91f3a8dc..c7f79a251a14 100644 > --- a/include/linux/iio/types.h > +++ b/include/linux/iio/types.h > @@ -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_INPUTOFFSET, > }; > > #endif /* _IIO_TYPES_H_ */