On Sun, 20 Oct 2024 21:12:17 +0200 Javier Carrasco <javier.carrasco.cruz@xxxxxxxxx> wrote: > The Vishay veml3235 is a low-power ambient light sensor with I2C > interface. It provides a minimum detectable intensity of > 0.0021 lx/cnt, configurable integration time and gain, and an additional > white channel to distinguish between different light sources. > > Signed-off-by: Javier Carrasco <javier.carrasco.cruz@xxxxxxxxx> Hi Javier, I missed one thing on previous review... There is no obvious reason this driver needs to provide raw and processed values. Unless I'm missing something, just provide raw and let userspace do the maths for us. Jonathan > diff --git a/drivers/iio/light/veml3235.c b/drivers/iio/light/veml3235.c > new file mode 100644 > index 000000000000..fa2141cced8f > --- /dev/null > +++ b/drivers/iio/light/veml3235.c > +static const struct iio_chan_spec veml3235_channels[] = { > + { > + .type = IIO_LIGHT, > + .channel = CH_ALS, > + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | > + BIT(IIO_CHAN_INFO_PROCESSED), Why both raw + scale and processed? We normally only provide raw and processed for light sensors if: 1) The conversion is non linear and hard to reverse. 2) There are events that are thresholds on the raw value. Here it is linear so just provide _RAW. > + .info_mask_shared_by_all = BIT(IIO_CHAN_INFO_INT_TIME) | > + BIT(IIO_CHAN_INFO_SCALE), > + .info_mask_shared_by_all_available = BIT(IIO_CHAN_INFO_INT_TIME) | > + BIT(IIO_CHAN_INFO_SCALE), > + }, > + { > + .type = IIO_INTENSITY, > + .channel = CH_WHITE, > + .modified = 1, > + .channel2 = IIO_MOD_LIGHT_BOTH, > + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), > + .info_mask_shared_by_all = BIT(IIO_CHAN_INFO_INT_TIME) | > + BIT(IIO_CHAN_INFO_SCALE), > + .info_mask_shared_by_all_available = BIT(IIO_CHAN_INFO_INT_TIME) | > + BIT(IIO_CHAN_INFO_SCALE), > + }, > +};