Message ID | 1512150020-20335-3-git-send-email-arnaud.pouliquen@st.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, 1 Dec 2017 18:40:09 +0100 Arnaud Pouliquen <arnaud.pouliquen@st.com> wrote: > 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> > --- > Documentation/driver-api/iio/hw-consumer.rst | 51 ++++++++++++++++++++++++++++ > Documentation/driver-api/iio/index.rst | 1 + > 2 files changed, 52 insertions(+) > create mode 100644 Documentation/driver-api/iio/hw-consumer.rst > > diff --git a/Documentation/driver-api/iio/hw-consumer.rst b/Documentation/driver-api/iio/hw-consumer.rst > new file mode 100644 > index 0000000..8facce6 > --- /dev/null > +++ b/Documentation/driver-api/iio/hw-consumer.rst > @@ -0,0 +1,51 @@ > +=========== > +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 :c:type:`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:: include/linux/iio/hw-consumer.h > +.. kernel-doc:: drivers/iio/buffer/industrialio-hw-consumer.c > + :export: > + > diff --git a/Documentation/driver-api/iio/index.rst b/Documentation/driver-api/iio/index.rst > index e5c3922..7fba341 100644 > --- a/Documentation/driver-api/iio/index.rst > +++ b/Documentation/driver-api/iio/index.rst > @@ -15,3 +15,4 @@ Contents: > buffers > triggers > triggered-buffers > + hw-consumer
diff --git a/Documentation/driver-api/iio/hw-consumer.rst b/Documentation/driver-api/iio/hw-consumer.rst new file mode 100644 index 0000000..8facce6 --- /dev/null +++ b/Documentation/driver-api/iio/hw-consumer.rst @@ -0,0 +1,51 @@ +=========== +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 :c:type:`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:: include/linux/iio/hw-consumer.h +.. kernel-doc:: drivers/iio/buffer/industrialio-hw-consumer.c + :export: + diff --git a/Documentation/driver-api/iio/index.rst b/Documentation/driver-api/iio/index.rst index e5c3922..7fba341 100644 --- a/Documentation/driver-api/iio/index.rst +++ b/Documentation/driver-api/iio/index.rst @@ -15,3 +15,4 @@ Contents: buffers triggers triggered-buffers + hw-consumer
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> --- Documentation/driver-api/iio/hw-consumer.rst | 51 ++++++++++++++++++++++++++++ Documentation/driver-api/iio/index.rst | 1 + 2 files changed, 52 insertions(+) create mode 100644 Documentation/driver-api/iio/hw-consumer.rst