| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Copyright (C) 2018 Axentia Technologies AB |
| */ |
| |
| #ifndef __IIO_RESCALE_H__ |
| #define __IIO_RESCALE_H__ |
| |
| #include <linux/types.h> |
| #include <linux/iio/iio.h> |
| |
| 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__ */ |