Re: [PATCH v3 4/4] iio: light: vl6180: Correct ALS scale for non-default gain/integration time
From: Jonathan Cameron
Date: Sat Sep 30 2017 - 16:31:50 EST
On Sun, 24 Sep 2017 23:59:20 +0200
Stefan BrÃns <stefan.bruens@xxxxxxxxxxxxxx> wrote:
> The reported scale was only correct for the default settings of 100 ms
> integration time and gain 1.
>
> This aligns the reported scale with the behaviour of any other IIO driver
> and the documented ABI, but may require userspace changes if someone uses
> non-default settings.
>
> Signed-off-by: Stefan BrÃns <stefan.bruens@xxxxxxxxxxxxxx>
Applied to the togreg branch of iio.git and pushed out as testing for
the autobuilders to play with it.
Whilst this is clearly a fix, it isn't a regression. As such the extent
of the changes mean I've queued this up for the next merge window rather
than going in quicker as a fix.
Thanks,
Jonathan
>
> ---
>
> Changes in v3: None
> Changes in v2: None
>
> drivers/iio/light/vl6180.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/iio/light/vl6180.c b/drivers/iio/light/vl6180.c
> index 49e9f92cd116..67f8beb84fc3 100644
> --- a/drivers/iio/light/vl6180.c
> +++ b/drivers/iio/light/vl6180.c
> @@ -315,9 +315,12 @@ static int vl6180_read_raw(struct iio_dev *indio_dev,
> case IIO_CHAN_INFO_SCALE:
> switch (chan->type) {
> case IIO_LIGHT:
> - *val = 0; /* one ALS count is 0.32 Lux */
> - *val2 = 320000;
> - break;
> + /* one ALS count is 0.32 Lux @ gain 1, IT 100 ms */
> + *val = 32000; /* 0.32 * 1000 * 100 */
> + *val2 = data->als_gain_milli * data->als_it_ms;
> +
> + return IIO_VAL_FRACTIONAL;
> +
> case IIO_DISTANCE:
> *val = 0; /* sensor reports mm, scale to meter */
> *val2 = 1000;