Re: [PATCH v3 5/6] iio: adc: ad7173: Add support for AD411x devices

From: Jonathan Cameron
Date: Sat Jun 01 2024 - 14:43:50 EST


On Thu, 30 May 2024 08:19:57 +0200
Nuno Sá <noname.nuno@xxxxxxxxx> wrote:

> On Wed, 2024-05-29 at 15:59 -0500, David Lechner wrote:
> > On 5/29/24 9:03 AM, Ceclan, Dumitru wrote:
> > > On 29/05/2024 15:46, Nuno Sá wrote:
> > > > On Mon, 2024-05-27 at 20:02 +0300, Dumitru Ceclan via B4 Relay wrote:
> > > > > From: Dumitru Ceclan <dumitru.ceclan@xxxxxxxxxx>
> > >
> > > ...
> > >
> > > > >  static const struct ad7173_device_info ad7173_device_info[] = {
> > > > > + [ID_AD4111] = {
> > > > > + .name = "ad4111",
> > > > > + .id = AD7173_AD4111_AD4112_AD4114_ID,
> > > > > + .num_voltage_inputs_with_divider = 8,
> > > > > + .num_channels = 16,
> > > > > + .num_configs = 8,
> > > > > + .num_voltage_inputs = 8,
> > > > > + .num_gpios = 2,
> > > > > + .higher_gpio_bits = true,
> > > > > + .has_temp = true,
> > > > > + .has_vcom_input = true,
> > > > > + .has_input_buf = true,
> > > > > + .has_current_inputs = true,
> > > > > + .has_int_ref = true,
> > > > > + .clock = 2 * HZ_PER_MHZ,
> > > > > + .sinc5_data_rates = ad7173_sinc5_data_rates,
> > > > > + .num_sinc5_data_rates = ARRAY_SIZE(ad7173_sinc5_data_rates),
> > > > > + },
> > > >
> > > > At some point it would be nice to drop the ad7173_device_info array...
> > > >
> > > What are good alternatives to this?
> >
> > Drivers like ad7091r8 have individual static struct ad7091r_init_info
> > instead of putting them all in an array. I like doing it that
> > way because it makes less code to read compared to having the
> > array.
> >
> > It would let us get rid of enum ad7173_ids, have one level less
> > indent on each static const struct ad7173_device_info and
> >
> > { .compatible = "adi,ad7172-2", .data = &ad7173_device_info },
> >
> > would now fit on one line since we no longer need the array
> > index.
> >
>
> Exactly... But up to you to do it now or defer it to a later patch.
>
Agreed - the array pattern for this is not a good idea as it
also encourages people to assign meaning to the enum values leaving
stuff expressed as code that should be a flag or value inside these
device_info structures.

Some of those where mistakes of a younger me ;(

Jonathan

> - Nuno Sá