Shreeya Patel <shreeya.patel@xxxxxxxxxxxxx> writes: > From: Zhigang Shi <Zhigang.Shi@xxxxxxxxxx> > > Add initial support for ltrf216a ambient light sensor. > > Datasheet :- > https://gitlab.steamos.cloud/shreeya/iio/-/blob/main/LTR-F216A-QT.pdf > + struct ltrf216a_data *data = iio_priv(indio_dev); > + > + ret = i2c_smbus_write_byte_data(data->client, LTRF216A_MAIN_CTRL, 0); > + if (ret < 0) > + dev_err(&data->client->dev, "Error writing LTRF216A_MAIN_CTRL\n"); > + > + return ret; > +} > + > +static int ltrf216a_set_it_time(struct ltrf216a_data *data, int itime) ltrf216a_set_int_time instad of it_time? although, ltr501 also uses "it" instead of "int" on the function name.. > + > +static int ltrf216a_get_lux(struct ltrf216a_data *data) > +{ > + int greendata, cleardata, lux; > + > + greendata = ltrf216a_read_data(data, LTRF216A_ALS_DATA_0); > + cleardata = ltrf216a_read_data(data, LTRF216A_CLEAR_DATA_0); > + > + if (greendata < 0 || cleardata < 0) > + lux = 0; > + else > + lux = greendata * 8 * WIN_FAC / data->als_gain_fac / data->int_time_fac / 10; This could be rewritten to avoid most of the divisions. But it also doesn't fit the calculation shown in page 20 on the datasheet. I suspect that 8 was calculated from a specific Window Factor (~1.77), which is specific to one device, but I'm not sure. The datasheet formula is: lux = (ALS_DATA_X * 0.45 * window_factor) / (gain * int_time) Shouldn't WIN_FAC be a configurable parameter, instead of constant? -- Gabriel Krisman Bertazi