Lines Matching refs:data

204 static int sx9500_inc_users(struct sx9500_data *data, int *counter,
212 return regmap_update_bits(data->regmap, reg, bitmask, bitmask);
215 static int sx9500_dec_users(struct sx9500_data *data, int *counter,
223 return regmap_update_bits(data->regmap, reg, bitmask, 0);
226 static int sx9500_inc_chan_users(struct sx9500_data *data, int chan)
228 return sx9500_inc_users(data, &data->channel_users[chan],
232 static int sx9500_dec_chan_users(struct sx9500_data *data, int chan)
234 return sx9500_dec_users(data, &data->channel_users[chan],
238 static int sx9500_inc_data_rdy_users(struct sx9500_data *data)
240 return sx9500_inc_users(data, &data->data_rdy_users,
244 static int sx9500_dec_data_rdy_users(struct sx9500_data *data)
246 return sx9500_dec_users(data, &data->data_rdy_users,
250 static int sx9500_inc_close_far_users(struct sx9500_data *data)
252 return sx9500_inc_users(data, &data->close_far_users,
257 static int sx9500_dec_close_far_users(struct sx9500_data *data)
259 return sx9500_dec_users(data, &data->close_far_users,
264 static int sx9500_read_prox_data(struct sx9500_data *data,
271 ret = regmap_write(data->regmap, SX9500_REG_SENSOR_SEL, chan->channel);
275 ret = regmap_bulk_read(data->regmap, SX9500_REG_USE_MSB, &regval, 2);
288 static int sx9500_wait_for_sample(struct sx9500_data *data)
293 ret = regmap_read(data->regmap, SX9500_REG_PROX_CTRL0, &val);
304 static int sx9500_read_proximity(struct sx9500_data *data,
310 mutex_lock(&data->mutex);
312 ret = sx9500_inc_chan_users(data, chan->channel);
316 ret = sx9500_inc_data_rdy_users(data);
320 mutex_unlock(&data->mutex);
322 if (data->client->irq > 0)
323 ret = wait_for_completion_interruptible(&data->completion);
325 ret = sx9500_wait_for_sample(data);
327 mutex_lock(&data->mutex);
332 ret = sx9500_read_prox_data(data, chan, val);
336 ret = sx9500_dec_data_rdy_users(data);
340 ret = sx9500_dec_chan_users(data, chan->channel);
349 sx9500_dec_data_rdy_users(data);
351 sx9500_dec_chan_users(data, chan->channel);
353 mutex_unlock(&data->mutex);
354 reinit_completion(&data->completion);
359 static int sx9500_read_samp_freq(struct sx9500_data *data,
365 mutex_lock(&data->mutex);
366 ret = regmap_read(data->regmap, SX9500_REG_PROX_CTRL0, &regval);
367 mutex_unlock(&data->mutex);
383 struct sx9500_data *data = iio_priv(indio_dev);
393 ret = sx9500_read_proximity(data, chan, val);
397 return sx9500_read_samp_freq(data, val, val2);
406 static int sx9500_set_samp_freq(struct sx9500_data *data,
419 mutex_lock(&data->mutex);
421 ret = regmap_update_bits(data->regmap, SX9500_REG_PROX_CTRL0,
425 mutex_unlock(&data->mutex);
434 struct sx9500_data *data = iio_priv(indio_dev);
440 return sx9500_set_samp_freq(data, val, val2);
452 struct sx9500_data *data = iio_priv(indio_dev);
454 if (data->trigger_enabled)
455 iio_trigger_poll(data->trig);
470 struct sx9500_data *data = iio_priv(indio_dev);
472 ret = regmap_read(data->regmap, SX9500_REG_STAT, &val);
474 dev_err(&data->client->dev, "i2c transfer error in irq\n");
484 if (!data->event_enabled[chan])
486 if (new_prox == data->prox_stat[chan])
494 data->prox_stat[chan] = new_prox;
501 struct sx9500_data *data = iio_priv(indio_dev);
505 mutex_lock(&data->mutex);
507 ret = regmap_read(data->regmap, SX9500_REG_IRQ_SRC, &val);
509 dev_err(&data->client->dev, "i2c transfer error in irq\n");
517 complete(&data->completion);
520 mutex_unlock(&data->mutex);
530 struct sx9500_data *data = iio_priv(indio_dev);
536 return data->event_enabled[chan->channel];
545 struct sx9500_data *data = iio_priv(indio_dev);
552 mutex_lock(&data->mutex);
555 ret = sx9500_inc_chan_users(data, chan->channel);
558 ret = sx9500_inc_close_far_users(data);
562 ret = sx9500_dec_chan_users(data, chan->channel);
565 ret = sx9500_dec_close_far_users(data);
570 data->event_enabled[chan->channel] = state;
575 sx9500_dec_chan_users(data, chan->channel);
577 sx9500_inc_chan_users(data, chan->channel);
579 mutex_unlock(&data->mutex);
586 struct sx9500_data *data = iio_priv(indio_dev);
588 mutex_lock(&data->mutex);
589 kfree(data->buffer);
590 data->buffer = kzalloc(indio_dev->scan_bytes, GFP_KERNEL);
591 mutex_unlock(&data->mutex);
593 if (data->buffer == NULL)
624 struct sx9500_data *data = iio_priv(indio_dev);
627 mutex_lock(&data->mutex);
630 ret = sx9500_inc_data_rdy_users(data);
632 ret = sx9500_dec_data_rdy_users(data);
636 data->trigger_enabled = state;
639 mutex_unlock(&data->mutex);
652 struct sx9500_data *data = iio_priv(indio_dev);
655 mutex_lock(&data->mutex);
659 ret = sx9500_read_prox_data(data, &indio_dev->channels[bit],
664 data->buffer[i++] = val;
667 iio_push_to_buffers_with_timestamp(indio_dev, data->buffer,
671 mutex_unlock(&data->mutex);
680 struct sx9500_data *data = iio_priv(indio_dev);
683 mutex_lock(&data->mutex);
687 ret = sx9500_inc_chan_users(data, i);
695 sx9500_dec_chan_users(data, i);
697 mutex_unlock(&data->mutex);
704 struct sx9500_data *data = iio_priv(indio_dev);
707 mutex_lock(&data->mutex);
711 ret = sx9500_dec_chan_users(data, i);
719 sx9500_inc_chan_users(data, i);
721 mutex_unlock(&data->mutex);
794 struct sx9500_data *data = iio_priv(indio_dev);
798 ret = regmap_update_bits(data->regmap, SX9500_REG_PROX_CTRL0,
805 ret = regmap_read(data->regmap, SX9500_REG_STAT, &val);
813 dev_err(&data->client->dev, "initial compensation timed out");
818 regmap_update_bits(data->regmap, SX9500_REG_PROX_CTRL0,
825 struct sx9500_data *data = iio_priv(indio_dev);
829 if (data->gpiod_rst) {
830 gpiod_set_value_cansleep(data->gpiod_rst, 0);
832 gpiod_set_value_cansleep(data->gpiod_rst, 1);
836 ret = regmap_write(data->regmap, SX9500_REG_IRQ_MSK, 0);
840 ret = regmap_write(data->regmap, SX9500_REG_RESET,
845 ret = regmap_read(data->regmap, SX9500_REG_IRQ_SRC, &val);
850 ret = regmap_write(data->regmap,
874 struct sx9500_data *data)
897 data->gpiod_rst = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
898 if (IS_ERR(data->gpiod_rst)) {
900 data->gpiod_rst = NULL;
908 struct sx9500_data *data;
910 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
914 data = iio_priv(indio_dev);
915 data->client = client;
916 mutex_init(&data->mutex);
917 init_completion(&data->completion);
918 data->trigger_enabled = false;
920 data->regmap = devm_regmap_init_i2c(client, &sx9500_regmap_config);
921 if (IS_ERR(data->regmap))
922 return PTR_ERR(data->regmap);
931 sx9500_gpio_probe(client, data);
947 data->trig = devm_iio_trigger_alloc(&client->dev,
949 if (!data->trig)
952 data->trig->ops = &sx9500_trigger_ops;
953 iio_trigger_set_drvdata(data->trig, indio_dev);
955 ret = iio_trigger_register(data->trig);
976 iio_trigger_unregister(data->trig);
984 struct sx9500_data *data = iio_priv(indio_dev);
989 iio_trigger_unregister(data->trig);
990 kfree(data->buffer);
996 struct sx9500_data *data = iio_priv(indio_dev);
999 mutex_lock(&data->mutex);
1000 ret = regmap_read(data->regmap, SX9500_REG_PROX_CTRL0,
1001 &data->suspend_ctrl0);
1009 ret = regmap_write(data->regmap, SX9500_REG_PROX_CTRL0, 0);
1012 mutex_unlock(&data->mutex);
1019 struct sx9500_data *data = iio_priv(indio_dev);
1022 mutex_lock(&data->mutex);
1023 ret = regmap_write(data->regmap, SX9500_REG_PROX_CTRL0,
1024 data->suspend_ctrl0);
1025 mutex_unlock(&data->mutex);