Hi Jonathan, Here it goes version 2 of the output backend series. The main points in here: - The refactoring the DMA BUF api for setup. I pretty much like how it turned out. Note that Paul's patch ("iio: buffer-dmaengine: Support specifying buffer direction") had to be updated accordingly. - Introduction of the struct iio_info callback for getting the backend. I'm not sure about this one as we have no user for it and we may not have one for sometime. I like how the "default" implementation for getting the backend turned out and it should cover 99% of the cases. It will only fail if the iio parent device is not the same device where we bound the backend. - As mentioned above, we now get the backend from the iio device matching the IIO parent device with the device used when getting the backend. This should cover almost all the cases I think. Should be very unlikely to use a different device in devm_iio_backend_get() and devm_iio_device_alloc(). For the bindings, I still did not addressed Rob's point about dma-names. I did reply [1] but still no feedback. Anyways, full log: v1: * https://lore.kernel.org/all/20240328-iio-backend-axi-dac-v1-0-afc808b3fde3@xxxxxxxxxx/ v2: * Patch 1: - New patch. * Patch 4: - Make things consistent with the triggered buffer case. * Patch 6: - Fixed description as it's an output device; - Avoid duplicating the "bindings" word in the commit title. * Patch 7: - Renamed vdd_3_3-supply -> vdd-3p3-supply; - Added IRQ and vref properties; - Avoid duplicating the "bindings" word in the commit title. * Patch 8: - New patch. * Patch 9: - Fixed some typos in kerneldocs; - Add iio_backend_from_indio_dev_parent(). Default way of getting backends from IIO devices; - Explicitly differentiate frontends and backends ext_info in iio_backend_extend_chan_spec(). - Spell out CW as CONTINUOUS_WAVE; - Add _hz suffix in set_sample_rate(). * Patch 10: - Rephrase comment in axi_dac_set_sample_rate() when DDS is disabled; - Use the new iio_dmaengine_buffer_setup_ext() API; - Passed tone as 0,1 value being 1 second tone. * Patch 11: - Fixed mixed spaces with tabs in ABI file and dac -> DAC; - Add COMPILE_TEST to kconfig; - Dropped operating mode enum. Use defines; - Add comments for IIO enum operating mode and the value we need to set on the device; - Add spaces around {} in the reg_sequence; - Always use Mu instead of mixture of Mu and MU; - Don't error out if we do not recognize the part id; - Make sure to deal with other errors than TIMEOUT in ad9739a_init(). [1]: https://lore.kernel.org/linux-iio/04e2a0569953792673319f7fcab3fe03e6670c03.camel@xxxxxxxxx/ --- Nuno Sa (7): iio: buffer-dma: add iio_dmaengine_buffer_setup() dt-bindings: iio: dac: add docs for AXI DAC IP dt-bindings: iio: dac: add docs for AD9739A iio: core: add get_iio_backend() callback iio: backend: add new functionality iio: dac: add support for AXI DAC IP core iio: dac: support the ad9739a RF DAC Paul Cercueil (4): iio: buffer-dma: Rename iio_dma_buffer_data_available() iio: buffer-dma: Enable buffer write support iio: buffer-dmaengine: Support specifying buffer direction iio: buffer-dmaengine: Enable write support Documentation/ABI/testing/sysfs-bus-iio-ad9739a | 19 + .../devicetree/bindings/iio/dac/adi,ad9739a.yaml | 94 +++ .../devicetree/bindings/iio/dac/adi,axi-dac.yaml | 62 ++ MAINTAINERS | 17 + drivers/iio/adc/adi-axi-adc.c | 16 +- drivers/iio/buffer/industrialio-buffer-dma.c | 100 +++- drivers/iio/buffer/industrialio-buffer-dmaengine.c | 83 +-- drivers/iio/dac/Kconfig | 37 ++ drivers/iio/dac/Makefile | 2 + drivers/iio/dac/ad9739a.c | 454 +++++++++++++++ drivers/iio/dac/adi-axi-dac.c | 635 +++++++++++++++++++++ drivers/iio/industrialio-backend.c | 179 ++++++ include/linux/iio/backend.h | 49 ++ include/linux/iio/buffer-dma.h | 4 +- include/linux/iio/buffer-dmaengine.h | 24 +- include/linux/iio/iio.h | 2 + 16 files changed, 1698 insertions(+), 79 deletions(-) --- base-commit: 6020ca4de8e5404b20f15a6d9873cd6eb5f6d8d6 change-id: 20240405-iio-backend-axi-dac-be99373b036b -- Thanks! - Nuno Sá