Based on 2 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license version 2 as published by the free software foundation this program is free software you can redistribute it and or modify it under the terms of the gnu general public license version 2 as published by the free software foundation # extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 4122 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Enrico Weigelt <info@metux.net> Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
		
			
				
	
	
		
			127 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-only */
 | |
| /**
 | |
|  * Copyright (c) 2011 Jonathan Cameron
 | |
|  *
 | |
|  * Join together the various functionality of iio_simple_dummy driver
 | |
|  */
 | |
| 
 | |
| #ifndef _IIO_SIMPLE_DUMMY_H_
 | |
| #define _IIO_SIMPLE_DUMMY_H_
 | |
| #include <linux/kernel.h>
 | |
| 
 | |
| struct iio_dummy_accel_calibscale;
 | |
| struct iio_dummy_regs;
 | |
| 
 | |
| /**
 | |
|  * struct iio_dummy_state - device instance specific state.
 | |
|  * @dac_val:			cache for dac value
 | |
|  * @single_ended_adc_val:	cache for single ended adc value
 | |
|  * @differential_adc_val:	cache for differential adc value
 | |
|  * @accel_val:			cache for acceleration value
 | |
|  * @accel_calibbias:		cache for acceleration calibbias
 | |
|  * @accel_calibscale:		cache for acceleration calibscale
 | |
|  * @lock:			lock to ensure state is consistent
 | |
|  * @event_irq:			irq number for event line (faked)
 | |
|  * @event_val:			cache for event threshold value
 | |
|  * @event_en:			cache of whether event is enabled
 | |
|  */
 | |
| struct iio_dummy_state {
 | |
| 	int dac_val;
 | |
| 	int single_ended_adc_val;
 | |
| 	int differential_adc_val[2];
 | |
| 	int accel_val;
 | |
| 	int accel_calibbias;
 | |
| 	int activity_running;
 | |
| 	int activity_walking;
 | |
| 	const struct iio_dummy_accel_calibscale *accel_calibscale;
 | |
| 	struct mutex lock;
 | |
| 	struct iio_dummy_regs *regs;
 | |
| 	int steps_enabled;
 | |
| 	int steps;
 | |
| 	int height;
 | |
| #ifdef CONFIG_IIO_SIMPLE_DUMMY_EVENTS
 | |
| 	int event_irq;
 | |
| 	int event_val;
 | |
| 	bool event_en;
 | |
| 	s64 event_timestamp;
 | |
| #endif /* CONFIG_IIO_SIMPLE_DUMMY_EVENTS */
 | |
| };
 | |
| 
 | |
| #ifdef CONFIG_IIO_SIMPLE_DUMMY_EVENTS
 | |
| 
 | |
| struct iio_dev;
 | |
| 
 | |
| int iio_simple_dummy_read_event_config(struct iio_dev *indio_dev,
 | |
| 				       const struct iio_chan_spec *chan,
 | |
| 				       enum iio_event_type type,
 | |
| 				       enum iio_event_direction dir);
 | |
| 
 | |
| int iio_simple_dummy_write_event_config(struct iio_dev *indio_dev,
 | |
| 					const struct iio_chan_spec *chan,
 | |
| 					enum iio_event_type type,
 | |
| 					enum iio_event_direction dir,
 | |
| 					int state);
 | |
| 
 | |
| int iio_simple_dummy_read_event_value(struct iio_dev *indio_dev,
 | |
| 				      const struct iio_chan_spec *chan,
 | |
| 				      enum iio_event_type type,
 | |
| 				      enum iio_event_direction dir,
 | |
| 				      enum iio_event_info info, int *val,
 | |
| 				      int *val2);
 | |
| 
 | |
| int iio_simple_dummy_write_event_value(struct iio_dev *indio_dev,
 | |
| 				       const struct iio_chan_spec *chan,
 | |
| 				       enum iio_event_type type,
 | |
| 				       enum iio_event_direction dir,
 | |
| 				       enum iio_event_info info, int val,
 | |
| 				       int val2);
 | |
| 
 | |
| int iio_simple_dummy_events_register(struct iio_dev *indio_dev);
 | |
| void iio_simple_dummy_events_unregister(struct iio_dev *indio_dev);
 | |
| 
 | |
| #else /* Stubs for when events are disabled at compile time */
 | |
| 
 | |
| static inline int
 | |
| iio_simple_dummy_events_register(struct iio_dev *indio_dev)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static inline void
 | |
| iio_simple_dummy_events_unregister(struct iio_dev *indio_dev)
 | |
| {}
 | |
| 
 | |
| #endif /* CONFIG_IIO_SIMPLE_DUMMY_EVENTS*/
 | |
| 
 | |
| /**
 | |
|  * enum iio_simple_dummy_scan_elements - scan index enum
 | |
|  * @DUMMY_INDEX_VOLTAGE_0:         the single ended voltage channel
 | |
|  * @DUMMY_INDEX_DIFFVOLTAGE_1M2:   first differential channel
 | |
|  * @DUMMY_INDEX_DIFFVOLTAGE_3M4:   second differential channel
 | |
|  * @DUMMY_INDEX_ACCELX:            acceleration channel
 | |
|  *
 | |
|  * Enum provides convenient numbering for the scan index.
 | |
|  */
 | |
| enum iio_simple_dummy_scan_elements {
 | |
| 	DUMMY_INDEX_VOLTAGE_0,
 | |
| 	DUMMY_INDEX_DIFFVOLTAGE_1M2,
 | |
| 	DUMMY_INDEX_DIFFVOLTAGE_3M4,
 | |
| 	DUMMY_INDEX_ACCELX,
 | |
| };
 | |
| 
 | |
| #ifdef CONFIG_IIO_SIMPLE_DUMMY_BUFFER
 | |
| int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev);
 | |
| void iio_simple_dummy_unconfigure_buffer(struct iio_dev *indio_dev);
 | |
| #else
 | |
| static inline int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static inline
 | |
| void iio_simple_dummy_unconfigure_buffer(struct iio_dev *indio_dev)
 | |
| {}
 | |
| 
 | |
| #endif /* CONFIG_IIO_SIMPLE_DUMMY_BUFFER */
 | |
| #endif /* _IIO_SIMPLE_DUMMY_H_ */
 |