On Thu, 3 Oct 2024 14:22:17 +0200 Emil Gedenryd <emil.gedenryd@xxxxxxxx> wrote: > TI's opt3002 light sensor shares most properties with the opt3001 > model, with the exception of supporting a wider spectrum range. > > Add support for TI's opt3002 by extending the TI opt3001 driver. > > Datasheet: https://www.ti.com/product/OPT3002 > Signed-off-by: Emil Gedenryd <emil.gedenryd@xxxxxxxx> > --- > drivers/iio/light/Kconfig | 2 +- > drivers/iio/light/opt3001.c | 189 ++++++++++++++++++++++++++++++++++++-------- > 2 files changed, 157 insertions(+), 34 deletions(-) > > diff --git a/drivers/iio/light/Kconfig b/drivers/iio/light/Kconfig > index b68dcc1fbaca..c35bf962dae6 100644 > --- a/drivers/iio/light/Kconfig > +++ b/drivers/iio/light/Kconfig > @@ -461,7 +461,7 @@ config OPT3001 > depends on I2C > help > If you say Y or M here, you get support for Texas Instruments > - OPT3001 Ambient Light Sensor. > + OPT3001 Ambient Light Sensor, OPT3002 Light-to-Digital Sensor. > > If built as a dynamically linked module, it will be called > opt3001. > diff --git a/drivers/iio/light/opt3001.c b/drivers/iio/light/opt3001.c > index 176e54bb48c3..ff7fc0d4b08f 100644 > --- a/drivers/iio/light/opt3001.c > +++ b/drivers/iio/light/opt3001.c > @@ -70,6 +70,35 @@ > #define OPT3001_RESULT_READY_SHORT 150 > #define OPT3001_RESULT_READY_LONG 1000 > > +struct opt3001_scale { > + int val; > + int val2; > +}; > + > +struct opt3001_chip_info { > + const struct iio_chan_spec (*channels)[2]; > + enum iio_chan_type chan_type; > + int num_channels; > + > + const struct opt3001_scale (*scales)[12]; This doesn't compile for me as one of the two options only has 11 entries. You could either force them to be 12 entries each or use a pointer without the size and add a num_scales entry in here. Jonathan