Lines Matching refs:data

198 static int ltr501_als_read_samp_freq(struct ltr501_data *data,  in ltr501_als_read_samp_freq()  argument
203 ret = regmap_field_read(data->reg_als_rate, &i); in ltr501_als_read_samp_freq()
216 static int ltr501_ps_read_samp_freq(struct ltr501_data *data, in ltr501_ps_read_samp_freq() argument
221 ret = regmap_field_read(data->reg_ps_rate, &i); in ltr501_ps_read_samp_freq()
234 static int ltr501_als_write_samp_freq(struct ltr501_data *data, in ltr501_als_write_samp_freq() argument
246 mutex_lock(&data->lock_als); in ltr501_als_write_samp_freq()
247 ret = regmap_field_write(data->reg_als_rate, i); in ltr501_als_write_samp_freq()
248 mutex_unlock(&data->lock_als); in ltr501_als_write_samp_freq()
253 static int ltr501_ps_write_samp_freq(struct ltr501_data *data, in ltr501_ps_write_samp_freq() argument
265 mutex_lock(&data->lock_ps); in ltr501_ps_write_samp_freq()
266 ret = regmap_field_write(data->reg_ps_rate, i); in ltr501_ps_write_samp_freq()
267 mutex_unlock(&data->lock_ps); in ltr501_ps_write_samp_freq()
272 static int ltr501_als_read_samp_period(struct ltr501_data *data, int *val) in ltr501_als_read_samp_period() argument
276 ret = regmap_field_read(data->reg_als_rate, &i); in ltr501_als_read_samp_period()
288 static int ltr501_ps_read_samp_period(struct ltr501_data *data, int *val) in ltr501_ps_read_samp_period() argument
292 ret = regmap_field_read(data->reg_ps_rate, &i); in ltr501_ps_read_samp_period()
327 static int ltr501_drdy(struct ltr501_data *data, u8 drdy_mask) in ltr501_drdy() argument
333 ret = regmap_read(data->regmap, LTR501_ALS_PS_STATUS, &status); in ltr501_drdy()
341 dev_err(&data->client->dev, "ltr501_drdy() failed, data not ready\n"); in ltr501_drdy()
345 static int ltr501_set_it_time(struct ltr501_data *data, int it) in ltr501_set_it_time() argument
359 ret = regmap_read(data->regmap, LTR501_ALS_CONTR, &status); in ltr501_set_it_time()
375 return regmap_field_write(data->reg_it, index); in ltr501_set_it_time()
379 static int ltr501_read_it_time(struct ltr501_data *data, int *val, int *val2) in ltr501_read_it_time() argument
383 ret = regmap_field_read(data->reg_it, &index); in ltr501_read_it_time()
397 static int ltr501_read_als(struct ltr501_data *data, __le16 buf[2]) in ltr501_read_als() argument
401 ret = ltr501_drdy(data, LTR501_STATUS_ALS_RDY); in ltr501_read_als()
405 return regmap_bulk_read(data->regmap, LTR501_ALS_DATA1, in ltr501_read_als()
409 static int ltr501_read_ps(struct ltr501_data *data) in ltr501_read_ps() argument
413 ret = ltr501_drdy(data, LTR501_STATUS_PS_RDY); in ltr501_read_ps()
417 ret = regmap_bulk_read(data->regmap, LTR501_PS_DATA, in ltr501_read_ps()
425 static int ltr501_read_intr_prst(struct ltr501_data *data, in ltr501_read_intr_prst() argument
433 ret = regmap_field_read(data->reg_als_prst, &prst); in ltr501_read_intr_prst()
437 ret = ltr501_als_read_samp_period(data, &samp_period); in ltr501_read_intr_prst()
444 ret = regmap_field_read(data->reg_ps_prst, &prst); in ltr501_read_intr_prst()
448 ret = ltr501_ps_read_samp_period(data, &samp_period); in ltr501_read_intr_prst()
462 static int ltr501_write_intr_prst(struct ltr501_data *data, in ltr501_write_intr_prst() argument
477 ret = ltr501_als_read_samp_period(data, &samp_period); in ltr501_write_intr_prst()
489 mutex_lock(&data->lock_als); in ltr501_write_intr_prst()
490 ret = regmap_field_write(data->reg_als_prst, new_val); in ltr501_write_intr_prst()
491 mutex_unlock(&data->lock_als); in ltr501_write_intr_prst()
493 data->als_period = period; in ltr501_write_intr_prst()
497 ret = ltr501_ps_read_samp_period(data, &samp_period); in ltr501_write_intr_prst()
509 mutex_lock(&data->lock_ps); in ltr501_write_intr_prst()
510 ret = regmap_field_write(data->reg_ps_prst, new_val); in ltr501_write_intr_prst()
511 mutex_unlock(&data->lock_ps); in ltr501_write_intr_prst()
513 data->ps_period = period; in ltr501_write_intr_prst()
628 struct ltr501_data *data = iio_priv(indio_dev); in ltr501_read_raw() local
639 mutex_lock(&data->lock_als); in ltr501_read_raw()
640 ret = ltr501_read_als(data, buf); in ltr501_read_raw()
641 mutex_unlock(&data->lock_als); in ltr501_read_raw()
656 mutex_lock(&data->lock_als); in ltr501_read_raw()
657 ret = ltr501_read_als(data, buf); in ltr501_read_raw()
658 mutex_unlock(&data->lock_als); in ltr501_read_raw()
665 mutex_lock(&data->lock_ps); in ltr501_read_raw()
666 ret = ltr501_read_ps(data); in ltr501_read_raw()
667 mutex_unlock(&data->lock_ps); in ltr501_read_raw()
678 i = (data->als_contr & data->chip_info->als_gain_mask) in ltr501_read_raw()
679 >> data->chip_info->als_gain_shift; in ltr501_read_raw()
680 *val = data->chip_info->als_gain[i].scale; in ltr501_read_raw()
681 *val2 = data->chip_info->als_gain[i].uscale; in ltr501_read_raw()
684 i = (data->ps_contr & LTR501_CONTR_PS_GAIN_MASK) >> in ltr501_read_raw()
686 *val = data->chip_info->ps_gain[i].scale; in ltr501_read_raw()
687 *val2 = data->chip_info->ps_gain[i].uscale; in ltr501_read_raw()
695 return ltr501_read_it_time(data, val, val2); in ltr501_read_raw()
702 return ltr501_als_read_samp_freq(data, val, val2); in ltr501_read_raw()
704 return ltr501_ps_read_samp_freq(data, val, val2); in ltr501_read_raw()
728 struct ltr501_data *data = iio_priv(indio_dev); in ltr501_write_raw() local
730 struct ltr501_chip_info *info = data->chip_info; in ltr501_write_raw()
745 data->als_contr &= ~info->als_gain_mask; in ltr501_write_raw()
746 data->als_contr |= i << info->als_gain_shift; in ltr501_write_raw()
748 return regmap_write(data->regmap, LTR501_ALS_CONTR, in ltr501_write_raw()
749 data->als_contr); in ltr501_write_raw()
756 data->ps_contr &= ~LTR501_CONTR_PS_GAIN_MASK; in ltr501_write_raw()
757 data->ps_contr |= i << LTR501_CONTR_PS_GAIN_SHIFT; in ltr501_write_raw()
759 return regmap_write(data->regmap, LTR501_PS_CONTR, in ltr501_write_raw()
760 data->ps_contr); in ltr501_write_raw()
769 mutex_lock(&data->lock_als); in ltr501_write_raw()
770 i = ltr501_set_it_time(data, val2); in ltr501_write_raw()
771 mutex_unlock(&data->lock_als); in ltr501_write_raw()
779 ret = ltr501_als_read_samp_freq(data, &freq_val, in ltr501_write_raw()
784 ret = ltr501_als_write_samp_freq(data, val, val2); in ltr501_write_raw()
789 ret = ltr501_write_intr_prst(data, chan->type, in ltr501_write_raw()
790 0, data->als_period); in ltr501_write_raw()
793 return ltr501_als_write_samp_freq(data, in ltr501_write_raw()
798 ret = ltr501_ps_read_samp_freq(data, &freq_val, in ltr501_write_raw()
803 ret = ltr501_ps_write_samp_freq(data, val, val2); in ltr501_write_raw()
808 ret = ltr501_write_intr_prst(data, chan->type, in ltr501_write_raw()
809 0, data->ps_period); in ltr501_write_raw()
812 return ltr501_ps_write_samp_freq(data, in ltr501_write_raw()
830 struct ltr501_data *data = iio_priv(indio_dev); in ltr501_read_thresh() local
837 ret = regmap_bulk_read(data->regmap, in ltr501_read_thresh()
845 ret = regmap_bulk_read(data->regmap, in ltr501_read_thresh()
858 ret = regmap_bulk_read(data->regmap, in ltr501_read_thresh()
866 ret = regmap_bulk_read(data->regmap, in ltr501_read_thresh()
890 struct ltr501_data *data = iio_priv(indio_dev); in ltr501_write_thresh() local
902 mutex_lock(&data->lock_als); in ltr501_write_thresh()
903 ret = regmap_bulk_write(data->regmap, in ltr501_write_thresh()
906 mutex_unlock(&data->lock_als); in ltr501_write_thresh()
909 mutex_lock(&data->lock_als); in ltr501_write_thresh()
910 ret = regmap_bulk_write(data->regmap, in ltr501_write_thresh()
913 mutex_unlock(&data->lock_als); in ltr501_write_thresh()
923 mutex_lock(&data->lock_ps); in ltr501_write_thresh()
924 ret = regmap_bulk_write(data->regmap, in ltr501_write_thresh()
927 mutex_unlock(&data->lock_ps); in ltr501_write_thresh()
930 mutex_lock(&data->lock_ps); in ltr501_write_thresh()
931 ret = regmap_bulk_write(data->regmap, in ltr501_write_thresh()
934 mutex_unlock(&data->lock_ps); in ltr501_write_thresh()
1000 struct ltr501_data *data = iio_priv(indio_dev); in ltr501_read_event_config() local
1005 ret = regmap_field_read(data->reg_als_intr, &status); in ltr501_read_event_config()
1010 ret = regmap_field_read(data->reg_ps_intr, &status); in ltr501_read_event_config()
1026 struct ltr501_data *data = iio_priv(indio_dev); in ltr501_write_event_config() local
1035 mutex_lock(&data->lock_als); in ltr501_write_event_config()
1036 ret = regmap_field_write(data->reg_als_intr, state); in ltr501_write_event_config()
1037 mutex_unlock(&data->lock_als); in ltr501_write_event_config()
1040 mutex_lock(&data->lock_ps); in ltr501_write_event_config()
1041 ret = regmap_field_write(data->reg_ps_intr, state); in ltr501_write_event_config()
1042 mutex_unlock(&data->lock_ps); in ltr501_write_event_config()
1055 struct ltr501_data *data = iio_priv(dev_to_iio_dev(dev)); in ltr501_show_proximity_scale_avail() local
1056 struct ltr501_chip_info *info = data->chip_info; in ltr501_show_proximity_scale_avail()
1077 struct ltr501_data *data = iio_priv(dev_to_iio_dev(dev)); in ltr501_show_intensity_scale_avail() local
1078 struct ltr501_chip_info *info = data->chip_info; in ltr501_show_intensity_scale_avail()
1205 static int ltr501_write_contr(struct ltr501_data *data, u8 als_val, u8 ps_val) in ltr501_write_contr() argument
1209 ret = regmap_write(data->regmap, LTR501_ALS_CONTR, als_val); in ltr501_write_contr()
1213 return regmap_write(data->regmap, LTR501_PS_CONTR, ps_val); in ltr501_write_contr()
1220 struct ltr501_data *data = iio_priv(indio_dev); in ltr501_trigger_handler() local
1236 ret = ltr501_drdy(data, mask); in ltr501_trigger_handler()
1241 ret = regmap_bulk_read(data->regmap, LTR501_ALS_DATA1, in ltr501_trigger_handler()
1252 ret = regmap_bulk_read(data->regmap, LTR501_PS_DATA, in ltr501_trigger_handler()
1270 struct ltr501_data *data = iio_priv(indio_dev); in ltr501_interrupt_handler() local
1273 ret = regmap_read(data->regmap, LTR501_ALS_PS_STATUS, &status); in ltr501_interrupt_handler()
1275 dev_err(&data->client->dev, in ltr501_interrupt_handler()
1297 static int ltr501_init(struct ltr501_data *data) in ltr501_init() argument
1301 ret = regmap_read(data->regmap, LTR501_ALS_CONTR, &status); in ltr501_init()
1305 data->als_contr = status | data->chip_info->als_mode_active; in ltr501_init()
1307 ret = regmap_read(data->regmap, LTR501_PS_CONTR, &status); in ltr501_init()
1311 data->ps_contr = status | LTR501_CONTR_ACTIVE; in ltr501_init()
1313 ret = ltr501_read_intr_prst(data, IIO_INTENSITY, &data->als_period); in ltr501_init()
1317 ret = ltr501_read_intr_prst(data, IIO_PROXIMITY, &data->ps_period); in ltr501_init()
1321 return ltr501_write_contr(data, data->als_contr, data->ps_contr); in ltr501_init()
1346 static int ltr501_powerdown(struct ltr501_data *data) in ltr501_powerdown() argument
1348 return ltr501_write_contr(data, data->als_contr & in ltr501_powerdown()
1349 ~data->chip_info->als_mode_active, in ltr501_powerdown()
1350 data->ps_contr & ~LTR501_CONTR_ACTIVE); in ltr501_powerdown()
1367 struct ltr501_data *data; in ltr501_probe() local
1373 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); in ltr501_probe()
1383 data = iio_priv(indio_dev); in ltr501_probe()
1385 data->client = client; in ltr501_probe()
1386 data->regmap = regmap; in ltr501_probe()
1387 mutex_init(&data->lock_als); in ltr501_probe()
1388 mutex_init(&data->lock_ps); in ltr501_probe()
1390 data->reg_it = devm_regmap_field_alloc(&client->dev, regmap, in ltr501_probe()
1392 if (IS_ERR(data->reg_it)) { in ltr501_probe()
1394 return PTR_ERR(data->reg_it); in ltr501_probe()
1397 data->reg_als_intr = devm_regmap_field_alloc(&client->dev, regmap, in ltr501_probe()
1399 if (IS_ERR(data->reg_als_intr)) { in ltr501_probe()
1401 return PTR_ERR(data->reg_als_intr); in ltr501_probe()
1404 data->reg_ps_intr = devm_regmap_field_alloc(&client->dev, regmap, in ltr501_probe()
1406 if (IS_ERR(data->reg_ps_intr)) { in ltr501_probe()
1408 return PTR_ERR(data->reg_ps_intr); in ltr501_probe()
1411 data->reg_als_rate = devm_regmap_field_alloc(&client->dev, regmap, in ltr501_probe()
1413 if (IS_ERR(data->reg_als_rate)) { in ltr501_probe()
1415 return PTR_ERR(data->reg_als_rate); in ltr501_probe()
1418 data->reg_ps_rate = devm_regmap_field_alloc(&client->dev, regmap, in ltr501_probe()
1420 if (IS_ERR(data->reg_ps_rate)) { in ltr501_probe()
1422 return PTR_ERR(data->reg_ps_rate); in ltr501_probe()
1425 data->reg_als_prst = devm_regmap_field_alloc(&client->dev, regmap, in ltr501_probe()
1427 if (IS_ERR(data->reg_als_prst)) { in ltr501_probe()
1429 return PTR_ERR(data->reg_als_prst); in ltr501_probe()
1432 data->reg_ps_prst = devm_regmap_field_alloc(&client->dev, regmap, in ltr501_probe()
1434 if (IS_ERR(data->reg_ps_prst)) { in ltr501_probe()
1436 return PTR_ERR(data->reg_ps_prst); in ltr501_probe()
1439 ret = regmap_read(data->regmap, LTR501_PART_ID, &partid); in ltr501_probe()
1452 data->chip_info = &ltr501_chip_info_tbl[chip_idx]; in ltr501_probe()
1454 if ((partid >> 4) != data->chip_info->partid) in ltr501_probe()
1458 indio_dev->info = data->chip_info->info; in ltr501_probe()
1459 indio_dev->channels = data->chip_info->channels; in ltr501_probe()
1460 indio_dev->num_channels = data->chip_info->no_channels; in ltr501_probe()
1464 ret = ltr501_init(data); in ltr501_probe()
1481 indio_dev->info = data->chip_info->info_no_irq; in ltr501_probe()
1498 ltr501_powerdown(data); in ltr501_probe()
1516 struct ltr501_data *data = iio_priv(i2c_get_clientdata( in ltr501_suspend() local
1518 return ltr501_powerdown(data); in ltr501_suspend()
1523 struct ltr501_data *data = iio_priv(i2c_get_clientdata( in ltr501_resume() local
1526 return ltr501_write_contr(data, data->als_contr, in ltr501_resume()
1527 data->ps_contr); in ltr501_resume()