Lines Matching refs:data

194 static int sx9500_read_proximity(struct sx9500_data *data,  in sx9500_read_proximity()  argument
201 ret = regmap_write(data->regmap, SX9500_REG_SENSOR_SEL, chan->channel); in sx9500_read_proximity()
205 ret = regmap_bulk_read(data->regmap, SX9500_REG_USE_MSB, &regval, 2); in sx9500_read_proximity()
214 static int sx9500_read_samp_freq(struct sx9500_data *data, in sx9500_read_samp_freq() argument
220 mutex_lock(&data->mutex); in sx9500_read_samp_freq()
221 ret = regmap_read(data->regmap, SX9500_REG_PROX_CTRL0, &regval); in sx9500_read_samp_freq()
222 mutex_unlock(&data->mutex); in sx9500_read_samp_freq()
238 struct sx9500_data *data = iio_priv(indio_dev); in sx9500_read_raw() local
247 mutex_lock(&data->mutex); in sx9500_read_raw()
248 ret = sx9500_read_proximity(data, chan, val); in sx9500_read_raw()
249 mutex_unlock(&data->mutex); in sx9500_read_raw()
252 return sx9500_read_samp_freq(data, val, val2); in sx9500_read_raw()
261 static int sx9500_set_samp_freq(struct sx9500_data *data, in sx9500_set_samp_freq() argument
274 mutex_lock(&data->mutex); in sx9500_set_samp_freq()
276 ret = regmap_update_bits(data->regmap, SX9500_REG_PROX_CTRL0, in sx9500_set_samp_freq()
280 mutex_unlock(&data->mutex); in sx9500_set_samp_freq()
289 struct sx9500_data *data = iio_priv(indio_dev); in sx9500_write_raw() local
295 return sx9500_set_samp_freq(data, val, val2); in sx9500_write_raw()
307 struct sx9500_data *data = iio_priv(indio_dev); in sx9500_irq_handler() local
309 if (data->trigger_enabled) in sx9500_irq_handler()
310 iio_trigger_poll(data->trig); in sx9500_irq_handler()
324 struct sx9500_data *data = iio_priv(indio_dev); in sx9500_irq_thread_handler() local
328 mutex_lock(&data->mutex); in sx9500_irq_thread_handler()
330 ret = regmap_read(data->regmap, SX9500_REG_IRQ_SRC, &val); in sx9500_irq_thread_handler()
332 dev_err(&data->client->dev, "i2c transfer error in irq\n"); in sx9500_irq_thread_handler()
339 ret = regmap_read(data->regmap, SX9500_REG_STAT, &val); in sx9500_irq_thread_handler()
341 dev_err(&data->client->dev, "i2c transfer error in irq\n"); in sx9500_irq_thread_handler()
351 if (!data->event_enabled[chan]) in sx9500_irq_thread_handler()
353 if (new_prox == data->prox_stat[chan]) in sx9500_irq_thread_handler()
364 data->prox_stat[chan] = new_prox; in sx9500_irq_thread_handler()
368 mutex_unlock(&data->mutex); in sx9500_irq_thread_handler()
378 struct sx9500_data *data = iio_priv(indio_dev); in sx9500_read_event_config() local
384 return data->event_enabled[chan->channel]; in sx9500_read_event_config()
393 struct sx9500_data *data = iio_priv(indio_dev); in sx9500_write_event_config() local
402 mutex_lock(&data->mutex); in sx9500_write_event_config()
404 data->event_enabled[chan->channel] = state; in sx9500_write_event_config()
407 if (data->event_enabled[i]) { in sx9500_write_event_config()
414 ret = regmap_update_bits(data->regmap, SX9500_REG_IRQ_MSK, in sx9500_write_event_config()
417 ret = regmap_update_bits(data->regmap, SX9500_REG_IRQ_MSK, in sx9500_write_event_config()
420 mutex_unlock(&data->mutex); in sx9500_write_event_config()
428 struct sx9500_data *data = iio_priv(indio_dev); in sx9500_update_scan_mode() local
430 mutex_lock(&data->mutex); in sx9500_update_scan_mode()
431 kfree(data->buffer); in sx9500_update_scan_mode()
432 data->buffer = kzalloc(indio_dev->scan_bytes, GFP_KERNEL); in sx9500_update_scan_mode()
433 mutex_unlock(&data->mutex); in sx9500_update_scan_mode()
435 if (data->buffer == NULL) in sx9500_update_scan_mode()
467 struct sx9500_data *data = iio_priv(indio_dev); in sx9500_set_trigger_state() local
470 mutex_lock(&data->mutex); in sx9500_set_trigger_state()
472 ret = regmap_update_bits(data->regmap, SX9500_REG_IRQ_MSK, in sx9500_set_trigger_state()
476 data->trigger_enabled = state; in sx9500_set_trigger_state()
478 mutex_unlock(&data->mutex); in sx9500_set_trigger_state()
492 struct sx9500_data *data = iio_priv(indio_dev); in sx9500_trigger_handler() local
495 mutex_lock(&data->mutex); in sx9500_trigger_handler()
499 ret = sx9500_read_proximity(data, &indio_dev->channels[bit], in sx9500_trigger_handler()
504 data->buffer[i++] = val; in sx9500_trigger_handler()
507 iio_push_to_buffers_with_timestamp(indio_dev, data->buffer, in sx9500_trigger_handler()
511 mutex_unlock(&data->mutex); in sx9500_trigger_handler()
580 struct sx9500_data *data = iio_priv(indio_dev); in sx9500_init_device() local
584 ret = regmap_write(data->regmap, SX9500_REG_IRQ_MSK, 0); in sx9500_init_device()
588 ret = regmap_write(data->regmap, SX9500_REG_RESET, in sx9500_init_device()
593 ret = regmap_read(data->regmap, SX9500_REG_IRQ_SRC, &val); in sx9500_init_device()
598 ret = regmap_write(data->regmap, in sx9500_init_device()
609 struct sx9500_data *data) in sx9500_gpio_probe() argument
639 struct sx9500_data *data; in sx9500_probe() local
641 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); in sx9500_probe()
645 data = iio_priv(indio_dev); in sx9500_probe()
646 data->client = client; in sx9500_probe()
647 mutex_init(&data->mutex); in sx9500_probe()
648 data->trigger_enabled = false; in sx9500_probe()
650 data->regmap = devm_regmap_init_i2c(client, &sx9500_regmap_config); in sx9500_probe()
651 if (IS_ERR(data->regmap)) in sx9500_probe()
652 return PTR_ERR(data->regmap); in sx9500_probe()
665 client->irq = sx9500_gpio_probe(client, data); in sx9500_probe()
675 data->trig = devm_iio_trigger_alloc(&client->dev, in sx9500_probe()
677 if (!data->trig) in sx9500_probe()
680 data->trig->dev.parent = &client->dev; in sx9500_probe()
681 data->trig->ops = &sx9500_trigger_ops; in sx9500_probe()
682 iio_trigger_set_drvdata(data->trig, indio_dev); in sx9500_probe()
684 ret = iio_trigger_register(data->trig); in sx9500_probe()
704 iio_trigger_unregister(data->trig); in sx9500_probe()
712 struct sx9500_data *data = iio_priv(indio_dev); in sx9500_remove() local
717 iio_trigger_unregister(data->trig); in sx9500_remove()
718 kfree(data->buffer); in sx9500_remove()