Re: [PATCH v3 4/8] iio: adc: Add support for ad4052

From: Jorge Marques
Date: Tue Jun 17 2025 - 11:35:13 EST


On Tue, Jun 17, 2025 at 04:59:48PM +0200, Uwe Kleine-König wrote:
> On Tue, Jun 10, 2025 at 09:34:37AM +0200, Jorge Marques wrote:
> > +static int ad4052_get_samp_freq(struct iio_dev *indio_dev,
> > + struct iio_chan_spec const *chan,
> > + int *val,
> > + int *val2)
> > +{
> > + struct ad4052_state *st = iio_priv(indio_dev);
> > +
> > + *val = DIV_ROUND_UP_ULL(NSEC_PER_SEC, st->pwm_st.period);
> > + return IIO_VAL_INT;
>
> st->pwm_st.period is the period that was requested before. If you want
> the real period that is currently emitted, check pwm_get_state_hw().
>
Hi Uwe,

I believe only ad4695.c uses this method and the reason for that is if
the pwm is disabled we still want to obtain the requested value.

Reverting slightly to v2, the semantic to allow fetching from hw when
enabled, and using the managed state when disabled, would be:

struct pwm_state pwm_st;
int ret

ret = pwm_get_state_hw(st->cnv_pwm, &pwm_st);
if (ret)
goto out_release;

if (!pwm_st.enabled)
pwm_st = st->pwm_st;

*val = DIV_ROUND_UP_ULL(NSEC_PER_SEC, pwm_st.period);

Is this ok?

Best regards,
Jorge
> > +}
>
> Best regards
> Uwe