RE: [PATCH v11 2/6] iio: adc: ad4691: add initial driver for AD4691 family

From: Sabau, Radu bogdan

Date: Mon May 18 2026 - 11:09:11 EST


> -----Original Message-----
> From: David Lechner <dlechner@xxxxxxxxxxxx>
> Sent: Saturday, May 16, 2026 8:11 PM

...

> > +static int ad4691_reg_read(void *context, unsigned int reg, unsigned int
> *val)
> > +{
> > + struct spi_device *spi = context;
> > + u8 tx[2], rx[4];
> > + int ret;
> > +
> > + /* Set bit 15 to mark the operation as READ. */
>
> Can't we just set read_flag_mask in the regmap config?
>

As far as I can tell read_flag_mask is applied by the standard SPI regmap bus
backend, which constructs and sends the address byte itself before reading
the response. When using devm_regmap_init() with custom reg_read/reg_write
callbacks, the regmap core calls those callbacks directly with the raw register
address - it never touches read_flag_mask.

> > + put_unaligned_be16(0x8000 | reg, tx);
> > +
> > + switch (reg) {
> > + case 0 ... AD4691_OSC_FREQ_REG:
> > + case AD4691_SPARE_CONTROL ... AD4691_ACC_MASK_REG - 1:

...

> > +static int ad4691_write_raw(struct iio_dev *indio_dev,
> > + struct iio_chan_spec const *chan,
> > + int val, int val2, long mask)
> > +{
> > + switch (mask) {
> > + case IIO_CHAN_INFO_SAMP_FREQ:
>
> Should we aquire direct mode so that we can't change the rate during
> buffered read?
>

It is in set_sampling_freq already. Do you think it would make more sense
to move it here in order to help readability?