Skip to content

Commit 63dd163

Browse files
javiercarrascocruzjic23
authored andcommitted
iio: light: veml6030: fix microlux value calculation
The raw value conversion to obtain a measurement in lux as INT_PLUS_MICRO does not calculate the decimal part properly to display it as micro (in this case microlux). It only calculates the module to obtain the decimal part from a resolution that is 10000 times the provided in the datasheet (0.5376 lux/cnt for the veml6030). The resulting value must still be multiplied by 100 to make it micro. This bug was introduced with the original implementation of the driver. Only the illuminance channel is fixed becuase the scale is non sensical for the intensity channels anyway. Cc: [email protected] Fixes: 7b779f5 ("iio: light: add driver for veml6030 ambient light sensor") Signed-off-by: Javier Carrasco <[email protected]> Link: https://patch.msgid.link/20241016-veml6030-fix-processed-micro-v1-1-4a5644796437@gmail.com Signed-off-by: Jonathan Cameron <[email protected]>
1 parent 369f056 commit 63dd163

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/iio/light/veml6030.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ static int veml6030_read_raw(struct iio_dev *indio_dev,
522522
}
523523
if (mask == IIO_CHAN_INFO_PROCESSED) {
524524
*val = (reg * data->cur_resolution) / 10000;
525-
*val2 = (reg * data->cur_resolution) % 10000;
525+
*val2 = (reg * data->cur_resolution) % 10000 * 100;
526526
return IIO_VAL_INT_PLUS_MICRO;
527527
}
528528
*val = reg;

0 commit comments

Comments
 (0)