Lines Matching refs:data
59 int (*chip_config)(struct bma180_data *data);
60 void (*chip_disable)(struct bma180_data *data);
141 static int bma180_get_data_reg(struct bma180_data *data, enum bma180_chan chan) in bma180_get_data_reg() argument
145 if (data->sleep_state) in bma180_get_data_reg()
150 ret = i2c_smbus_read_byte_data(data->client, BMA180_TEMP); in bma180_get_data_reg()
152 dev_err(&data->client->dev, "failed to read temp register\n"); in bma180_get_data_reg()
155 ret = i2c_smbus_read_word_data(data->client, in bma180_get_data_reg()
158 dev_err(&data->client->dev, in bma180_get_data_reg()
166 static int bma180_set_bits(struct bma180_data *data, u8 reg, u8 mask, u8 val) in bma180_set_bits() argument
168 int ret = i2c_smbus_read_byte_data(data->client, reg); in bma180_set_bits()
174 return i2c_smbus_write_byte_data(data->client, reg, reg_val); in bma180_set_bits()
177 static int bma180_reset_intr(struct bma180_data *data) in bma180_reset_intr() argument
179 int ret = bma180_set_bits(data, data->part_info->int_reset_reg, in bma180_reset_intr()
180 data->part_info->int_reset_mask, 1); in bma180_reset_intr()
183 dev_err(&data->client->dev, "failed to reset interrupt\n"); in bma180_reset_intr()
188 static int bma180_set_new_data_intr_state(struct bma180_data *data, bool state) in bma180_set_new_data_intr_state() argument
190 int ret = bma180_set_bits(data, data->part_info->int_enable_reg, in bma180_set_new_data_intr_state()
191 data->part_info->int_enable_mask, state); in bma180_set_new_data_intr_state()
194 ret = bma180_reset_intr(data); in bma180_set_new_data_intr_state()
201 dev_err(&data->client->dev, in bma180_set_new_data_intr_state()
206 static int bma180_set_sleep_state(struct bma180_data *data, bool state) in bma180_set_sleep_state() argument
208 int ret = bma180_set_bits(data, data->part_info->sleep_reg, in bma180_set_sleep_state()
209 data->part_info->sleep_mask, state); in bma180_set_sleep_state()
212 dev_err(&data->client->dev, in bma180_set_sleep_state()
216 data->sleep_state = state; in bma180_set_sleep_state()
221 static int bma180_set_ee_writing_state(struct bma180_data *data, bool state) in bma180_set_ee_writing_state() argument
223 int ret = bma180_set_bits(data, BMA180_CTRL_REG0, BMA180_EE_W, state); in bma180_set_ee_writing_state()
226 dev_err(&data->client->dev, in bma180_set_ee_writing_state()
232 static int bma180_set_bw(struct bma180_data *data, int val) in bma180_set_bw() argument
236 if (data->sleep_state) in bma180_set_bw()
239 for (i = 0; i < data->part_info->num_bw; ++i) { in bma180_set_bw()
240 if (data->part_info->bw_table[i] == val) { in bma180_set_bw()
241 ret = bma180_set_bits(data, data->part_info->bw_reg, in bma180_set_bw()
242 data->part_info->bw_mask, i); in bma180_set_bw()
244 dev_err(&data->client->dev, in bma180_set_bw()
248 data->bw = val; in bma180_set_bw()
256 static int bma180_set_scale(struct bma180_data *data, int val) in bma180_set_scale() argument
260 if (data->sleep_state) in bma180_set_scale()
263 for (i = 0; i < data->part_info->num_scales; ++i) in bma180_set_scale()
264 if (data->part_info->scale_table[i] == val) { in bma180_set_scale()
265 ret = bma180_set_bits(data, data->part_info->scale_reg, in bma180_set_scale()
266 data->part_info->scale_mask, i); in bma180_set_scale()
268 dev_err(&data->client->dev, in bma180_set_scale()
272 data->scale = val; in bma180_set_scale()
279 static int bma180_set_pmode(struct bma180_data *data, bool mode) in bma180_set_pmode() argument
281 u8 reg_val = mode ? data->part_info->lowpower_val : 0; in bma180_set_pmode()
282 int ret = bma180_set_bits(data, data->part_info->power_reg, in bma180_set_pmode()
283 data->part_info->power_mask, reg_val); in bma180_set_pmode()
286 dev_err(&data->client->dev, "failed to set power mode\n"); in bma180_set_pmode()
289 data->pmode = mode; in bma180_set_pmode()
294 static int bma180_soft_reset(struct bma180_data *data) in bma180_soft_reset() argument
296 int ret = i2c_smbus_write_byte_data(data->client, in bma180_soft_reset()
297 data->part_info->softreset_reg, BMA180_RESET_VAL); in bma180_soft_reset()
300 dev_err(&data->client->dev, "failed to reset the chip\n"); in bma180_soft_reset()
305 static int bma180_chip_init(struct bma180_data *data) in bma180_chip_init() argument
308 int ret = i2c_smbus_read_byte_data(data->client, BMA180_CHIP_ID); in bma180_chip_init()
315 ret = bma180_soft_reset(data); in bma180_chip_init()
324 ret = bma180_set_new_data_intr_state(data, false); in bma180_chip_init()
328 return bma180_set_pmode(data, false); in bma180_chip_init()
331 static int bma180_chip_config(struct bma180_data *data) in bma180_chip_config() argument
333 int ret = bma180_chip_init(data); in bma180_chip_config()
337 ret = bma180_set_bits(data, BMA180_CTRL_REG0, BMA180_DIS_WAKE_UP, 1); in bma180_chip_config()
340 ret = bma180_set_ee_writing_state(data, true); in bma180_chip_config()
343 ret = bma180_set_bits(data, BMA180_OFFSET_LSB1, BMA180_SMP_SKIP, 1); in bma180_chip_config()
346 ret = bma180_set_bw(data, 20); /* 20 Hz */ in bma180_chip_config()
349 ret = bma180_set_scale(data, 2452); /* 2 G */ in bma180_chip_config()
356 dev_err(&data->client->dev, "failed to config the chip\n"); in bma180_chip_config()
360 static int bma250_chip_config(struct bma180_data *data) in bma250_chip_config() argument
362 int ret = bma180_chip_init(data); in bma250_chip_config()
366 ret = bma180_set_bw(data, 16); /* 16 Hz */ in bma250_chip_config()
369 ret = bma180_set_scale(data, 38344); /* 2 G */ in bma250_chip_config()
372 ret = bma180_set_bits(data, BMA250_INT_MAP_REG, in bma250_chip_config()
380 dev_err(&data->client->dev, "failed to config the chip\n"); in bma250_chip_config()
384 static void bma180_chip_disable(struct bma180_data *data) in bma180_chip_disable() argument
386 if (bma180_set_new_data_intr_state(data, false)) in bma180_chip_disable()
388 if (bma180_set_ee_writing_state(data, false)) in bma180_chip_disable()
390 if (bma180_set_sleep_state(data, true)) in bma180_chip_disable()
396 dev_err(&data->client->dev, "failed to disable the chip\n"); in bma180_chip_disable()
399 static void bma250_chip_disable(struct bma180_data *data) in bma250_chip_disable() argument
401 if (bma180_set_new_data_intr_state(data, false)) in bma250_chip_disable()
403 if (bma180_set_sleep_state(data, true)) in bma250_chip_disable()
409 dev_err(&data->client->dev, "failed to disable the chip\n"); in bma250_chip_disable()
432 struct bma180_data *data = iio_priv(dev_to_iio_dev(dev)); in bma180_show_filter_freq_avail() local
434 return bma180_show_avail(buf, data->part_info->bw_table, in bma180_show_filter_freq_avail()
435 data->part_info->num_bw, false); in bma180_show_filter_freq_avail()
441 struct bma180_data *data = iio_priv(dev_to_iio_dev(dev)); in bma180_show_scale_avail() local
443 return bma180_show_avail(buf, data->part_info->scale_table, in bma180_show_scale_avail()
444 data->part_info->num_scales, true); in bma180_show_scale_avail()
468 struct bma180_data *data = iio_priv(indio_dev); in bma180_read_raw() local
477 mutex_lock(&data->mutex); in bma180_read_raw()
478 ret = bma180_get_data_reg(data, chan->scan_index); in bma180_read_raw()
479 mutex_unlock(&data->mutex); in bma180_read_raw()
487 *val = data->bw; in bma180_read_raw()
493 *val2 = data->scale; in bma180_read_raw()
512 struct bma180_data *data = iio_priv(indio_dev); in bma180_write_raw() local
519 mutex_lock(&data->mutex); in bma180_write_raw()
520 ret = bma180_set_scale(data, val2); in bma180_write_raw()
521 mutex_unlock(&data->mutex); in bma180_write_raw()
526 mutex_lock(&data->mutex); in bma180_write_raw()
527 ret = bma180_set_bw(data, val); in bma180_write_raw()
528 mutex_unlock(&data->mutex); in bma180_write_raw()
546 struct bma180_data *data = iio_priv(indio_dev); in bma180_get_power_mode() local
548 return data->pmode; in bma180_get_power_mode()
554 struct bma180_data *data = iio_priv(indio_dev); in bma180_set_power_mode() local
557 mutex_lock(&data->mutex); in bma180_set_power_mode()
558 ret = bma180_set_pmode(data, mode); in bma180_set_power_mode()
559 mutex_unlock(&data->mutex); in bma180_set_power_mode()
657 struct bma180_data *data = iio_priv(indio_dev); in bma180_trigger_handler() local
661 mutex_lock(&data->mutex); in bma180_trigger_handler()
665 ret = bma180_get_data_reg(data, bit); in bma180_trigger_handler()
667 mutex_unlock(&data->mutex); in bma180_trigger_handler()
670 ((s16 *)data->buff)[i++] = ret; in bma180_trigger_handler()
673 mutex_unlock(&data->mutex); in bma180_trigger_handler()
675 iio_push_to_buffers_with_timestamp(indio_dev, data->buff, time_ns); in bma180_trigger_handler()
686 struct bma180_data *data = iio_priv(indio_dev); in bma180_data_rdy_trigger_set_state() local
688 return bma180_set_new_data_intr_state(data, state); in bma180_data_rdy_trigger_set_state()
694 struct bma180_data *data = iio_priv(indio_dev); in bma180_trig_try_reen() local
696 return bma180_reset_intr(data); in bma180_trig_try_reen()
707 struct bma180_data *data; in bma180_probe() local
712 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); in bma180_probe()
716 data = iio_priv(indio_dev); in bma180_probe()
718 data->client = client; in bma180_probe()
723 data->part_info = &bma180_part_info[chip]; in bma180_probe()
725 ret = data->part_info->chip_config(data); in bma180_probe()
729 mutex_init(&data->mutex); in bma180_probe()
731 indio_dev->channels = data->part_info->channels; in bma180_probe()
732 indio_dev->num_channels = data->part_info->num_channels; in bma180_probe()
738 data->trig = iio_trigger_alloc("%s-dev%d", indio_dev->name, in bma180_probe()
740 if (!data->trig) { in bma180_probe()
747 "bma180_event", data->trig); in bma180_probe()
753 data->trig->dev.parent = &client->dev; in bma180_probe()
754 data->trig->ops = &bma180_trigger_ops; in bma180_probe()
755 iio_trigger_set_drvdata(data->trig, indio_dev); in bma180_probe()
756 indio_dev->trig = iio_trigger_get(data->trig); in bma180_probe()
758 ret = iio_trigger_register(data->trig); in bma180_probe()
781 if (data->trig) in bma180_probe()
782 iio_trigger_unregister(data->trig); in bma180_probe()
784 iio_trigger_free(data->trig); in bma180_probe()
786 data->part_info->chip_disable(data); in bma180_probe()
794 struct bma180_data *data = iio_priv(indio_dev); in bma180_remove() local
798 if (data->trig) { in bma180_remove()
799 iio_trigger_unregister(data->trig); in bma180_remove()
800 iio_trigger_free(data->trig); in bma180_remove()
803 mutex_lock(&data->mutex); in bma180_remove()
804 data->part_info->chip_disable(data); in bma180_remove()
805 mutex_unlock(&data->mutex); in bma180_remove()
814 struct bma180_data *data = iio_priv(indio_dev); in bma180_suspend() local
817 mutex_lock(&data->mutex); in bma180_suspend()
818 ret = bma180_set_sleep_state(data, true); in bma180_suspend()
819 mutex_unlock(&data->mutex); in bma180_suspend()
827 struct bma180_data *data = iio_priv(indio_dev); in bma180_resume() local
830 mutex_lock(&data->mutex); in bma180_resume()
831 ret = bma180_set_sleep_state(data, false); in bma180_resume()
832 mutex_unlock(&data->mutex); in bma180_resume()
854 .data = (void *)BMA180
858 .data = (void *)BMA250