On 04/12/16 02:19, Brian Masney wrote: > There are two callers to the function isl29028_set_als_ir_mode() and > both instances use a nested if statement to only change the chip state > if it is not in the proper mode. This patch moves this check into the > isl29028_set_als_ir_mode() function to remove the nested if > statements. > > Signed-off-by: Brian Masney <masneyb@xxxxxxxxxxxxx> Sensible little clean up. Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it. (If I can get a push out in the last 3 mins of my free 15 of wifi on this train!) Thanks, Jonathan > --- > drivers/staging/iio/light/isl29028.c | 30 ++++++++++++++---------------- > 1 file changed, 14 insertions(+), 16 deletions(-) > > diff --git a/drivers/staging/iio/light/isl29028.c b/drivers/staging/iio/light/isl29028.c > index aa413e5..4e35d00 100644 > --- a/drivers/staging/iio/light/isl29028.c > +++ b/drivers/staging/iio/light/isl29028.c > @@ -124,6 +124,9 @@ static int isl29028_set_als_ir_mode(struct isl29028_chip *chip, > { > int ret = 0; > > + if (chip->als_ir_mode == mode) > + return 0; > + > switch (mode) { > case ISL29028_MODE_ALS: > ret = regmap_update_bits(chip->regmap, ISL29028_REG_CONFIGURE, > @@ -160,6 +163,9 @@ static int isl29028_set_als_ir_mode(struct isl29028_chip *chip, > > /* Need to wait for conversion time if ALS/IR mode enabled */ > mdelay(ISL29028_CONV_TIME_MS); > + > + chip->als_ir_mode = mode; > + > return 0; > } > > @@ -223,14 +229,10 @@ static int isl29028_als_get(struct isl29028_chip *chip, int *als_data) > int ret; > int als_ir_data; > > - if (chip->als_ir_mode != ISL29028_MODE_ALS) { > - ret = isl29028_set_als_ir_mode(chip, ISL29028_MODE_ALS); > - if (ret < 0) { > - dev_err(dev, > - "Error in enabling ALS mode err %d\n", ret); > - return ret; > - } > - chip->als_ir_mode = ISL29028_MODE_ALS; > + ret = isl29028_set_als_ir_mode(chip, ISL29028_MODE_ALS); > + if (ret < 0) { > + dev_err(dev, "Error in enabling ALS mode err %d\n", ret); > + return ret; > } > > ret = isl29028_read_als_ir(chip, &als_ir_data); > @@ -256,14 +258,10 @@ static int isl29028_ir_get(struct isl29028_chip *chip, int *ir_data) > struct device *dev = regmap_get_device(chip->regmap); > int ret; > > - if (chip->als_ir_mode != ISL29028_MODE_IR) { > - ret = isl29028_set_als_ir_mode(chip, ISL29028_MODE_IR); > - if (ret < 0) { > - dev_err(dev, > - "Error in enabling IR mode err %d\n", ret); > - return ret; > - } > - chip->als_ir_mode = ISL29028_MODE_IR; > + ret = isl29028_set_als_ir_mode(chip, ISL29028_MODE_IR); > + if (ret < 0) { > + dev_err(dev, "Error in enabling IR mode err %d\n", ret); > + return ret; > } > return isl29028_read_als_ir(chip, ir_data); > } > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel