summaryrefslogtreecommitdiff
path: root/include/linux/iio/adc
diff options
context:
space:
mode:
authorDavid Lechner <dlechner@baylibre.com>2025-07-01 16:37:56 -0500
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2025-07-13 15:36:25 +0100
commitdb63e45a7da0678652c69f7cbed2cbf2a9922b39 (patch)
treeaf82f0ed9b190f069b61ed56e910467dd69836d7 /include/linux/iio/adc
parent1519bedf884c0a7c316906459d8c7da12113a8a9 (diff)
iio: adc: ad_sigma_delta: use spi_optimize_message()
Use spi_optimize_message() to improve the performance of buffered reads. By setting up the SPI message and pre-optimizing it in the buffer postenable callback, we can reduce overhead during each sample read. A rough estimate shows that this reduced the CPU usage of the interrupt handler thread from 22% to 16% using an EVAL-AD4112ARDZ board on a DE10-Nano (measuring a single channel at the default 6.2 kHz sample rate). Signed-off-by: David Lechner <dlechner@baylibre.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Nuno Sá <nuno.sa@analog.com> Link: https://patch.msgid.link/20250701-iio-adc-ad7173-add-spi-offload-support-v3-8-42abb83e3dac@baylibre.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Diffstat (limited to 'include/linux/iio/adc')
-rw-r--r--include/linux/iio/adc/ad_sigma_delta.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/iio/adc/ad_sigma_delta.h b/include/linux/iio/adc/ad_sigma_delta.h
index 5056677c9941..2037bb68b441 100644
--- a/include/linux/iio/adc/ad_sigma_delta.h
+++ b/include/linux/iio/adc/ad_sigma_delta.h
@@ -105,6 +105,8 @@ struct ad_sigma_delta {
bool status_appended;
/* map slots to channels in order to know what to expect from devices */
unsigned int *slots;
+ struct spi_message sample_msg;
+ struct spi_transfer sample_xfer[2];
u8 *samples_buf;
/*
@@ -116,6 +118,7 @@ struct ad_sigma_delta {
*/
u8 tx_buf[4] __aligned(IIO_DMA_MINALIGN);
u8 rx_buf[16] __aligned(8);
+ u8 sample_addr;
};
static inline int ad_sigma_delta_set_channel(struct ad_sigma_delta *sd,