Re: [PATCH v2 4/4] iio: adc: ad7768-1: add support for SPI offload
From: Andy Shevchenko
Date: Mon Feb 23 2026 - 08:47:17 EST
On Mon, Feb 23, 2026 at 08:59:53AM -0300, Jonathan Santos wrote:
> The AD7768-1 family supports sampling rates up to 1 MSPS, which exceeds
> the capabilities of conventional triggered buffer operations due to SPI
> transaction overhead and interrupt latency.
>
> Add SPI offload support to enable hardware-accelerated data acquisition
> that bypasses software SPI transactions using continuous data streaming.
...
> +static int ad7768_spi_offload_probe(struct iio_dev *indio_dev,
> + struct ad7768_state *st)
> +{
> + struct device *dev = &st->spi->dev;
> + struct spi_offload_trigger_info trigger_info = {
> + .fwnode = dev_fwnode(dev),
> + .ops = &ad7768_offload_trigger_ops,
> + .priv = st,
> + };
> + struct dma_chan *rx_dma;
> + int ret;
> +
> + ret = devm_spi_offload_trigger_register(dev, &trigger_info);
> + if (ret)
> + return dev_err_probe(dev, ret, "failed to register offload trigger\n");
Double space...
(do not resend just for addressing this)
> + st->offload_trigger = devm_spi_offload_trigger_get(dev, st->offload,
> + SPI_OFFLOAD_TRIGGER_DATA_READY);
> + if (IS_ERR(st->offload_trigger))
> + return dev_err_probe(dev, PTR_ERR(st->offload_trigger),
> + "failed to get offload trigger\n");
> +
> + rx_dma = devm_spi_offload_rx_stream_request_dma_chan(dev, st->offload);
> + if (IS_ERR(rx_dma))
> + return dev_err_probe(dev, PTR_ERR(rx_dma), "failed to get offload RX DMA\n");
> +
> + ret = devm_iio_dmaengine_buffer_setup_with_handle(dev, indio_dev, rx_dma,
> + IIO_BUFFER_DIRECTION_IN);
> + if (ret)
> + return dev_err_probe(dev, ret, "failed to setup offload RX DMA\n");
> +
> + indio_dev->setup_ops = &ad7768_offload_buffer_ops;
> +
> + return 0;
> +}
--
With Best Regards,
Andy Shevchenko