Re: [PATCH v9 7/8] iio: adc: ad4030: Add support for ADAQ4216 and ADAQ4224
From: Marcelo Schmitt
Date: Thu Feb 19 2026 - 07:39:11 EST
Hi Andy,
On 02/17, Andy Shevchenko wrote:
> On Mon, Feb 16, 2026 at 12:01:12PM -0300, Marcelo Schmitt wrote:
> > ADAQ4216 and ADAQ4224 are similar to AD4030, but feature a PGA circuitry
> > that scales the analog input signal prior to it reaching the ADC. The PGA
> > is controlled through a pair of pins (A0 and A1) whose state define the
> > gain that is applied to the input signal.
> >
> > Add support for ADAQ4216 and ADAQ4224. Provide a list of PGA options
> > through the IIO device channel scale available interface and enable control
> > of the PGA through the channel scale interface.
>
...
> > +static int ad4030_setup_pga(struct device *dev, struct iio_dev *indio_dev,
> > + struct ad4030_state *st)
> > +{
> > + unsigned int i;
> > + int pga_gain_dB;
> > + int ret;
> > +
> > + ret = device_property_read_u32(dev, "adi,pga-gain-db", &pga_gain_dB);
> > + if (ret == -EINVAL) {
>
> Actually instead of custom error hunting, this should be rather
Sorry, I messed up when preparing the patches. "adi,pga-gain-db" is not going
to be a dt property and this should have been just the 'GPIOs for PGA control'
below. Anyway, thanks for reviewing this. I'll hopefully recall this error
handling pattern in future contributions.
The other suggestions look good but I'll wait a bit more before sending v10.
>
> if (device_property_present(dev, "adi,pga-gain-db")) {
> ret = device_property_read_u32(dev, "adi,pga-gain-db", &pga_gain_dB);
> if (ret)
> return dev_err_probe(dev, ret, "Failed to get PGA value.\n");
> } else {
>
> > + /* Setup GPIOs for PGA control */
> > + st->pga_gpios = devm_gpiod_get_array(dev, "pga", GPIOD_OUT_LOW);
> > + if (IS_ERR(st->pga_gpios))
> > + return dev_err_probe(dev, PTR_ERR(st->pga_gpios),
> > + "Failed to get PGA gpios.\n");
> > +
> > + if (st->pga_gpios->ndescs != ADAQ4616_PGA_PINS)
> > + return dev_err_probe(dev, -EINVAL,
> > + "Expected 2 GPIOs for PGA control.\n");
> > +
> > + st->scale_avail_size = ARRAY_SIZE(adaq4216_hw_gains_db);
> > + st->pga_index = 0;
> > + return 0;
>
> > + } else if (ret) {
> > + return dev_err_probe(dev, ret, "Failed to get PGA value.\n");
> > + }
>
...
> --
> With Best Regards,
> Andy Shevchenko
>
Thanks,
Marcelo