Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iio: light: ltrf216a: Return floating point values

For better precision of input light intesity, return floating point
values through sysfs instead of an integer value

Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
Link: https://lore.kernel.org/r/20231107192005.285534-1-shreeya.patel@collabora.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Shreeya Patel and committed by
Jonathan Cameron
00799564 39dac9d0

+5 -5
+5 -5
drivers/iio/light/ltrf216a.c
··· 234 234 static int ltrf216a_get_lux(struct ltrf216a_data *data) 235 235 { 236 236 int ret, greendata; 237 - u64 lux, div; 237 + u64 lux; 238 238 239 239 ret = ltrf216a_set_power_state(data, true); 240 240 if (ret) ··· 246 246 247 247 ltrf216a_set_power_state(data, false); 248 248 249 - lux = greendata * 45 * LTRF216A_WIN_FAC * 100; 250 - div = data->als_gain_fac * data->int_time_fac * 100; 249 + lux = greendata * 45 * LTRF216A_WIN_FAC; 251 250 252 - return div_u64(lux, div); 251 + return lux; 253 252 } 254 253 255 254 static int ltrf216a_read_raw(struct iio_dev *indio_dev, ··· 278 279 if (ret < 0) 279 280 return ret; 280 281 *val = ret; 281 - return IIO_VAL_INT; 282 + *val2 = data->als_gain_fac * data->int_time_fac; 283 + return IIO_VAL_FRACTIONAL; 282 284 case IIO_CHAN_INFO_INT_TIME: 283 285 mutex_lock(&data->lock); 284 286 ret = ltrf216a_get_int_time(data, val, val2);