On Fri, 29 Sep 2023 12:23:21 -0500 David Lechner <dlechner@xxxxxxxxxxxx> wrote: > From: David Lechner <david@xxxxxxxxxxxxxx> > > From: David Lechner <dlechner@xxxxxxxxxxxx> > > This modifies the ad2s1210_show_fexcit() function to read the excitation > frequency from the control register. This way we don't have to keep > track of the value and don't risk returning a stale value. > > Signed-off-by: David Lechner <dlechner@xxxxxxxxxxxx> Applied. A bit more fuzz with this one as context was different for the first hunk. Jonathan > --- > > v3 changes: None > > drivers/staging/iio/resolver/ad2s1210.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c > index 28ab877e1bc0..b15d71b17266 100644 > --- a/drivers/staging/iio/resolver/ad2s1210.c > +++ b/drivers/staging/iio/resolver/ad2s1210.c > @@ -76,7 +76,6 @@ struct ad2s1210_state { > struct regmap *regmap; > /** The external oscillator frequency in Hz. */ > unsigned long clkin_hz; > - unsigned int fexcit; > u8 resolution; > /** For reading raw sample value via SPI. */ > __be16 sample __aligned(IIO_DMA_MINALIGN); > @@ -206,8 +205,6 @@ static int ad2s1210_reinit_excitation_frequency(struct ad2s1210_state *st, > if (ret < 0) > return ret; > > - st->fexcit = fexcit; > - > /* > * Software reset reinitializes the excitation frequency output. > * It does not reset any of the configuration registers. > @@ -232,8 +229,22 @@ static ssize_t ad2s1210_show_fexcit(struct device *dev, > char *buf) > { > struct ad2s1210_state *st = iio_priv(dev_to_iio_dev(dev)); > + unsigned int value; > + u16 fexcit; > + int ret; > > - return sprintf(buf, "%u\n", st->fexcit); > + mutex_lock(&st->lock); > + ret = regmap_read(st->regmap, AD2S1210_REG_EXCIT_FREQ, &value); > + if (ret < 0) > + goto error_ret; > + > + fexcit = value * st->clkin_hz / (1 << 15); > + > + ret = sprintf(buf, "%u\n", fexcit); > + > +error_ret: > + mutex_unlock(&st->lock); > + return ret; > } > > static ssize_t ad2s1210_store_fexcit(struct device *dev, >