hw-consumer.rst 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 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:: drivers/iio/buffer/industrialio-hw-consumer.c
  37. :export: