On 17/01/17 09:25, Brian Masney wrote: > isl29028_chip_init_and_power_on() calls isl29028_set_als_scale() and > this is not needed until the user actually needs to take a reading from > the ALS/IR sensor. This patch moves the isl29028_set_als_scale() call > from isl29028_chip_init_and_power_on() to isl29028_set_als_ir_mode(). > This sets the stage for faster resume times from runtime power > management if the user is only querying the proximity sensor. > > Signed-off-by: Brian Masney <masneyb@xxxxxxxxxxxxx> Makes sense. > --- > drivers/staging/iio/light/isl29028.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/iio/light/isl29028.c b/drivers/staging/iio/light/isl29028.c > index fa58d08..598a5a5 100644 > --- a/drivers/staging/iio/light/isl29028.c > +++ b/drivers/staging/iio/light/isl29028.c > @@ -146,11 +146,15 @@ static int isl29028_set_als_scale(struct isl29028_chip *chip, int lux_scale) > static int isl29028_set_als_ir_mode(struct isl29028_chip *chip, > enum isl29028_als_ir_mode mode) > { > - int ret = 0; > + int ret; > > if (chip->als_ir_mode == mode) > return 0; > > + ret = isl29028_set_als_scale(chip, chip->lux_scale); > + if (ret < 0) > + return ret; > + > switch (mode) { > case ISL29028_MODE_ALS: > ret = regmap_update_bits(chip->regmap, ISL29028_REG_CONFIGURE, > @@ -453,7 +457,7 @@ static int isl29028_chip_init_and_power_on(struct isl29028_chip *chip) > return ret; > } > > - return isl29028_set_als_scale(chip, chip->lux_scale); > + return ret; > } > > static bool isl29028_is_volatile_reg(struct device *dev, unsigned int reg) > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel