Re: [PATCH v6 2/2] iio: adc: ad7173: add AD7173 driver

From: Jonathan Cameron
Date: Thu Nov 23 2023 - 14:09:52 EST



>
> ...
>
> > + return vref / (MICRO/MILLI);
>
> Wouldn't MILLI in the denominator just suffice?

Just a quick comment here. Given this is converting from micro to milli units
I'd consider the maths here be acting as documentation of that which would be lost if
/MILLI only used. Need spaces around the / though


>
> ...
>
> > + case IIO_CHAN_INFO_SAMP_FREQ:
> > + reg = st->channels[chan->address].cfg.odr;
> > +
> > + *val = st->info->sinc5_data_rates[reg] / MILLI;
> > + *val2 = (st->info->sinc5_data_rates[reg] % MILLI) * (MICRO/MILLI);
> > +
> > + return IIO_VAL_INT_PLUS_MICRO;
> > + }
>
> > + ret = fwnode_property_read_string(child, "adi,reference-select", &ref_label);
> > + if (!ret) {
> > + for (i = 0; i < ARRAY_SIZE(ad7173_ref_sel_str); i++)
> > + if (strcmp(ref_label, ad7173_ref_sel_str[i]) == 0) {
> > + ref_sel = i;
> > + break;
> > + }
>
> > + if (i == ARRAY_SIZE(ad7173_ref_sel_str))
> > + return dev_err_probe(dev, -EINVAL, "Invalid channel reference name %s", ref_label);
>
> Too long line.
>
> > + } else if (ret != -EINVAL) {
> > + return dev_err_probe(dev, ret, "Invalid channel reference value");
> > + }
>
>
> Use standard pattern and it will be easier to see that 'else' is redundant.
>
> if (ret == -EINVAL) // However I don't like this handling of
> // properties, but up to you and maintainer

Personally I'd check for existence of property first and only try reading if it
exists. Avoid dance with resetting ret to 0.

> ret = 0;
> if (ret)
> return dev_err_probe(...);
>
>
> BUT. Isn't it a home grown variant of fwnode_property_match_property_string()?

true enough... I'd still add an existence check first given this one is optional.

Jonathan