Lines Matching refs:data

58 	int (*chip_config)(struct bma180_data *data);
59 void (*chip_disable)(struct bma180_data *data);
140 static int bma180_get_data_reg(struct bma180_data *data, enum bma180_chan chan) in bma180_get_data_reg() argument
144 if (data->sleep_state) in bma180_get_data_reg()
149 ret = i2c_smbus_read_byte_data(data->client, BMA180_TEMP); in bma180_get_data_reg()
151 dev_err(&data->client->dev, "failed to read temp register\n"); in bma180_get_data_reg()
154 ret = i2c_smbus_read_word_data(data->client, in bma180_get_data_reg()
157 dev_err(&data->client->dev, in bma180_get_data_reg()
165 static int bma180_set_bits(struct bma180_data *data, u8 reg, u8 mask, u8 val) in bma180_set_bits() argument
167 int ret = i2c_smbus_read_byte_data(data->client, reg); in bma180_set_bits()
173 return i2c_smbus_write_byte_data(data->client, reg, reg_val); in bma180_set_bits()
176 static int bma180_reset_intr(struct bma180_data *data) in bma180_reset_intr() argument
178 int ret = bma180_set_bits(data, data->part_info->int_reset_reg, in bma180_reset_intr()
179 data->part_info->int_reset_mask, 1); in bma180_reset_intr()
182 dev_err(&data->client->dev, "failed to reset interrupt\n"); in bma180_reset_intr()
187 static int bma180_set_new_data_intr_state(struct bma180_data *data, bool state) in bma180_set_new_data_intr_state() argument
189 int ret = bma180_set_bits(data, data->part_info->int_enable_reg, in bma180_set_new_data_intr_state()
190 data->part_info->int_enable_mask, state); in bma180_set_new_data_intr_state()
193 ret = bma180_reset_intr(data); in bma180_set_new_data_intr_state()
200 dev_err(&data->client->dev, in bma180_set_new_data_intr_state()
205 static int bma180_set_sleep_state(struct bma180_data *data, bool state) in bma180_set_sleep_state() argument
207 int ret = bma180_set_bits(data, data->part_info->sleep_reg, in bma180_set_sleep_state()
208 data->part_info->sleep_mask, state); in bma180_set_sleep_state()
211 dev_err(&data->client->dev, in bma180_set_sleep_state()
215 data->sleep_state = state; in bma180_set_sleep_state()
220 static int bma180_set_ee_writing_state(struct bma180_data *data, bool state) in bma180_set_ee_writing_state() argument
222 int ret = bma180_set_bits(data, BMA180_CTRL_REG0, BMA180_EE_W, state); in bma180_set_ee_writing_state()
225 dev_err(&data->client->dev, in bma180_set_ee_writing_state()
231 static int bma180_set_bw(struct bma180_data *data, int val) in bma180_set_bw() argument
235 if (data->sleep_state) in bma180_set_bw()
238 for (i = 0; i < data->part_info->num_bw; ++i) { in bma180_set_bw()
239 if (data->part_info->bw_table[i] == val) { in bma180_set_bw()
240 ret = bma180_set_bits(data, data->part_info->bw_reg, in bma180_set_bw()
241 data->part_info->bw_mask, i); in bma180_set_bw()
243 dev_err(&data->client->dev, in bma180_set_bw()
247 data->bw = val; in bma180_set_bw()
255 static int bma180_set_scale(struct bma180_data *data, int val) in bma180_set_scale() argument
259 if (data->sleep_state) in bma180_set_scale()
262 for (i = 0; i < data->part_info->num_scales; ++i) in bma180_set_scale()
263 if (data->part_info->scale_table[i] == val) { in bma180_set_scale()
264 ret = bma180_set_bits(data, data->part_info->scale_reg, in bma180_set_scale()
265 data->part_info->scale_mask, i); in bma180_set_scale()
267 dev_err(&data->client->dev, in bma180_set_scale()
271 data->scale = val; in bma180_set_scale()
278 static int bma180_set_pmode(struct bma180_data *data, bool mode) in bma180_set_pmode() argument
280 u8 reg_val = mode ? data->part_info->lowpower_val : 0; in bma180_set_pmode()
281 int ret = bma180_set_bits(data, data->part_info->power_reg, in bma180_set_pmode()
282 data->part_info->power_mask, reg_val); in bma180_set_pmode()
285 dev_err(&data->client->dev, "failed to set power mode\n"); in bma180_set_pmode()
288 data->pmode = mode; in bma180_set_pmode()
293 static int bma180_soft_reset(struct bma180_data *data) in bma180_soft_reset() argument
295 int ret = i2c_smbus_write_byte_data(data->client, in bma180_soft_reset()
296 data->part_info->softreset_reg, BMA180_RESET_VAL); in bma180_soft_reset()
299 dev_err(&data->client->dev, "failed to reset the chip\n"); in bma180_soft_reset()
304 static int bma180_chip_init(struct bma180_data *data) in bma180_chip_init() argument
307 int ret = i2c_smbus_read_byte_data(data->client, BMA180_CHIP_ID); in bma180_chip_init()
314 ret = bma180_soft_reset(data); in bma180_chip_init()
323 ret = bma180_set_new_data_intr_state(data, false); in bma180_chip_init()
327 return bma180_set_pmode(data, false); in bma180_chip_init()
330 static int bma180_chip_config(struct bma180_data *data) in bma180_chip_config() argument
332 int ret = bma180_chip_init(data); in bma180_chip_config()
336 ret = bma180_set_bits(data, BMA180_CTRL_REG0, BMA180_DIS_WAKE_UP, 1); in bma180_chip_config()
339 ret = bma180_set_ee_writing_state(data, true); in bma180_chip_config()
342 ret = bma180_set_bits(data, BMA180_OFFSET_LSB1, BMA180_SMP_SKIP, 1); in bma180_chip_config()
345 ret = bma180_set_bw(data, 20); /* 20 Hz */ in bma180_chip_config()
348 ret = bma180_set_scale(data, 2452); /* 2 G */ in bma180_chip_config()
355 dev_err(&data->client->dev, "failed to config the chip\n"); in bma180_chip_config()
359 static int bma250_chip_config(struct bma180_data *data) in bma250_chip_config() argument
361 int ret = bma180_chip_init(data); in bma250_chip_config()
365 ret = bma180_set_bw(data, 16); /* 16 Hz */ in bma250_chip_config()
368 ret = bma180_set_scale(data, 38344); /* 2 G */ in bma250_chip_config()
371 ret = bma180_set_bits(data, BMA250_INT_MAP_REG, in bma250_chip_config()
379 dev_err(&data->client->dev, "failed to config the chip\n"); in bma250_chip_config()
383 static void bma180_chip_disable(struct bma180_data *data) in bma180_chip_disable() argument
385 if (bma180_set_new_data_intr_state(data, false)) in bma180_chip_disable()
387 if (bma180_set_ee_writing_state(data, false)) in bma180_chip_disable()
389 if (bma180_set_sleep_state(data, true)) in bma180_chip_disable()
395 dev_err(&data->client->dev, "failed to disable the chip\n"); in bma180_chip_disable()
398 static void bma250_chip_disable(struct bma180_data *data) in bma250_chip_disable() argument
400 if (bma180_set_new_data_intr_state(data, false)) in bma250_chip_disable()
402 if (bma180_set_sleep_state(data, true)) in bma250_chip_disable()
408 dev_err(&data->client->dev, "failed to disable the chip\n"); in bma250_chip_disable()
431 struct bma180_data *data = iio_priv(dev_to_iio_dev(dev)); in bma180_show_filter_freq_avail() local
433 return bma180_show_avail(buf, data->part_info->bw_table, in bma180_show_filter_freq_avail()
434 data->part_info->num_bw, false); in bma180_show_filter_freq_avail()
440 struct bma180_data *data = iio_priv(dev_to_iio_dev(dev)); in bma180_show_scale_avail() local
442 return bma180_show_avail(buf, data->part_info->scale_table, in bma180_show_scale_avail()
443 data->part_info->num_scales, true); in bma180_show_scale_avail()
467 struct bma180_data *data = iio_priv(indio_dev); in bma180_read_raw() local
472 mutex_lock(&data->mutex); in bma180_read_raw()
474 mutex_unlock(&data->mutex); in bma180_read_raw()
477 ret = bma180_get_data_reg(data, chan->scan_index); in bma180_read_raw()
478 mutex_unlock(&data->mutex); in bma180_read_raw()
485 *val = data->bw; in bma180_read_raw()
491 *val2 = data->scale; in bma180_read_raw()
510 struct bma180_data *data = iio_priv(indio_dev); in bma180_write_raw() local
517 mutex_lock(&data->mutex); in bma180_write_raw()
518 ret = bma180_set_scale(data, val2); in bma180_write_raw()
519 mutex_unlock(&data->mutex); in bma180_write_raw()
524 mutex_lock(&data->mutex); in bma180_write_raw()
525 ret = bma180_set_bw(data, val); in bma180_write_raw()
526 mutex_unlock(&data->mutex); in bma180_write_raw()
545 struct bma180_data *data = iio_priv(indio_dev); in bma180_get_power_mode() local
547 return data->pmode; in bma180_get_power_mode()
553 struct bma180_data *data = iio_priv(indio_dev); in bma180_set_power_mode() local
556 mutex_lock(&data->mutex); in bma180_set_power_mode()
557 ret = bma180_set_pmode(data, mode); in bma180_set_power_mode()
558 mutex_unlock(&data->mutex); in bma180_set_power_mode()
656 struct bma180_data *data = iio_priv(indio_dev); in bma180_trigger_handler() local
660 mutex_lock(&data->mutex); in bma180_trigger_handler()
664 ret = bma180_get_data_reg(data, bit); in bma180_trigger_handler()
666 mutex_unlock(&data->mutex); in bma180_trigger_handler()
669 ((s16 *)data->buff)[i++] = ret; in bma180_trigger_handler()
672 mutex_unlock(&data->mutex); in bma180_trigger_handler()
674 iio_push_to_buffers_with_timestamp(indio_dev, data->buff, time_ns); in bma180_trigger_handler()
685 struct bma180_data *data = iio_priv(indio_dev); in bma180_data_rdy_trigger_set_state() local
687 return bma180_set_new_data_intr_state(data, state); in bma180_data_rdy_trigger_set_state()
693 struct bma180_data *data = iio_priv(indio_dev); in bma180_trig_try_reen() local
695 return bma180_reset_intr(data); in bma180_trig_try_reen()
707 struct bma180_data *data; in bma180_probe() local
711 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); in bma180_probe()
715 data = iio_priv(indio_dev); in bma180_probe()
717 data->client = client; in bma180_probe()
718 data->part_info = &bma180_part_info[id->driver_data]; in bma180_probe()
720 ret = data->part_info->chip_config(data); in bma180_probe()
724 mutex_init(&data->mutex); in bma180_probe()
726 indio_dev->channels = data->part_info->channels; in bma180_probe()
727 indio_dev->num_channels = data->part_info->num_channels; in bma180_probe()
733 data->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name, in bma180_probe()
735 if (!data->trig) { in bma180_probe()
742 "bma180_event", data->trig); in bma180_probe()
748 data->trig->dev.parent = &client->dev; in bma180_probe()
749 data->trig->ops = &bma180_trigger_ops; in bma180_probe()
750 iio_trigger_set_drvdata(data->trig, indio_dev); in bma180_probe()
751 indio_dev->trig = iio_trigger_get(data->trig); in bma180_probe()
753 ret = iio_trigger_register(data->trig); in bma180_probe()
776 if (data->trig) in bma180_probe()
777 iio_trigger_unregister(data->trig); in bma180_probe()
779 iio_trigger_free(data->trig); in bma180_probe()
781 data->part_info->chip_disable(data); in bma180_probe()
789 struct bma180_data *data = iio_priv(indio_dev); in bma180_remove() local
793 if (data->trig) { in bma180_remove()
794 iio_trigger_unregister(data->trig); in bma180_remove()
795 iio_trigger_free(data->trig); in bma180_remove()
798 mutex_lock(&data->mutex); in bma180_remove()
799 data->part_info->chip_disable(data); in bma180_remove()
800 mutex_unlock(&data->mutex); in bma180_remove()
809 struct bma180_data *data = iio_priv(indio_dev); in bma180_suspend() local
812 mutex_lock(&data->mutex); in bma180_suspend()
813 ret = bma180_set_sleep_state(data, true); in bma180_suspend()
814 mutex_unlock(&data->mutex); in bma180_suspend()
822 struct bma180_data *data = iio_priv(indio_dev); in bma180_resume() local
825 mutex_lock(&data->mutex); in bma180_resume()
826 ret = bma180_set_sleep_state(data, false); in bma180_resume()
827 mutex_unlock(&data->mutex); in bma180_resume()