hw-consumer.rst 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. * struct :c:type:`iio_hw_consumer` — Hardware consumer structure
  10. * :c:func:`iio_hw_consumer_alloc` — Allocate IIO hardware consumer
  11. * :c:func:`iio_hw_consumer_free` — Free IIO hardware consumer
  12. * :c:func:`iio_hw_consumer_enable` — Enable IIO hardware consumer
  13. * :c:func:`iio_hw_consumer_disable` — Disable IIO hardware consumer
  14. HW consumer setup
  15. =================
  16. As standard IIO device the implementation is based on IIO provider/consumer.
  17. A typical IIO HW consumer setup looks like this::
  18. static struct iio_hw_consumer *hwc;
  19. static const struct iio_info adc_info = {
  20. .read_raw = adc_read_raw,
  21. };
  22. static int adc_read_raw(struct iio_dev *indio_dev,
  23. struct iio_chan_spec const *chan, int *val,
  24. int *val2, long mask)
  25. {
  26. ret = iio_hw_consumer_enable(hwc);
  27. /* Acquire data */
  28. ret = iio_hw_consumer_disable(hwc);
  29. }
  30. static int adc_probe(struct platform_device *pdev)
  31. {
  32. hwc = devm_iio_hw_consumer_alloc(&iio->dev);
  33. }
  34. More details
  35. ============
  36. .. kernel-doc:: include/linux/iio/hw-consumer.h
  37. .. kernel-doc:: drivers/iio/buffer/industrialio-hw-consumer.c
  38. :export: