On 9/5/24 3:23 AM, Alexandru Ardelean wrote: > There are some newer additions to the AD7606 family, which support 18 bit > precision. > Up until now, all chips were 16 bit. > > This change adds a 'bits' parameter to the AD760X_CHANNEL macro and renames > 'ad7606_channels' -> 'ad7606_channels_16bit' for the current devices. > > The AD7606_SW_CHANNEL() macro is also introduced, as a short-hand for IIO > channels in SW mode. > > Signed-off-by: Alexandru Ardelean <aardelean@xxxxxxxxxxxx> > --- ... > diff --git a/drivers/iio/adc/ad7606.h b/drivers/iio/adc/ad7606.h > index 0c6a88cc4695..771121350f98 100644 > --- a/drivers/iio/adc/ad7606.h > +++ b/drivers/iio/adc/ad7606.h > @@ -8,7 +8,7 @@ > #ifndef IIO_ADC_AD7606_H_ > #define IIO_ADC_AD7606_H_ > > -#define AD760X_CHANNEL(num, mask_sep, mask_type, mask_all) { \ > +#define AD760X_CHANNEL(num, mask_sep, mask_type, mask_all, bits) { \ > .type = IIO_VOLTAGE, \ > .indexed = 1, \ > .channel = num, \ > @@ -19,24 +19,26 @@ > .scan_index = num, \ > .scan_type = { \ > .sign = 's', \ > - .realbits = 16, \ > - .storagebits = 16, \ > + .realbits = (bits), \ > + .storagebits = (bits), \ Technically OK in this patch since bits is still always 16 but we can avoid changing the same line again later to: (bits) > 16 ? 32 : 16 if we just do that in this patch. > .endianness = IIO_CPU, \ > }, \ > }