forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.6 KiB
126 lines
3.6 KiB
/* 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_ */
|
|
|