Re: [PATCH 02/19] staging: iio: isl29028: remove enable flag from isl29028_enable_proximity()

From: Jonathan Cameron
Date: Sun Jan 08 2017 - 04:48:36 EST


On 04/12/16 02:19, Brian Masney wrote:
> isl29028_enable_proximity() has a boolean argument named enable. This
> function is only called once and the enable flag is set to true in that
> call. This patch removes the enable parameter from that function.
>
> Signed-off-by: Brian Masney <masneyb@xxxxxxxxxxxxx>
The first thing that strikes me about this, is why do we have an enable only function?

I think the intention was probably that we also disable the proximity sensing after the
reading was done... Ideally we'd do this a little more cleverly, perhaps using runtime
pm so that if someone is requesting a stream of proximity measurements, we won't end up
powering up and down each time.

It's a little 'interesting' as we would want to power this element down even if we do
have a continuous stream of reads on the ALS. As such we may need to roll our own
equivalent of runtime pm.

In the first instance, I'd just put a disable after the reading is taken. This will
make a bit of a mockery of the faster sampling frequencies but there we are!


Jonathan
> ---
> drivers/staging/iio/light/isl29028.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/staging/iio/light/isl29028.c b/drivers/staging/iio/light/isl29028.c
> index 4e35d00..c8e234d 100644
> --- a/drivers/staging/iio/light/isl29028.c
> +++ b/drivers/staging/iio/light/isl29028.c
> @@ -93,15 +93,13 @@ static int isl29028_set_proxim_sampling(struct isl29028_chip *chip,
> sel << ISL29028_CONF_PROX_SLP_SH);
> }
>
> -static int isl29028_enable_proximity(struct isl29028_chip *chip, bool enable)
> +static int isl29028_enable_proximity(struct isl29028_chip *chip)
> {
> int ret;
> - int val = 0;
>
> - if (enable)
> - val = ISL29028_CONF_PROX_EN;
> ret = regmap_update_bits(chip->regmap, ISL29028_REG_CONFIGURE,
> - ISL29028_CONF_PROX_EN_MASK, val);
> + ISL29028_CONF_PROX_EN_MASK,
> + ISL29028_CONF_PROX_EN);
> if (ret < 0)
> return ret;
>
> @@ -215,7 +213,7 @@ static int isl29028_proxim_get(struct isl29028_chip *chip, int *prox_data)
> int ret;
>
> if (!chip->enable_prox) {
> - ret = isl29028_enable_proximity(chip, true);
> + ret = isl29028_enable_proximity(chip);
> if (ret < 0)
> return ret;
> chip->enable_prox = true;
>