On Fri, 13 Sep 2024 15:19:01 +0200 Javier Carrasco <javier.carrasco.cruz@xxxxxxxxx> wrote: > The veml6030 requires a delay of 4 ms after activating the sensor. That > is done correctly during the hw initialization, but it's missing after > resuming. > > Move the delay to the power on function to make sure that it is always > observerd. > > Signed-off-by: Javier Carrasco <javier.carrasco.cruz@xxxxxxxxx> > --- > drivers/iio/light/veml6030.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/iio/light/veml6030.c b/drivers/iio/light/veml6030.c > index d5add040d0b3..2945cc1db599 100644 > --- a/drivers/iio/light/veml6030.c > +++ b/drivers/iio/light/veml6030.c > @@ -143,8 +143,17 @@ static const struct attribute_group veml6030_event_attr_group = { > > static int veml6030_als_pwr_on(struct veml6030_data *data) > { > - return regmap_clear_bits(data->regmap, VEML6030_REG_ALS_CONF, > + int ret; > + > + ret = regmap_clear_bits(data->regmap, VEML6030_REG_ALS_CONF, > VEML6030_ALS_SD); > + if (ret) > + return ret; > + > + /* Wait 4 ms to let processor & oscillator start correctly */ > + usleep_range(4000, 4002); There is no useful point in such a narrow range. Given you are moving it let's tidy that up as well. Just use fsleep() which will use a much wider range but is good enough. Jonathan > + > + return 0; > } > > static int veml6030_als_shut_down(struct veml6030_data *data) > @@ -766,9 +775,6 @@ static int veml6030_hw_init(struct iio_dev *indio_dev) > return ret; > } > > - /* Wait 4 ms to let processor & oscillator start correctly */ > - usleep_range(4000, 4002); > - > /* Clear stale interrupt status bits if any during start */ > ret = regmap_read(data->regmap, VEML6030_REG_ALS_INT, &val); > if (ret < 0) { >