1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright (C) 2018 Axentia Technologies AB
4 */
5
6#ifndef __IIO_RESCALE_H__
7#define __IIO_RESCALE_H__
8
9#include <linux/types.h>
10#include <linux/iio/iio.h>
11
12struct device;
13struct rescale;
14
15struct rescale_cfg {
16	enum iio_chan_type type;
17	int (*props)(struct device *dev, struct rescale *rescale);
18};
19
20struct rescale {
21	const struct rescale_cfg *cfg;
22	struct iio_channel *source;
23	struct iio_chan_spec chan;
24	struct iio_chan_spec_ext_info *ext_info;
25	bool chan_processed;
26	s32 numerator;
27	s32 denominator;
28	s32 offset;
29};
30
31int rescale_process_scale(struct rescale *rescale, int scale_type,
32			  int *val, int *val2);
33int rescale_process_offset(struct rescale *rescale, int scale_type,
34			   int scale, int scale2, int schan_off,
35			   int *val, int *val2);
36#endif /* __IIO_RESCALE_H__ */
37