Lines Matching full:st
15 struct inv_mpu6050_state *st = iio_priv(indio_dev); in inv_scan_query_mpu6050() local
24 st->chip_config.temp_fifo_enable = true; in inv_scan_query_mpu6050()
28 st->chip_config.gyro_fifo_enable = in inv_scan_query_mpu6050()
36 st->chip_config.accl_fifo_enable = in inv_scan_query_mpu6050()
44 st->chip_config.temp_fifo_enable = in inv_scan_query_mpu6050()
48 if (st->chip_config.gyro_fifo_enable) in inv_scan_query_mpu6050()
50 if (st->chip_config.accl_fifo_enable) in inv_scan_query_mpu6050()
52 if (st->chip_config.temp_fifo_enable) in inv_scan_query_mpu6050()
60 struct inv_mpu6050_state *st = iio_priv(indio_dev); in inv_scan_query_mpu9x50() local
66 if (st->magn_disabled) in inv_scan_query_mpu9x50()
69 st->chip_config.magn_fifo_enable = in inv_scan_query_mpu9x50()
76 if (st->chip_config.magn_fifo_enable) in inv_scan_query_mpu9x50()
84 struct inv_mpu6050_state *st = iio_priv(indio_dev); in inv_scan_query() local
86 switch (st->chip_type) { in inv_scan_query()
96 static unsigned int inv_compute_skip_samples(const struct inv_mpu6050_state *st) in inv_compute_skip_samples() argument
101 if (st->chip_config.magn_fifo_enable) in inv_compute_skip_samples()
107 int inv_mpu6050_prepare_fifo(struct inv_mpu6050_state *st, bool enable) in inv_mpu6050_prepare_fifo() argument
114 inv_sensors_timestamp_reset(&st->timestamp); in inv_mpu6050_prepare_fifo()
115 inv_sensors_timestamp_apply_odr(&st->timestamp, 0, 0, 0); in inv_mpu6050_prepare_fifo()
117 d = st->chip_config.user_ctrl | INV_MPU6050_BIT_FIFO_RST; in inv_mpu6050_prepare_fifo()
118 ret = regmap_write(st->map, st->reg->user_ctrl, d); in inv_mpu6050_prepare_fifo()
123 if (st->chip_config.gyro_fifo_enable) in inv_mpu6050_prepare_fifo()
125 if (st->chip_config.accl_fifo_enable) in inv_mpu6050_prepare_fifo()
127 if (st->chip_config.temp_fifo_enable) in inv_mpu6050_prepare_fifo()
129 if (st->chip_config.magn_fifo_enable) in inv_mpu6050_prepare_fifo()
131 ret = regmap_write(st->map, st->reg->fifo_en, d); in inv_mpu6050_prepare_fifo()
135 d = st->chip_config.user_ctrl | INV_MPU6050_BIT_FIFO_EN; in inv_mpu6050_prepare_fifo()
136 ret = regmap_write(st->map, st->reg->user_ctrl, d); in inv_mpu6050_prepare_fifo()
140 ret = regmap_update_bits(st->map, st->reg->int_enable, in inv_mpu6050_prepare_fifo()
144 ret = regmap_update_bits(st->map, st->reg->int_enable, in inv_mpu6050_prepare_fifo()
148 ret = regmap_write(st->map, st->reg->fifo_en, 0); in inv_mpu6050_prepare_fifo()
152 ret = regmap_write(st->map, st->reg->user_ctrl, in inv_mpu6050_prepare_fifo()
153 st->chip_config.user_ctrl); in inv_mpu6050_prepare_fifo()
166 struct inv_mpu6050_state *st = iio_priv(indio_dev); in inv_mpu6050_set_enable() local
167 struct device *pdev = regmap_get_device(st->map); in inv_mpu6050_set_enable()
180 result = inv_mpu6050_switch_engine(st, false, ~scan & ~INV_MPU6050_SENSOR_WOM); in inv_mpu6050_set_enable()
183 result = inv_mpu6050_switch_engine(st, true, scan); in inv_mpu6050_set_enable()
186 st->skip_samples = inv_compute_skip_samples(st); in inv_mpu6050_set_enable()
187 result = inv_mpu6050_prepare_fifo(st, true); in inv_mpu6050_set_enable()
191 st->chip_config.gyro_fifo_enable = 0; in inv_mpu6050_set_enable()
192 st->chip_config.accl_fifo_enable = 0; in inv_mpu6050_set_enable()
193 st->chip_config.temp_fifo_enable = 0; in inv_mpu6050_set_enable()
194 st->chip_config.magn_fifo_enable = 0; in inv_mpu6050_set_enable()
195 result = inv_mpu6050_prepare_fifo(st, false); in inv_mpu6050_set_enable()
218 struct inv_mpu6050_state *st = iio_priv(indio_dev); in inv_mpu_data_rdy_trigger_set_state() local
221 mutex_lock(&st->lock); in inv_mpu_data_rdy_trigger_set_state()
223 mutex_unlock(&st->lock); in inv_mpu_data_rdy_trigger_set_state()
235 struct inv_mpu6050_state *st = iio_priv(indio_dev); in inv_mpu6050_interrupt_timestamp() local
237 st->it_timestamp = iio_get_time_ns(indio_dev); in inv_mpu6050_interrupt_timestamp()
245 struct inv_mpu6050_state *st = iio_priv(indio_dev); in inv_mpu6050_interrupt_handle() local
250 switch (st->chip_type) { in inv_mpu6050_interrupt_handle()
274 scoped_guard(mutex, &st->lock) { in inv_mpu6050_interrupt_handle()
276 result = regmap_read(st->map, st->reg->int_status, &int_status); in inv_mpu6050_interrupt_handle()
278 dev_err(regmap_get_device(st->map), "failed to ack interrupt\n"); in inv_mpu6050_interrupt_handle()
283 if (st->chip_config.wom_en && (int_status & wom_bits)) { in inv_mpu6050_interrupt_handle()
286 iio_push_event(indio_dev, ev_code, st->it_timestamp); in inv_mpu6050_interrupt_handle()
293 indio_dev->pollfunc->timestamp = st->it_timestamp; in inv_mpu6050_interrupt_handle()
294 iio_trigger_poll_nested(st->trig); in inv_mpu6050_interrupt_handle()
303 struct inv_mpu6050_state *st = iio_priv(indio_dev); in inv_mpu6050_probe_trigger() local
305 st->trig = devm_iio_trigger_alloc(&indio_dev->dev, in inv_mpu6050_probe_trigger()
309 if (!st->trig) in inv_mpu6050_probe_trigger()
313 ret = devm_request_threaded_irq(&indio_dev->dev, st->irq, in inv_mpu6050_probe_trigger()
320 st->trig->dev.parent = regmap_get_device(st->map); in inv_mpu6050_probe_trigger()
321 st->trig->ops = &inv_mpu_trigger_ops; in inv_mpu6050_probe_trigger()
322 iio_trigger_set_drvdata(st->trig, indio_dev); in inv_mpu6050_probe_trigger()
324 ret = devm_iio_trigger_register(&indio_dev->dev, st->trig); in inv_mpu6050_probe_trigger()
328 indio_dev->trig = iio_trigger_get(st->trig); in inv_mpu6050_probe_trigger()