Lines Matching refs:data
61 int (*chip_config)(struct bma180_data *data);
62 void (*chip_disable)(struct bma180_data *data);
75 #define BMA023_NEW_DATA_INT BIT(5) /* Intr every new accel data is ready */
79 #define BMA180_ACC_X_LSB 0x02 /* First of 6 registers of accel data */
95 #define BMA180_NEW_DATA_INT BIT(1) /* Intr every new accel data is ready */
168 static int bma180_get_data_reg(struct bma180_data *data, enum bma180_chan chan)
172 if (data->sleep_state)
177 ret = i2c_smbus_read_byte_data(data->client, BMA180_TEMP);
179 dev_err(&data->client->dev, "failed to read temp register\n");
182 ret = i2c_smbus_read_word_data(data->client,
185 dev_err(&data->client->dev,
193 static int bma180_set_bits(struct bma180_data *data, u8 reg, u8 mask, u8 val)
195 int ret = i2c_smbus_read_byte_data(data->client, reg);
201 return i2c_smbus_write_byte_data(data->client, reg, reg_val);
204 static int bma180_reset_intr(struct bma180_data *data)
206 int ret = bma180_set_bits(data, data->part_info->int_reset_reg,
207 data->part_info->int_reset_mask, 1);
210 dev_err(&data->client->dev, "failed to reset interrupt\n");
215 static int bma180_set_new_data_intr_state(struct bma180_data *data, bool state)
217 int ret = bma180_set_bits(data, data->part_info->int_enable_reg,
218 data->part_info->int_enable_mask, state);
221 ret = bma180_reset_intr(data);
228 dev_err(&data->client->dev,
229 "failed to set new data interrupt state %d\n", state);
233 static int bma180_set_sleep_state(struct bma180_data *data, bool state)
235 int ret = bma180_set_bits(data, data->part_info->sleep_reg,
236 data->part_info->sleep_mask, state);
239 dev_err(&data->client->dev,
243 data->sleep_state = state;
248 static int bma180_set_ee_writing_state(struct bma180_data *data, bool state)
250 int ret = bma180_set_bits(data, BMA180_CTRL_REG0, BMA180_EE_W, state);
253 dev_err(&data->client->dev,
259 static int bma180_set_bw(struct bma180_data *data, int val)
263 if (data->sleep_state)
266 for (i = 0; i < data->part_info->num_bw; ++i) {
267 if (data->part_info->bw_table[i] == val) {
268 ret = bma180_set_bits(data, data->part_info->bw_reg,
269 data->part_info->bw_mask,
270 i + data->part_info->bw_offset);
272 dev_err(&data->client->dev,
276 data->bw = val;
284 static int bma180_set_scale(struct bma180_data *data, int val)
288 if (data->sleep_state)
291 for (i = 0; i < data->part_info->num_scales; ++i)
292 if (data->part_info->scale_table[i] == val) {
293 ret = bma180_set_bits(data, data->part_info->scale_reg,
294 data->part_info->scale_mask, i);
296 dev_err(&data->client->dev,
300 data->scale = val;
307 static int bma180_set_pmode(struct bma180_data *data, bool mode)
309 u8 reg_val = mode ? data->part_info->lowpower_val : 0;
310 int ret = bma180_set_bits(data, data->part_info->power_reg,
311 data->part_info->power_mask, reg_val);
314 dev_err(&data->client->dev, "failed to set power mode\n");
317 data->pmode = mode;
322 static int bma180_soft_reset(struct bma180_data *data)
324 int ret = i2c_smbus_write_byte_data(data->client,
325 data->part_info->softreset_reg,
326 data->part_info->softreset_val);
329 dev_err(&data->client->dev, "failed to reset the chip\n");
334 static int bma180_chip_init(struct bma180_data *data)
337 int ret = i2c_smbus_read_byte_data(data->client, BMA180_CHIP_ID);
341 if (ret != data->part_info->chip_id) {
342 dev_err(&data->client->dev, "wrong chip ID %d expected %d\n",
343 ret, data->part_info->chip_id);
347 ret = bma180_soft_reset(data);
356 return bma180_set_new_data_intr_state(data, false);
359 static int bma023_chip_config(struct bma180_data *data)
361 int ret = bma180_chip_init(data);
366 ret = bma180_set_bw(data, 50); /* 50 Hz */
369 ret = bma180_set_scale(data, 2452); /* 2 G */
376 dev_err(&data->client->dev, "failed to config the chip\n");
380 static int bma180_chip_config(struct bma180_data *data)
382 int ret = bma180_chip_init(data);
386 ret = bma180_set_pmode(data, false);
389 ret = bma180_set_bits(data, BMA180_CTRL_REG0, BMA180_DIS_WAKE_UP, 1);
392 ret = bma180_set_ee_writing_state(data, true);
395 ret = bma180_set_bits(data, BMA180_OFFSET_LSB1, BMA180_SMP_SKIP, 1);
398 ret = bma180_set_bw(data, 20); /* 20 Hz */
401 ret = bma180_set_scale(data, 2452); /* 2 G */
408 dev_err(&data->client->dev, "failed to config the chip\n");
412 static int bma250_chip_config(struct bma180_data *data)
414 int ret = bma180_chip_init(data);
418 ret = bma180_set_pmode(data, false);
421 ret = bma180_set_bw(data, 16); /* 16 Hz */
424 ret = bma180_set_scale(data, 38344); /* 2 G */
431 ret = bma180_set_bits(data, BMA250_INT_MAP_REG, BMA250_INT1_DATA_MASK, 1);
438 dev_err(&data->client->dev, "failed to config the chip\n");
442 static void bma023_chip_disable(struct bma180_data *data)
444 if (bma180_set_sleep_state(data, true))
450 dev_err(&data->client->dev, "failed to disable the chip\n");
453 static void bma180_chip_disable(struct bma180_data *data)
455 if (bma180_set_new_data_intr_state(data, false))
457 if (bma180_set_ee_writing_state(data, false))
459 if (bma180_set_sleep_state(data, true))
465 dev_err(&data->client->dev, "failed to disable the chip\n");
468 static void bma250_chip_disable(struct bma180_data *data)
470 if (bma180_set_new_data_intr_state(data, false))
472 if (bma180_set_sleep_state(data, true))
478 dev_err(&data->client->dev, "failed to disable the chip\n");
501 struct bma180_data *data = iio_priv(dev_to_iio_dev(dev));
503 return bma180_show_avail(buf, data->part_info->bw_table,
504 data->part_info->num_bw, false);
510 struct bma180_data *data = iio_priv(dev_to_iio_dev(dev));
512 return bma180_show_avail(buf, data->part_info->scale_table,
513 data->part_info->num_scales, true);
537 struct bma180_data *data = iio_priv(indio_dev);
546 mutex_lock(&data->mutex);
547 ret = bma180_get_data_reg(data, chan->scan_index);
548 mutex_unlock(&data->mutex);
560 *val = data->bw;
566 *val2 = data->scale;
575 *val = data->part_info->temp_offset;
585 struct bma180_data *data = iio_priv(indio_dev);
592 mutex_lock(&data->mutex);
593 ret = bma180_set_scale(data, val2);
594 mutex_unlock(&data->mutex);
599 mutex_lock(&data->mutex);
600 ret = bma180_set_bw(data, val);
601 mutex_unlock(&data->mutex);
619 struct bma180_data *data = iio_priv(indio_dev);
621 return data->pmode;
627 struct bma180_data *data = iio_priv(indio_dev);
630 mutex_lock(&data->mutex);
631 ret = bma180_set_pmode(data, mode);
632 mutex_unlock(&data->mutex);
641 struct bma180_data *data = iio_priv(indio_dev);
643 return &data->orientation;
873 struct bma180_data *data = iio_priv(indio_dev);
877 mutex_lock(&data->mutex);
881 ret = bma180_get_data_reg(data, bit);
883 mutex_unlock(&data->mutex);
886 data->scan.chan[i++] = ret;
889 mutex_unlock(&data->mutex);
891 iio_push_to_buffers_with_timestamp(indio_dev, &data->scan, time_ns);
902 struct bma180_data *data = iio_priv(indio_dev);
904 return bma180_set_new_data_intr_state(data, state);
910 struct bma180_data *data = iio_priv(indio_dev);
913 ret = bma180_reset_intr(data);
915 dev_err(&data->client->dev, "failed to reset interrupt\n");
927 struct bma180_data *data;
932 indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
936 data = iio_priv(indio_dev);
938 data->client = client;
943 data->part_info = &bma180_part_info[chip];
945 ret = iio_read_mount_matrix(dev, &data->orientation);
949 data->vdd_supply = devm_regulator_get(dev, "vdd");
950 if (IS_ERR(data->vdd_supply))
951 return dev_err_probe(dev, PTR_ERR(data->vdd_supply),
954 data->vddio_supply = devm_regulator_get(dev, "vddio");
955 if (IS_ERR(data->vddio_supply))
956 return dev_err_probe(dev, PTR_ERR(data->vddio_supply),
960 ret = regulator_set_voltage(data->vdd_supply, 1620000, 3600000);
963 ret = regulator_set_voltage(data->vddio_supply, 1200000, 3600000);
966 ret = regulator_enable(data->vdd_supply);
971 ret = regulator_enable(data->vddio_supply);
979 ret = data->part_info->chip_config(data);
983 mutex_init(&data->mutex);
984 indio_dev->channels = data->part_info->channels;
985 indio_dev->num_channels = data->part_info->num_channels;
991 data->trig = iio_trigger_alloc(dev, "%s-dev%d", indio_dev->name,
993 if (!data->trig) {
1000 "bma180_event", data->trig);
1006 data->trig->ops = &bma180_trigger_ops;
1007 iio_trigger_set_drvdata(data->trig, indio_dev);
1009 ret = iio_trigger_register(data->trig);
1013 indio_dev->trig = iio_trigger_get(data->trig);
1034 if (data->trig)
1035 iio_trigger_unregister(data->trig);
1037 iio_trigger_free(data->trig);
1039 data->part_info->chip_disable(data);
1040 regulator_disable(data->vddio_supply);
1042 regulator_disable(data->vdd_supply);
1050 struct bma180_data *data = iio_priv(indio_dev);
1054 if (data->trig) {
1055 iio_trigger_unregister(data->trig);
1056 iio_trigger_free(data->trig);
1059 mutex_lock(&data->mutex);
1060 data->part_info->chip_disable(data);
1061 mutex_unlock(&data->mutex);
1062 regulator_disable(data->vddio_supply);
1063 regulator_disable(data->vdd_supply);
1069 struct bma180_data *data = iio_priv(indio_dev);
1072 mutex_lock(&data->mutex);
1073 ret = bma180_set_sleep_state(data, true);
1074 mutex_unlock(&data->mutex);
1082 struct bma180_data *data = iio_priv(indio_dev);
1085 mutex_lock(&data->mutex);
1086 ret = bma180_set_sleep_state(data, false);
1087 mutex_unlock(&data->mutex);
1108 .data = (void *)BMA023
1112 .data = (void *)BMA150
1116 .data = (void *)BMA180
1120 .data = (void *)BMA250
1124 .data = (void *)BMA150