Lines Matching refs:data

137  * store in the device data.
172 static long ak8975_raw_to_gauss(u16 data)
174 return (((long)data + 128) * 3000) / 256;
186 static long ak8963_09911_raw_to_gauss(u16 data)
188 return (((long)data + 128) * 6000) / 256;
199 static long ak09912_raw_to_gauss(u16 data)
201 return (((long)data + 128) * 1500) / 256;
240 long (*raw_to_gauss)(u16 data);
352 * Per-instance context data for the device.
378 static int ak8975_power_on(const struct ak8975_data *data)
382 ret = regulator_enable(data->vdd);
384 dev_warn(&data->client->dev,
388 ret = regulator_enable(data->vid);
390 dev_warn(&data->client->dev,
392 regulator_disable(data->vdd);
396 gpiod_set_value_cansleep(data->reset_gpiod, 0);
408 static void ak8975_power_off(const struct ak8975_data *data)
410 gpiod_set_value_cansleep(data->reset_gpiod, 1);
412 regulator_disable(data->vid);
413 regulator_disable(data->vdd);
465 static int ak8975_set_mode(struct ak8975_data *data, enum ak_ctrl_mode mode)
470 regval = (data->cntl_cache & ~data->def->ctrl_masks[CNTL_MODE]) |
471 data->def->ctrl_modes[mode];
472 ret = i2c_smbus_write_byte_data(data->client,
473 data->def->ctrl_regs[CNTL], regval);
477 data->cntl_cache = regval;
485 * Handle data ready irq
487 static irqreturn_t ak8975_irq_handler(int irq, void *data)
489 struct ak8975_data *ak8975 = data;
498 * Install data ready interrupt handler
500 static int ak8975_setup_irq(struct ak8975_data *data)
502 struct i2c_client *client = data->client;
506 init_waitqueue_head(&data->data_ready_queue);
507 clear_bit(0, &data->flags);
511 irq = gpiod_to_irq(data->eoc_gpiod);
515 dev_name(&client->dev), data);
521 data->eoc_irq = irq;
534 struct ak8975_data *data = iio_priv(indio_dev);
538 ret = ak8975_set_mode(data, FUSE_ROM);
544 /* Get asa data and store in the device data. */
546 client, data->def->ctrl_regs[ASA_BASE],
547 3, data->asa);
549 dev_err(&client->dev, "Not able to read asa data\n");
553 /* After reading fuse ROM data set power-down mode */
554 ret = ak8975_set_mode(data, POWER_DOWN);
560 if (data->eoc_gpiod || client->irq > 0) {
561 ret = ak8975_setup_irq(data);
564 "Error setting data ready interrupt\n");
569 data->raw_to_gauss[0] = data->def->raw_to_gauss(data->asa[0]);
570 data->raw_to_gauss[1] = data->def->raw_to_gauss(data->asa[1]);
571 data->raw_to_gauss[2] = data->def->raw_to_gauss(data->asa[2]);
576 static int wait_conversion_complete_gpio(struct ak8975_data *data)
578 struct i2c_client *client = data->client;
585 if (gpiod_get_value(data->eoc_gpiod))
594 ret = i2c_smbus_read_byte_data(client, data->def->ctrl_regs[ST1]);
601 static int wait_conversion_complete_polled(struct ak8975_data *data)
603 struct i2c_client *client = data->client;
612 data->def->ctrl_regs[ST1]);
631 static int wait_conversion_complete_interrupt(struct ak8975_data *data)
635 ret = wait_event_timeout(data->data_ready_queue,
636 test_bit(0, &data->flags),
638 clear_bit(0, &data->flags);
643 static int ak8975_start_read_axis(struct ak8975_data *data,
647 int ret = ak8975_set_mode(data, MODE_ONCE);
655 if (data->eoc_irq)
656 ret = wait_conversion_complete_interrupt(data);
657 else if (data->eoc_gpiod)
658 ret = wait_conversion_complete_gpio(data);
660 ret = wait_conversion_complete_polled(data);
665 if (ret & data->def->ctrl_masks[ST1_DRDY]) {
667 data->def->ctrl_regs[ST2]);
672 if (ret & (data->def->ctrl_masks[ST2_DERR] |
673 data->def->ctrl_masks[ST2_HOFL])) {
685 struct ak8975_data *data = iio_priv(indio_dev);
686 const struct i2c_client *client = data->client;
687 const struct ak_def *def = data->def;
692 pm_runtime_get_sync(&data->client->dev);
694 mutex_lock(&data->lock);
696 ret = ak8975_start_read_axis(data, client);
706 mutex_unlock(&data->lock);
708 pm_runtime_mark_last_busy(&data->client->dev);
709 pm_runtime_put_autosuspend(&data->client->dev);
717 mutex_unlock(&data->lock);
727 struct ak8975_data *data = iio_priv(indio_dev);
734 *val2 = data->raw_to_gauss[chan->address];
744 struct ak8975_data *data = iio_priv(indio_dev);
746 return &data->orientation;
797 struct ak8975_data *data = iio_priv(indio_dev);
798 const struct i2c_client *client = data->client;
799 const struct ak_def *def = data->def;
803 mutex_lock(&data->lock);
805 ret = ak8975_start_read_axis(data, client);
820 mutex_unlock(&data->lock);
823 data->scan.channels[0] = clamp_t(s16, le16_to_cpu(fval[0]), -def->range, def->range);
824 data->scan.channels[1] = clamp_t(s16, le16_to_cpu(fval[1]), -def->range, def->range);
825 data->scan.channels[2] = clamp_t(s16, le16_to_cpu(fval[2]), -def->range, def->range);
827 iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
833 mutex_unlock(&data->lock);
850 struct ak8975_data *data;
882 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
886 data = iio_priv(indio_dev);
889 data->client = client;
890 data->eoc_gpiod = eoc_gpiod;
891 data->reset_gpiod = reset_gpiod;
892 data->eoc_irq = 0;
894 err = iio_read_mount_matrix(&client->dev, "mount-matrix", &data->orientation);
919 data->def = &ak_def_array[i];
922 data->vdd = devm_regulator_get(&client->dev, "vdd");
923 if (IS_ERR(data->vdd))
924 return PTR_ERR(data->vdd);
925 data->vid = devm_regulator_get(&client->dev, "vid");
926 if (IS_ERR(data->vid))
927 return PTR_ERR(data->vid);
929 err = ak8975_power_on(data);
933 err = ak8975_who_i_am(client, data->def->type);
947 mutex_init(&data->lock);
985 ak8975_power_off(data);
992 struct ak8975_data *data = iio_priv(indio_dev);
999 ak8975_set_mode(data, POWER_DOWN);
1000 ak8975_power_off(data);
1010 struct ak8975_data *data = iio_priv(indio_dev);
1014 ret = ak8975_set_mode(data, POWER_DOWN);
1020 ak8975_power_off(data);
1029 struct ak8975_data *data = iio_priv(indio_dev);
1033 ak8975_power_on(data);
1038 ret = ak8975_set_mode(data, POWER_DOWN);