On Fri, 23 May 2025 22:35:13 +0000 Lothar Rubusch <l.rubusch@xxxxxxxxx> wrote: > Add a scan_mask and scan_index to the iio channel. The scan_index > prepares the buffer usage. > > Signed-off-by: Lothar Rubusch <l.rubusch@xxxxxxxxx> Squash stuff that is only needed for buffer usage into the patch that adds buffered support. This is a case where I'm not convinced the code is complex enough to warrant a multi step approach. > --- > drivers/iio/accel/adxl313_core.c | 21 ++++++++++++++++----- > 1 file changed, 16 insertions(+), 5 deletions(-) > > diff --git a/drivers/iio/accel/adxl313_core.c b/drivers/iio/accel/adxl313_core.c > index 2f26da5857d4..9c2f3af1d19f 100644 > --- a/drivers/iio/accel/adxl313_core.c > +++ b/drivers/iio/accel/adxl313_core.c > @@ -171,9 +171,10 @@ static const int adxl313_odr_freqs[][2] = { > [9] = { 3200, 0 }, > }; > > -#define ADXL313_ACCEL_CHANNEL(index, axis) { \ > +#define ADXL313_ACCEL_CHANNEL(index, reg, axis) { \ > .type = IIO_ACCEL, \ > - .address = index, \ > + .scan_index = (index), \ > + .address = (reg), \ > .modified = 1, \ > .channel2 = IIO_MOD_##axis, \ > .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | \ > @@ -187,10 +188,19 @@ static const int adxl313_odr_freqs[][2] = { > }, \ > } > > +enum adxl313_chans { > + chan_x, chan_y, chan_z, > +}; > + > static const struct iio_chan_spec adxl313_channels[] = { > - ADXL313_ACCEL_CHANNEL(0, X), > - ADXL313_ACCEL_CHANNEL(1, Y), > - ADXL313_ACCEL_CHANNEL(2, Z), > + ADXL313_ACCEL_CHANNEL(0, chan_x, X), > + ADXL313_ACCEL_CHANNEL(1, chan_y, Y), > + ADXL313_ACCEL_CHANNEL(2, chan_z, Z), > +}; > + > +static const unsigned long adxl313_scan_masks[] = { > + BIT(chan_x) | BIT(chan_y) | BIT(chan_z), > + 0 > }; > > static int adxl313_set_odr(struct adxl313_data *data, > @@ -419,6 +429,7 @@ int adxl313_core_probe(struct device *dev, > indio_dev->modes = INDIO_DIRECT_MODE; > indio_dev->channels = adxl313_channels; > indio_dev->num_channels = ARRAY_SIZE(adxl313_channels); > + indio_dev->available_scan_masks = adxl313_scan_masks; > > ret = adxl313_setup(dev, data, setup); > if (ret) {