root/drivers/iio/dummy/iio_simple_dummy.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. iio_simple_dummy_events_register
  2. iio_simple_dummy_events_unregister
  3. iio_simple_dummy_configure_buffer
  4. iio_simple_dummy_unconfigure_buffer

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /**
   3  * Copyright (c) 2011 Jonathan Cameron
   4  *
   5  * Join together the various functionality of iio_simple_dummy driver
   6  */
   7 
   8 #ifndef _IIO_SIMPLE_DUMMY_H_
   9 #define _IIO_SIMPLE_DUMMY_H_
  10 #include <linux/kernel.h>
  11 
  12 struct iio_dummy_accel_calibscale;
  13 struct iio_dummy_regs;
  14 
  15 /**
  16  * struct iio_dummy_state - device instance specific state.
  17  * @dac_val:                    cache for dac value
  18  * @single_ended_adc_val:       cache for single ended adc value
  19  * @differential_adc_val:       cache for differential adc value
  20  * @accel_val:                  cache for acceleration value
  21  * @accel_calibbias:            cache for acceleration calibbias
  22  * @accel_calibscale:           cache for acceleration calibscale
  23  * @lock:                       lock to ensure state is consistent
  24  * @event_irq:                  irq number for event line (faked)
  25  * @event_val:                  cache for event threshold value
  26  * @event_en:                   cache of whether event is enabled
  27  */
  28 struct iio_dummy_state {
  29         int dac_val;
  30         int single_ended_adc_val;
  31         int differential_adc_val[2];
  32         int accel_val;
  33         int accel_calibbias;
  34         int activity_running;
  35         int activity_walking;
  36         const struct iio_dummy_accel_calibscale *accel_calibscale;
  37         struct mutex lock;
  38         struct iio_dummy_regs *regs;
  39         int steps_enabled;
  40         int steps;
  41         int height;
  42 #ifdef CONFIG_IIO_SIMPLE_DUMMY_EVENTS
  43         int event_irq;
  44         int event_val;
  45         bool event_en;
  46         s64 event_timestamp;
  47 #endif /* CONFIG_IIO_SIMPLE_DUMMY_EVENTS */
  48 };
  49 
  50 #ifdef CONFIG_IIO_SIMPLE_DUMMY_EVENTS
  51 
  52 struct iio_dev;
  53 
  54 int iio_simple_dummy_read_event_config(struct iio_dev *indio_dev,
  55                                        const struct iio_chan_spec *chan,
  56                                        enum iio_event_type type,
  57                                        enum iio_event_direction dir);
  58 
  59 int iio_simple_dummy_write_event_config(struct iio_dev *indio_dev,
  60                                         const struct iio_chan_spec *chan,
  61                                         enum iio_event_type type,
  62                                         enum iio_event_direction dir,
  63                                         int state);
  64 
  65 int iio_simple_dummy_read_event_value(struct iio_dev *indio_dev,
  66                                       const struct iio_chan_spec *chan,
  67                                       enum iio_event_type type,
  68                                       enum iio_event_direction dir,
  69                                       enum iio_event_info info, int *val,
  70                                       int *val2);
  71 
  72 int iio_simple_dummy_write_event_value(struct iio_dev *indio_dev,
  73                                        const struct iio_chan_spec *chan,
  74                                        enum iio_event_type type,
  75                                        enum iio_event_direction dir,
  76                                        enum iio_event_info info, int val,
  77                                        int val2);
  78 
  79 int iio_simple_dummy_events_register(struct iio_dev *indio_dev);
  80 void iio_simple_dummy_events_unregister(struct iio_dev *indio_dev);
  81 
  82 #else /* Stubs for when events are disabled at compile time */
  83 
  84 static inline int
  85 iio_simple_dummy_events_register(struct iio_dev *indio_dev)
  86 {
  87         return 0;
  88 }
  89 
  90 static inline void
  91 iio_simple_dummy_events_unregister(struct iio_dev *indio_dev)
  92 {}
  93 
  94 #endif /* CONFIG_IIO_SIMPLE_DUMMY_EVENTS*/
  95 
  96 /**
  97  * enum iio_simple_dummy_scan_elements - scan index enum
  98  * @DUMMY_INDEX_VOLTAGE_0:         the single ended voltage channel
  99  * @DUMMY_INDEX_DIFFVOLTAGE_1M2:   first differential channel
 100  * @DUMMY_INDEX_DIFFVOLTAGE_3M4:   second differential channel
 101  * @DUMMY_INDEX_ACCELX:            acceleration channel
 102  *
 103  * Enum provides convenient numbering for the scan index.
 104  */
 105 enum iio_simple_dummy_scan_elements {
 106         DUMMY_INDEX_VOLTAGE_0,
 107         DUMMY_INDEX_DIFFVOLTAGE_1M2,
 108         DUMMY_INDEX_DIFFVOLTAGE_3M4,
 109         DUMMY_INDEX_ACCELX,
 110 };
 111 
 112 #ifdef CONFIG_IIO_SIMPLE_DUMMY_BUFFER
 113 int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev);
 114 void iio_simple_dummy_unconfigure_buffer(struct iio_dev *indio_dev);
 115 #else
 116 static inline int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev)
 117 {
 118         return 0;
 119 }
 120 
 121 static inline
 122 void iio_simple_dummy_unconfigure_buffer(struct iio_dev *indio_dev)
 123 {}
 124 
 125 #endif /* CONFIG_IIO_SIMPLE_DUMMY_BUFFER */
 126 #endif /* _IIO_SIMPLE_DUMMY_H_ */

/* [<][>][^][v][top][bottom][index][help] */