cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

iio_simple_dummy.h (3706B)


      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
     12struct iio_dummy_accel_calibscale;
     13struct 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 */
     28struct 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
     52struct iio_dev;
     53
     54int 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
     59int 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
     65int 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
     72int 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
     79int iio_simple_dummy_events_register(struct iio_dev *indio_dev);
     80void iio_simple_dummy_events_unregister(struct iio_dev *indio_dev);
     81
     82#else /* Stubs for when events are disabled at compile time */
     83
     84static inline int
     85iio_simple_dummy_events_register(struct iio_dev *indio_dev)
     86{
     87	return 0;
     88}
     89
     90static inline void
     91iio_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 */
    105enum 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
    113int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev);
    114void iio_simple_dummy_unconfigure_buffer(struct iio_dev *indio_dev);
    115#else
    116static inline int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev)
    117{
    118	return 0;
    119}
    120
    121static inline
    122void 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_ */