51 lines
1.4 KiB
ReStructuredText
51 lines
1.4 KiB
ReStructuredText
|
===========
|
||
|
HW consumer
|
||
|
===========
|
||
|
An IIO device can be directly connected to another device in hardware. In this
|
||
|
case the buffers between IIO provider and IIO consumer are handled by hardware.
|
||
|
The Industrial I/O HW consumer offers a way to bond these IIO devices without
|
||
|
software buffer for data. The implementation can be found under
|
||
|
:file:`drivers/iio/buffer/hw-consumer.c`
|
||
|
|
||
|
|
||
|
* struct iio_hw_consumer — Hardware consumer structure
|
||
|
* :c:func:`iio_hw_consumer_alloc` — Allocate IIO hardware consumer
|
||
|
* :c:func:`iio_hw_consumer_free` — Free IIO hardware consumer
|
||
|
* :c:func:`iio_hw_consumer_enable` — Enable IIO hardware consumer
|
||
|
* :c:func:`iio_hw_consumer_disable` — Disable IIO hardware consumer
|
||
|
|
||
|
|
||
|
HW consumer setup
|
||
|
=================
|
||
|
|
||
|
As standard IIO device the implementation is based on IIO provider/consumer.
|
||
|
A typical IIO HW consumer setup looks like this::
|
||
|
|
||
|
static struct iio_hw_consumer *hwc;
|
||
|
|
||
|
static const struct iio_info adc_info = {
|
||
|
.read_raw = adc_read_raw,
|
||
|
};
|
||
|
|
||
|
static int adc_read_raw(struct iio_dev *indio_dev,
|
||
|
struct iio_chan_spec const *chan, int *val,
|
||
|
int *val2, long mask)
|
||
|
{
|
||
|
ret = iio_hw_consumer_enable(hwc);
|
||
|
|
||
|
/* Acquire data */
|
||
|
|
||
|
ret = iio_hw_consumer_disable(hwc);
|
||
|
}
|
||
|
|
||
|
static int adc_probe(struct platform_device *pdev)
|
||
|
{
|
||
|
hwc = devm_iio_hw_consumer_alloc(&iio->dev);
|
||
|
}
|
||
|
|
||
|
More details
|
||
|
============
|
||
|
.. kernel-doc:: drivers/iio/buffer/industrialio-hw-consumer.c
|
||
|
:export:
|
||
|
|