mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
iio: adc: ad7380: fix SPI offload trigger rate
Add a special case to double the SPI offload trigger rate when all
channels of a single-ended chip are enabled in a buffered read.
The single-ended chips in the AD738x family can only do simultaneous
sampling of half their channels and have a multiplexer to allow reading
the other half. To comply with the IIO definition of sampling_frequency,
we need to trigger twice as often when the sequencer is enabled to so
that both banks can be read in a single sample period.
Fixes: bbeaec81a0 ("iio: ad7380: add support for SPI offload")
Signed-off-by: David Lechner <dlechner@baylibre.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
committed by
Jonathan Cameron
parent
9b45744bf0
commit
632757312d
@@ -1227,6 +1227,14 @@ static int ad7380_offload_buffer_postenable(struct iio_dev *indio_dev)
|
|||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When the sequencer is required to read all channels, we need to
|
||||||
|
* trigger twice per sample period in order to read one complete set
|
||||||
|
* of samples.
|
||||||
|
*/
|
||||||
|
if (st->seq)
|
||||||
|
config.periodic.frequency_hz *= 2;
|
||||||
|
|
||||||
ret = spi_offload_trigger_enable(st->offload, st->offload_trigger, &config);
|
ret = spi_offload_trigger_enable(st->offload, st->offload_trigger, &config);
|
||||||
if (ret)
|
if (ret)
|
||||||
spi_unoptimize_message(&st->offload_msg);
|
spi_unoptimize_message(&st->offload_msg);
|
||||||
|
|||||||
Reference in New Issue
Block a user