Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

docs: driver-api: add iio hw consumer section

This adds a section about the Hardware consumer
API of the IIO subsystem to the driver API
documentation.

Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@st.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Arnaud Pouliquen and committed by
Mark Brown
5b178943 48b66f8f

+52
+51
Documentation/driver-api/iio/hw-consumer.rst
··· 1 + =========== 2 + HW consumer 3 + =========== 4 + An IIO device can be directly connected to another device in hardware. in this 5 + case the buffers between IIO provider and IIO consumer are handled by hardware. 6 + The Industrial I/O HW consumer offers a way to bond these IIO devices without 7 + software buffer for data. The implementation can be found under 8 + :file:`drivers/iio/buffer/hw-consumer.c` 9 + 10 + 11 + * struct :c:type:`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 + 18 + HW consumer setup 19 + ================= 20 + 21 + As standard IIO device the implementation is based on IIO provider/consumer. 22 + A 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 + 46 + More details 47 + ============ 48 + .. kernel-doc:: include/linux/iio/hw-consumer.h 49 + .. kernel-doc:: drivers/iio/buffer/industrialio-hw-consumer.c 50 + :export: 51 +
+1
Documentation/driver-api/iio/index.rst
··· 15 15 buffers 16 16 triggers 17 17 triggered-buffers 18 + hw-consumer