Lines Matching refs:data
65 int (*chip_config)(struct bma180_data *data);
66 void (*chip_disable)(struct bma180_data *data);
79 #define BMA023_NEW_DATA_INT BIT(5) /* Intr every new accel data is ready */
83 #define BMA180_ACC_X_LSB 0x02 /* First of 6 registers of accel data */
99 #define BMA180_NEW_DATA_INT BIT(1) /* Intr every new accel data is ready */
191 static int bma180_get_data_reg(struct bma180_data *data, enum bma180_chan chan)
195 if (data->sleep_state)
200 ret = i2c_smbus_read_byte_data(data->client, BMA180_TEMP);
202 dev_err(&data->client->dev, "failed to read temp register\n");
205 ret = i2c_smbus_read_word_data(data->client,
208 dev_err(&data->client->dev,
216 static int bma180_set_bits(struct bma180_data *data, u8 reg, u8 mask, u8 val)
218 int ret = i2c_smbus_read_byte_data(data->client, reg);
224 return i2c_smbus_write_byte_data(data->client, reg, reg_val);
227 static int bma180_reset_intr(struct bma180_data *data)
229 int ret = bma180_set_bits(data, data->part_info->int_reset_reg,
230 data->part_info->int_reset_mask, 1);
233 dev_err(&data->client->dev, "failed to reset interrupt\n");
238 static int bma180_set_new_data_intr_state(struct bma180_data *data, bool state)
240 int ret = bma180_set_bits(data, data->part_info->int_enable_reg,
241 data->part_info->int_enable_mask, state);
244 ret = bma180_reset_intr(data);
251 dev_err(&data->client->dev,
252 "failed to set new data interrupt state %d\n", state);
256 static int bma180_set_sleep_state(struct bma180_data *data, bool state)
258 int ret = bma180_set_bits(data, data->part_info->sleep_reg,
259 data->part_info->sleep_mask, state);
262 dev_err(&data->client->dev,
266 data->sleep_state = state;
271 static int bma180_set_ee_writing_state(struct bma180_data *data, bool state)
273 int ret = bma180_set_bits(data, BMA180_CTRL_REG0, BMA180_EE_W, state);
276 dev_err(&data->client->dev,
282 static int bma180_set_bw(struct bma180_data *data, int val)
286 if (data->sleep_state)
289 for (i = 0; i < data->part_info->num_bw; ++i) {
290 if (data->part_info->bw_table[i] == val) {
291 ret = bma180_set_bits(data, data->part_info->bw_reg,
292 data->part_info->bw_mask,
293 i + data->part_info->bw_offset);
295 dev_err(&data->client->dev,
299 data->bw = val;
307 static int bma180_set_scale(struct bma180_data *data, int val)
311 if (data->sleep_state)
314 for (i = 0; i < data->part_info->num_scales; ++i)
315 if (data->part_info->scale_table[i] == val) {
316 ret = bma180_set_bits(data, data->part_info->scale_reg,
317 data->part_info->scale_mask, i);
319 dev_err(&data->client->dev,
323 data->scale = val;
330 static int bma180_set_pmode(struct bma180_data *data, bool mode)
332 u8 reg_val = mode ? data->part_info->lowpower_val : 0;
333 int ret = bma180_set_bits(data, data->part_info->power_reg,
334 data->part_info->power_mask, reg_val);
337 dev_err(&data->client->dev, "failed to set power mode\n");
340 data->pmode = mode;
345 static int bma180_soft_reset(struct bma180_data *data)
347 int ret = i2c_smbus_write_byte_data(data->client,
348 data->part_info->softreset_reg,
349 data->part_info->softreset_val);
352 dev_err(&data->client->dev, "failed to reset the chip\n");
357 static int bma180_chip_init(struct bma180_data *data)
360 int ret = i2c_smbus_read_byte_data(data->client, BMA180_CHIP_ID);
364 if (ret != data->part_info->chip_id) {
365 dev_err(&data->client->dev, "wrong chip ID %d expected %d\n",
366 ret, data->part_info->chip_id);
370 ret = bma180_soft_reset(data);
379 return bma180_set_new_data_intr_state(data, false);
382 static int bma023_chip_config(struct bma180_data *data)
384 int ret = bma180_chip_init(data);
389 ret = bma180_set_bw(data, 50); /* 50 Hz */
392 ret = bma180_set_scale(data, 2452); /* 2 G */
399 dev_err(&data->client->dev, "failed to config the chip\n");
403 static int bma180_chip_config(struct bma180_data *data)
405 int ret = bma180_chip_init(data);
409 ret = bma180_set_pmode(data, false);
412 ret = bma180_set_bits(data, BMA180_CTRL_REG0, BMA180_DIS_WAKE_UP, 1);
415 ret = bma180_set_ee_writing_state(data, true);
418 ret = bma180_set_bits(data, BMA180_OFFSET_LSB1, BMA180_SMP_SKIP, 1);
421 ret = bma180_set_bw(data, 20); /* 20 Hz */
424 ret = bma180_set_scale(data, 2452); /* 2 G */
431 dev_err(&data->client->dev, "failed to config the chip\n");
435 static int bma25x_chip_config(struct bma180_data *data)
437 int ret = bma180_chip_init(data);
441 ret = bma180_set_pmode(data, false);
444 ret = bma180_set_bw(data, 16); /* 16 Hz */
447 ret = bma180_set_scale(data, 38344); /* 2 G */
454 ret = bma180_set_bits(data, data->part_info->int_map_reg,
455 data->part_info->int_enable_dataready_int1_mask, 1);
462 dev_err(&data->client->dev, "failed to config the chip\n");
466 static void bma023_chip_disable(struct bma180_data *data)
468 if (bma180_set_sleep_state(data, true))
474 dev_err(&data->client->dev, "failed to disable the chip\n");
477 static void bma180_chip_disable(struct bma180_data *data)
479 if (bma180_set_new_data_intr_state(data, false))
481 if (bma180_set_ee_writing_state(data, false))
483 if (bma180_set_sleep_state(data, true))
489 dev_err(&data->client->dev, "failed to disable the chip\n");
492 static void bma25x_chip_disable(struct bma180_data *data)
494 if (bma180_set_new_data_intr_state(data, false))
496 if (bma180_set_sleep_state(data, true))
502 dev_err(&data->client->dev, "failed to disable the chip\n");
525 struct bma180_data *data = iio_priv(dev_to_iio_dev(dev));
527 return bma180_show_avail(buf, data->part_info->bw_table,
528 data->part_info->num_bw, false);
534 struct bma180_data *data = iio_priv(dev_to_iio_dev(dev));
536 return bma180_show_avail(buf, data->part_info->scale_table,
537 data->part_info->num_scales, true);
561 struct bma180_data *data = iio_priv(indio_dev);
570 mutex_lock(&data->mutex);
571 ret = bma180_get_data_reg(data, chan->scan_index);
572 mutex_unlock(&data->mutex);
584 *val = data->bw;
590 *val2 = data->scale;
599 *val = data->part_info->temp_offset;
609 struct bma180_data *data = iio_priv(indio_dev);
616 mutex_lock(&data->mutex);
617 ret = bma180_set_scale(data, val2);
618 mutex_unlock(&data->mutex);
623 mutex_lock(&data->mutex);
624 ret = bma180_set_bw(data, val);
625 mutex_unlock(&data->mutex);
643 struct bma180_data *data = iio_priv(indio_dev);
645 return data->pmode;
651 struct bma180_data *data = iio_priv(indio_dev);
654 mutex_lock(&data->mutex);
655 ret = bma180_set_pmode(data, mode);
656 mutex_unlock(&data->mutex);
665 struct bma180_data *data = iio_priv(indio_dev);
667 return &data->orientation;
937 struct bma180_data *data = iio_priv(indio_dev);
941 mutex_lock(&data->mutex);
945 ret = bma180_get_data_reg(data, bit);
947 mutex_unlock(&data->mutex);
950 data->scan.chan[i++] = ret;
953 mutex_unlock(&data->mutex);
955 iio_push_to_buffers_with_timestamp(indio_dev, &data->scan, time_ns);
966 struct bma180_data *data = iio_priv(indio_dev);
968 return bma180_set_new_data_intr_state(data, state);
974 struct bma180_data *data = iio_priv(indio_dev);
976 return bma180_reset_intr(data);
988 struct bma180_data *data;
993 indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
997 data = iio_priv(indio_dev);
999 data->client = client;
1004 data->part_info = &bma180_part_info[chip];
1007 &data->orientation);
1011 data->vdd_supply = devm_regulator_get(dev, "vdd");
1012 if (IS_ERR(data->vdd_supply))
1013 return dev_err_probe(dev, PTR_ERR(data->vdd_supply),
1016 data->vddio_supply = devm_regulator_get(dev, "vddio");
1017 if (IS_ERR(data->vddio_supply))
1018 return dev_err_probe(dev, PTR_ERR(data->vddio_supply),
1022 ret = regulator_set_voltage(data->vdd_supply, 1620000, 3600000);
1025 ret = regulator_set_voltage(data->vddio_supply, 1200000, 3600000);
1028 ret = regulator_enable(data->vdd_supply);
1033 ret = regulator_enable(data->vddio_supply);
1041 ret = data->part_info->chip_config(data);
1045 mutex_init(&data->mutex);
1046 indio_dev->channels = data->part_info->channels;
1047 indio_dev->num_channels = data->part_info->num_channels;
1053 data->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name,
1055 if (!data->trig) {
1062 "bma180_event", data->trig);
1068 data->trig->dev.parent = dev;
1069 data->trig->ops = &bma180_trigger_ops;
1070 iio_trigger_set_drvdata(data->trig, indio_dev);
1072 ret = iio_trigger_register(data->trig);
1076 indio_dev->trig = iio_trigger_get(data->trig);
1097 if (data->trig)
1098 iio_trigger_unregister(data->trig);
1100 iio_trigger_free(data->trig);
1102 data->part_info->chip_disable(data);
1103 regulator_disable(data->vddio_supply);
1105 regulator_disable(data->vdd_supply);
1113 struct bma180_data *data = iio_priv(indio_dev);
1117 if (data->trig) {
1118 iio_trigger_unregister(data->trig);
1119 iio_trigger_free(data->trig);
1122 mutex_lock(&data->mutex);
1123 data->part_info->chip_disable(data);
1124 mutex_unlock(&data->mutex);
1125 regulator_disable(data->vddio_supply);
1126 regulator_disable(data->vdd_supply);
1135 struct bma180_data *data = iio_priv(indio_dev);
1138 mutex_lock(&data->mutex);
1139 ret = bma180_set_sleep_state(data, true);
1140 mutex_unlock(&data->mutex);
1148 struct bma180_data *data = iio_priv(indio_dev);
1151 mutex_lock(&data->mutex);
1152 ret = bma180_set_sleep_state(data, false);
1153 mutex_unlock(&data->mutex);
1179 .data = (void *)BMA023
1183 .data = (void *)BMA150
1187 .data = (void *)BMA180
1191 .data = (void *)BMA250
1195 .data = (void *)BMA254
1199 .data = (void *)BMA150