37 lines
		
	
	
		
			833 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			833 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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__ */
 |