• Home
  • Raw
  • Download

Lines Matching refs:opt

146 static int opt3001_find_scale(const struct opt3001 *opt, int val,  in opt3001_find_scale()  argument
169 static void opt3001_to_iio_ret(struct opt3001 *opt, u8 exponent, in opt3001_to_iio_ret() argument
179 static void opt3001_set_mode(struct opt3001 *opt, u16 *reg, u16 mode) in opt3001_set_mode() argument
183 opt->mode = mode; in opt3001_set_mode()
223 static int opt3001_get_lux(struct opt3001 *opt, int *val, int *val2) in opt3001_get_lux() argument
236 ret = i2c_smbus_write_word_swapped(opt->client, OPT3001_LOW_LIMIT, in opt3001_get_lux()
239 dev_err(opt->dev, "failed to write register %02x\n", in opt3001_get_lux()
245 opt->result_ready = false; in opt3001_get_lux()
248 opt->ok_to_ignore_lock = true; in opt3001_get_lux()
251 ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_CONFIGURATION); in opt3001_get_lux()
253 dev_err(opt->dev, "failed to read register %02x\n", in opt3001_get_lux()
259 opt3001_set_mode(opt, &reg, OPT3001_CONFIGURATION_M_SINGLE); in opt3001_get_lux()
261 ret = i2c_smbus_write_word_swapped(opt->client, OPT3001_CONFIGURATION, in opt3001_get_lux()
264 dev_err(opt->dev, "failed to write register %02x\n", in opt3001_get_lux()
270 ret = wait_event_timeout(opt->result_ready_queue, opt->result_ready, in opt3001_get_lux()
275 opt->ok_to_ignore_lock = false; in opt3001_get_lux()
288 value = (opt->low_thresh_exp << 12) | opt->low_thresh_mantissa; in opt3001_get_lux()
289 ret = i2c_smbus_write_word_swapped(opt->client, OPT3001_LOW_LIMIT, in opt3001_get_lux()
292 dev_err(opt->dev, "failed to write register %02x\n", in opt3001_get_lux()
297 exponent = OPT3001_REG_EXPONENT(opt->result); in opt3001_get_lux()
298 mantissa = OPT3001_REG_MANTISSA(opt->result); in opt3001_get_lux()
300 opt3001_to_iio_ret(opt, exponent, mantissa, val, val2); in opt3001_get_lux()
305 static int opt3001_get_int_time(struct opt3001 *opt, int *val, int *val2) in opt3001_get_int_time() argument
308 *val2 = opt->int_time; in opt3001_get_int_time()
313 static int opt3001_set_int_time(struct opt3001 *opt, int time) in opt3001_set_int_time() argument
318 ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_CONFIGURATION); in opt3001_set_int_time()
320 dev_err(opt->dev, "failed to read register %02x\n", in opt3001_set_int_time()
330 opt->int_time = 100000; in opt3001_set_int_time()
334 opt->int_time = 800000; in opt3001_set_int_time()
340 return i2c_smbus_write_word_swapped(opt->client, OPT3001_CONFIGURATION, in opt3001_set_int_time()
348 struct opt3001 *opt = iio_priv(iio); in opt3001_read_raw() local
351 if (opt->mode == OPT3001_CONFIGURATION_M_CONTINUOUS) in opt3001_read_raw()
357 mutex_lock(&opt->lock); in opt3001_read_raw()
361 ret = opt3001_get_lux(opt, val, val2); in opt3001_read_raw()
364 ret = opt3001_get_int_time(opt, val, val2); in opt3001_read_raw()
370 mutex_unlock(&opt->lock); in opt3001_read_raw()
379 struct opt3001 *opt = iio_priv(iio); in opt3001_write_raw() local
382 if (opt->mode == OPT3001_CONFIGURATION_M_CONTINUOUS) in opt3001_write_raw()
394 mutex_lock(&opt->lock); in opt3001_write_raw()
395 ret = opt3001_set_int_time(opt, val2); in opt3001_write_raw()
396 mutex_unlock(&opt->lock); in opt3001_write_raw()
406 struct opt3001 *opt = iio_priv(iio); in opt3001_read_event_value() local
409 mutex_lock(&opt->lock); in opt3001_read_event_value()
413 opt3001_to_iio_ret(opt, opt->high_thresh_exp, in opt3001_read_event_value()
414 opt->high_thresh_mantissa, val, val2); in opt3001_read_event_value()
417 opt3001_to_iio_ret(opt, opt->low_thresh_exp, in opt3001_read_event_value()
418 opt->low_thresh_mantissa, val, val2); in opt3001_read_event_value()
424 mutex_unlock(&opt->lock); in opt3001_read_event_value()
434 struct opt3001 *opt = iio_priv(iio); in opt3001_write_event_value() local
446 mutex_lock(&opt->lock); in opt3001_write_event_value()
448 ret = opt3001_find_scale(opt, val, val2, &exponent); in opt3001_write_event_value()
450 dev_err(opt->dev, "can't find scale for %d.%06u\n", val, val2); in opt3001_write_event_value()
460 opt->high_thresh_mantissa = mantissa; in opt3001_write_event_value()
461 opt->high_thresh_exp = exponent; in opt3001_write_event_value()
465 opt->low_thresh_mantissa = mantissa; in opt3001_write_event_value()
466 opt->low_thresh_exp = exponent; in opt3001_write_event_value()
473 ret = i2c_smbus_write_word_swapped(opt->client, reg, value); in opt3001_write_event_value()
475 dev_err(opt->dev, "failed to write register %02x\n", reg); in opt3001_write_event_value()
480 mutex_unlock(&opt->lock); in opt3001_write_event_value()
489 struct opt3001 *opt = iio_priv(iio); in opt3001_read_event_config() local
491 return opt->mode == OPT3001_CONFIGURATION_M_CONTINUOUS; in opt3001_read_event_config()
498 struct opt3001 *opt = iio_priv(iio); in opt3001_write_event_config() local
503 if (state && opt->mode == OPT3001_CONFIGURATION_M_CONTINUOUS) in opt3001_write_event_config()
506 if (!state && opt->mode == OPT3001_CONFIGURATION_M_SHUTDOWN) in opt3001_write_event_config()
509 mutex_lock(&opt->lock); in opt3001_write_event_config()
514 ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_CONFIGURATION); in opt3001_write_event_config()
516 dev_err(opt->dev, "failed to read register %02x\n", in opt3001_write_event_config()
522 opt3001_set_mode(opt, &reg, mode); in opt3001_write_event_config()
524 ret = i2c_smbus_write_word_swapped(opt->client, OPT3001_CONFIGURATION, in opt3001_write_event_config()
527 dev_err(opt->dev, "failed to write register %02x\n", in opt3001_write_event_config()
533 mutex_unlock(&opt->lock); in opt3001_write_event_config()
549 static int opt3001_read_id(struct opt3001 *opt) in opt3001_read_id() argument
555 ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_MANUFACTURER_ID); in opt3001_read_id()
557 dev_err(opt->dev, "failed to read register %02x\n", in opt3001_read_id()
565 ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_DEVICE_ID); in opt3001_read_id()
567 dev_err(opt->dev, "failed to read register %02x\n", in opt3001_read_id()
574 dev_info(opt->dev, "Found %c%c OPT%04x\n", manufacturer[0], in opt3001_read_id()
580 static int opt3001_configure(struct opt3001 *opt) in opt3001_configure() argument
585 ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_CONFIGURATION); in opt3001_configure()
587 dev_err(opt->dev, "failed to read register %02x\n", in opt3001_configure()
600 opt->int_time = 800000; in opt3001_configure()
602 opt->int_time = 100000; in opt3001_configure()
605 opt3001_set_mode(opt, &reg, OPT3001_CONFIGURATION_M_SHUTDOWN); in opt3001_configure()
613 ret = i2c_smbus_write_word_swapped(opt->client, OPT3001_CONFIGURATION, in opt3001_configure()
616 dev_err(opt->dev, "failed to write register %02x\n", in opt3001_configure()
621 ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_LOW_LIMIT); in opt3001_configure()
623 dev_err(opt->dev, "failed to read register %02x\n", in opt3001_configure()
628 opt->low_thresh_mantissa = OPT3001_REG_MANTISSA(ret); in opt3001_configure()
629 opt->low_thresh_exp = OPT3001_REG_EXPONENT(ret); in opt3001_configure()
631 ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_HIGH_LIMIT); in opt3001_configure()
633 dev_err(opt->dev, "failed to read register %02x\n", in opt3001_configure()
638 opt->high_thresh_mantissa = OPT3001_REG_MANTISSA(ret); in opt3001_configure()
639 opt->high_thresh_exp = OPT3001_REG_EXPONENT(ret); in opt3001_configure()
647 struct opt3001 *opt = iio_priv(iio); in opt3001_irq() local
651 if (!opt->ok_to_ignore_lock) in opt3001_irq()
652 mutex_lock(&opt->lock); in opt3001_irq()
654 ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_CONFIGURATION); in opt3001_irq()
656 dev_err(opt->dev, "failed to read register %02x\n", in opt3001_irq()
676 ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_RESULT); in opt3001_irq()
678 dev_err(opt->dev, "failed to read register %02x\n", in opt3001_irq()
682 opt->result = ret; in opt3001_irq()
683 opt->result_ready = true; in opt3001_irq()
688 if (!opt->ok_to_ignore_lock) in opt3001_irq()
689 mutex_unlock(&opt->lock); in opt3001_irq()
692 wake_up(&opt->result_ready_queue); in opt3001_irq()
703 struct opt3001 *opt; in opt3001_probe() local
707 iio = devm_iio_device_alloc(dev, sizeof(*opt)); in opt3001_probe()
711 opt = iio_priv(iio); in opt3001_probe()
712 opt->client = client; in opt3001_probe()
713 opt->dev = dev; in opt3001_probe()
715 mutex_init(&opt->lock); in opt3001_probe()
716 init_waitqueue_head(&opt->result_ready_queue); in opt3001_probe()
719 ret = opt3001_read_id(opt); in opt3001_probe()
723 ret = opt3001_configure(opt); in opt3001_probe()
754 struct opt3001 *opt = iio_priv(iio); in opt3001_remove() local
760 ret = i2c_smbus_read_word_swapped(opt->client, OPT3001_CONFIGURATION); in opt3001_remove()
762 dev_err(opt->dev, "failed to read register %02x\n", in opt3001_remove()
768 opt3001_set_mode(opt, &reg, OPT3001_CONFIGURATION_M_SHUTDOWN); in opt3001_remove()
770 ret = i2c_smbus_write_word_swapped(opt->client, OPT3001_CONFIGURATION, in opt3001_remove()
773 dev_err(opt->dev, "failed to write register %02x\n", in opt3001_remove()