Re: [PATCH v2 09/12] iio: dac: ad5686: implement new sync() op for the spi bus

From: Andy Shevchenko

Date: Tue Jun 09 2026 - 14:22:28 EST


On Tue, Jun 09, 2026 at 11:13:04AM +0100, Rodrigo Alencar via B4 Relay wrote:

> Use of local SPI bus data to manage a collection of SPI transfers and
> flush them to the SPI platform driver with the sync() operation. This
> allows for faster handling of multiple channel DAC writes, avoiding kernel
> overhead per spi_sync() call, which will be helpful when enabling
> triggered buffer support.

...

> static int ad5686_spi_probe(struct spi_device *spi)
> {
> - return ad5686_probe(&spi->dev, spi_get_device_match_data(spi),
> - spi->modalias, &ad5686_spi_ops);
> + const struct ad5686_chip_info *info = spi_get_device_match_data(spi);

struct device *dev = &spi->dev;

> + struct ad5686_spi_data *bus_data;
> + unsigned int capacity;
> +
> + /* read operation requires at least 2 transfers */
> + capacity = max(info->num_channels, 2);
> + bus_data = devm_kzalloc(&spi->dev,
> + struct_size(bus_data, xfers, capacity),
> + GFP_KERNEL);

bus_data = devm_kzalloc(dev, struct_size(bus_data, xfers, capacity),
GFP_KERNEL);

> + if (!bus_data)
> + return -ENOMEM;
> +
> + bus_data->capacity = capacity;
> +
> + return ad5686_probe(&spi->dev, info, spi->modalias, &ad5686_spi_ops,
> + bus_data);

return ad5686_probe(dev, info, spi->modalias, &ad5686_spi_ops, bus_data);

> }

--
With Best Regards,
Andy Shevchenko