iio: light: vcnl4000: Fix scale for vcnl4040
authorGuido Günther <agx@sigxcpu.org>
Fri, 27 Dec 2019 10:22:54 +0000 (11:22 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Jan 2020 07:22:33 +0000 (08:22 +0100)
commit bc80573ea25bb033a58da81b3ce27205b97c088e upstream.

According to the data sheet the ambient sensor's scale is 0.12 lux/step
(not 0.024 lux/step as used by vcnl4200) when the integration time is
80ms. The integration time is currently hardcoded in the driver to that
value.

See p. 8 in https://www.vishay.com/docs/84307/designingvcnl4040.pdf

Fixes: 5a441aade5b3 ("iio: light: vcnl4000 add support for the VCNL4040 proximity and light sensor")
Signed-off-by: Guido Günther <agx@sigxcpu.org>
Reviewed-by: Marco Felsch <m.felsch@pengutronix.de>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/iio/light/vcnl4000.c

index 16dacea..b0e241a 100644 (file)
@@ -163,7 +163,6 @@ static int vcnl4200_init(struct vcnl4000_data *data)
        if (ret < 0)
                return ret;
 
-       data->al_scale = 24000;
        data->vcnl4200_al.reg = VCNL4200_AL_DATA;
        data->vcnl4200_ps.reg = VCNL4200_PS_DATA;
        switch (id) {
@@ -172,11 +171,13 @@ static int vcnl4200_init(struct vcnl4000_data *data)
                /* show 54ms in total. */
                data->vcnl4200_al.sampling_rate = ktime_set(0, 54000 * 1000);
                data->vcnl4200_ps.sampling_rate = ktime_set(0, 4200 * 1000);
+               data->al_scale = 24000;
                break;
        case VCNL4040_PROD_ID:
                /* Integration time is 80ms, add 10ms. */
                data->vcnl4200_al.sampling_rate = ktime_set(0, 100000 * 1000);
                data->vcnl4200_ps.sampling_rate = ktime_set(0, 100000 * 1000);
+               data->al_scale = 120000;
                break;
        }
        data->vcnl4200_al.last_measurement = ktime_set(0, 0);