/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (C) 2018 Axentia Technologies AB */ #ifndef __IIO_RESCALE_H__ #define __IIO_RESCALE_H__ #include #include struct device; struct rescale; struct rescale_cfg { enum iio_chan_type type; int (*props)(struct device *dev, struct rescale *rescale); }; struct rescale { const struct rescale_cfg *cfg; struct iio_channel *source; struct iio_chan_spec chan; struct iio_chan_spec_ext_info *ext_info; bool chan_processed; s32 numerator; s32 denominator; s32 offset; }; int rescale_process_scale(struct rescale *rescale, int scale_type, int *val, int *val2); int rescale_process_offset(struct rescale *rescale, int scale_type, int scale, int scale2, int schan_off, int *val, int *val2); #endif /* __IIO_RESCALE_H__ */