Re: [PATCH v3 0/3] Add support for AD7191

From: Jonathan Cameron
Date: Fri Jan 31 2025 - 13:27:00 EST


On Wed, 29 Jan 2025 16:29:01 +0200
Alisa-Dariana Roman <alisadariana@xxxxxxxxx> wrote:

> Thank you all for your feedback! Here is the updated series of patches!
>
> I addressed all the replies' points, except for the one about the size of the
> avail array being 1 when the pga/odr pins are pin-strapped. David raised a very
> good point, but, for now, I left the size fixed to 4, since the functions for
> setting the values return error anyway when they are pin-strapped.
Shouldn't have them pretending they can be changed when they can't
(which is what I think you mean about size fixed to 4). So this needs resolving.
>
> I thought of 3 approaches:
> - dynamic allocation for the avail arrays
Probably best avoided.

> - different avail array for the 2 different cases (pin-strap or gpios)
That works for me.

> - different channels array for the 2 different cases (probably too much)

It is a bit odd to list avail when only one value, but not wrong as such so
I think no need to go this far, though maybe there is a userspace library
this might confuse?

>
> If the current setup if not good enough, which approach would be the best?
>
> Kind regards,
> Alisa-Dariana Roman.
>
> ---
>
> v2: https://lore.kernel.org/all/20250122132821.126600-1-alisa.roman@xxxxxxxxxx/
>
> v2 -> v3:
> - correct binding title
> - remove clksel_state and clksel_gpio, assume the clksel pin is always
> pinstrapped
> - rephrase clocks description accordingly
> - simplify binding constraints
> - specify in binding description that PDOWN must be connected to SPI's
> controller's CS
> - add minItems for gpios in bindings
> - make scope explicit for mutex guard
> - remove spi irq check
> - add id_table to spi_driver struct
> - changed comments as suggested
> - use spi_message_init_with_transfers()
> - default returns an error in ad7191_set_mode()
> - replace hard-coded 2 with st->pga_gpios->ndescs
> - use gpiod_set_array_value_cansleep()
> - change .storagebits to 32
> - check return value for ad_sd_init()
> - change to adi,odr-value and adi,pga-value, which now accepts the value as
> suggested
> - modify variables names and refactor the setup of odr and pga gpios,
> indexes and available arrays into ad7191_config_setup(), since they are all
> related
> - add ad7191.rst
>
> v1: https://lore.kernel.org/all/20241221155926.81954-1-alisa.roman@xxxxxxxxxx/
>
> v1 -> v2:
> - removed patch adding function in ad_sigma_delta.h/.c
> - added a function set_cs() for asserting/deasserting the cs
> - handle pinstrapping cases
> - refactored all clock handling
> - updated bindings: corrected and added new things
> - -> address of the channels is used in set_channel()
> - addressed all the other changes
>