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

hw-consumer.rst (1427B)


      1===========
      2HW consumer
      3===========
      4An IIO device can be directly connected to another device in hardware. In this
      5case the buffers between IIO provider and IIO consumer are handled by hardware.
      6The Industrial I/O HW consumer offers a way to bond these IIO devices without
      7software buffer for data. The implementation can be found under
      8:file:`drivers/iio/buffer/hw-consumer.c`
      9
     10
     11* struct iio_hw_consumer — Hardware consumer structure
     12* :c:func:`iio_hw_consumer_alloc` — Allocate IIO hardware consumer
     13* :c:func:`iio_hw_consumer_free` — Free IIO hardware consumer
     14* :c:func:`iio_hw_consumer_enable` — Enable IIO hardware consumer
     15* :c:func:`iio_hw_consumer_disable` — Disable IIO hardware consumer
     16
     17
     18HW consumer setup
     19=================
     20
     21As standard IIO device the implementation is based on IIO provider/consumer.
     22A typical IIO HW consumer setup looks like this::
     23
     24	static struct iio_hw_consumer *hwc;
     25
     26	static const struct iio_info adc_info = {
     27		.read_raw = adc_read_raw,
     28	};
     29
     30	static int adc_read_raw(struct iio_dev *indio_dev,
     31				struct iio_chan_spec const *chan, int *val,
     32				int *val2, long mask)
     33	{
     34		ret = iio_hw_consumer_enable(hwc);
     35
     36		/* Acquire data */
     37
     38		ret = iio_hw_consumer_disable(hwc);
     39	}
     40
     41	static int adc_probe(struct platform_device *pdev)
     42	{
     43		hwc = devm_iio_hw_consumer_alloc(&iio->dev);
     44	}
     45
     46More details
     47============
     48.. kernel-doc:: drivers/iio/buffer/industrialio-hw-consumer.c
     49   :export:
     50