Re: [PATCH v3 0/6] iio: adc: ad_sigma_delta: Add sequencer support

From: Jonathan Cameron
Date: Tue Mar 22 2022 - 17:30:12 EST


On Tue, 22 Mar 2022 12:50:23 +0200
<alexandru.tachici@xxxxxxxxxx> wrote:

> From: Alexandru Tachici <alexandru.tachici@xxxxxxxxxx>

Hi Alexandru,

I just took another look at this and I'm happy with it.
Will leave it on list for a few more days for others to
take a look though before I queue it up.

Thanks,

Jonathan

>
> Some sigma-delta chips support sampling of multiple
> channels in continuous mode.
>
> When the operating with more than one channel enabled,
> the channel sequencer cycles through the enabled channels
> in sequential order, from first channel to the last one.
> If a channel is disabled, it is skipped by the sequencer.
>
> If more than one channel is used in continuous mode,
> instruct the device to append the status to the SPI transfer
> (1 extra byte) every time we receive a sample.
> All sigma-delta chips possessing a sampling sequencer have
> this ability. Inside the status register there will be
> the number of the converted channel. In this way, even
> if the CPU won't keep up with the sampling rate, it won't
> send to userspace wrong channel samples.
>
> 1. Removed the 1 byte .shift from channel spec in AD7124,
> it confuses userspace apps (no need to shift right).
>
> 2. Add update_scan_mode to AD7124, it is required in order
> to enable/disable multiple channels at once
>
> 3. Add update_scan_mode to AD7192, it is required in order
> to enable/disable multiple channels at once
>
> 4. Add sequencer support for sigma_delta library.
>
> 5. Add sigma_delta_info values and callbacks for sequencer
> support in AD7124.
>
> 6. Add sigma_delta_info values and callbacks for sequencer
> support in AD7192.
>
> Alexandru Tachici (5):
> iio: adc: ad7124: Remove shift from scan_type
> iio: adc: ad7124: Add update_scan_mode
> iio: adc: ad7192: Add update_scan_mode
> iio: adc: ad7124: add sequencer support
> iio: adc: ad7192: add sequencer support
>
> Lars-Peter Clausen (1):
> iio: adc: ad_sigma_delta: Add sequencer support
>
> Changelog V2 -> V3:
> - ad_sd_buffer_postenable(), aligned (slot * storagebits) to 8 bytes
> - devm_krealloc instead of krealloc for samples_buf in ad_sd_buffer_postenable()
> - in ad_sigma_delta_append_status, check return value before setting .status_appended
> - iio: adc: ad_sigma_delta: Add sequencer support: added explanations on
> desynchronization checking and recovery
> - in ad7124_append_status() modify st->adc_control after write has taken place without errors
> - in ad7124_update_scan_mode() take cfg mutex only once instead of every time a
> set_channel happens
> - in ad7192_disable_all() modify st->conf after write taken place without errors
> - in ad7192_append_status() modify st->mode after write taken place without errors
>
> drivers/iio/adc/ad7124.c | 86 ++++++++++++++-
> drivers/iio/adc/ad7192.c | 64 ++++++++++-
> drivers/iio/adc/ad_sigma_delta.c | 143 +++++++++++++++++++++++--
> include/linux/iio/adc/ad_sigma_delta.h | 38 +++++++
> 4 files changed, 315 insertions(+), 16 deletions(-)
>
> --
> 2.25.1