Home
last modified time | relevance | path

Searched full:odr (Results 1 – 25 of 58) sorted by relevance

123

/linux/drivers/iio/common/st_sensors/
H A Dst_sensors_core.c52 unsigned int odr, struct st_sensor_odr_avl *odr_out) in st_sensors_match_odr() argument
57 if (sensor_settings->odr.odr_avl[i].hz == 0) in st_sensors_match_odr()
60 if (sensor_settings->odr.odr_avl[i].hz == odr) { in st_sensors_match_odr()
61 odr_out->hz = sensor_settings->odr.odr_avl[i].hz; in st_sensors_match_odr()
62 odr_out->value = sensor_settings->odr.odr_avl[i].value; in st_sensors_match_odr()
72 int st_sensors_set_odr(struct iio_dev *indio_dev, unsigned int odr) in st_sensors_set_odr() argument
80 if (!sdata->sensor_settings->odr.mask) in st_sensors_set_odr()
83 err = st_sensors_match_odr(sdata->sensor_settings, odr, &odr_out); in st_sensors_set_odr()
87 if ((sdata->sensor_settings->odr.addr == in st_sensors_set_odr()
89 (sdata->sensor_settings->odr.mask == in st_sensors_set_odr()
[all …]
/linux/drivers/iio/imu/inv_icm45600/
H A Dinv_icm45600_core.c144 .odr = INV_ICM45600_ODR_800HZ_LN,
150 .odr = INV_ICM45600_ODR_800HZ_LN,
159 .odr = INV_ICM45600_ODR_800HZ_LN,
165 .odr = INV_ICM45600_ODR_800HZ_LN,
267 u32 inv_icm45600_odr_to_period(enum inv_icm45600_odr odr) in inv_icm45600_odr_to_period() argument
286 return odr_periods[odr]; in inv_icm45600_odr_to_period()
342 if (conf->odr == U8_MAX) in inv_icm45600_set_default_conf()
343 conf->odr = oldconf->odr; in inv_icm45600_set_default_conf()
358 /* Force the power mode against the ODR when sensor is on. */ in inv_icm45600_set_accel_conf()
360 if (conf->odr <= INV_ICM45600_ODR_800HZ_LN) { in inv_icm45600_set_accel_conf()
[all …]
H A Dinv_icm45600_buffer.c51 const __le16 **timestamp, unsigned int *odr) in inv_icm45600_fifo_decode_packet() argument
63 /* handle odr flags. */ in inv_icm45600_fifo_decode_packet()
64 *odr = 0; in inv_icm45600_fifo_decode_packet()
66 *odr |= INV_ICM45600_SENSOR_GYRO; in inv_icm45600_fifo_decode_packet()
68 *odr |= INV_ICM45600_SENSOR_ACCEL; in inv_icm45600_fifo_decode_packet()
107 period_gyro = inv_icm45600_odr_to_period(st->conf.gyro.odr); in inv_icm45600_buffer_update_fifo_period()
112 period_accel = inv_icm45600_odr_to_period(st->conf.accel.odr); in inv_icm45600_buffer_update_fifo_period()
164 * value. Latency depends on watermark and ODR. It requires several steps:
184 /* Compute sensors latency, depending on sensor watermark and odr. */ in inv_icm45600_buffer_update_watermark()
189 /* Use us for odr to avoid overflow using 32 bits values. */ in inv_icm45600_buffer_update_watermark()
[all …]
H A Dinv_icm45600_gyro.c322 unsigned int odr; in inv_icm45600_gyro_read_odr() local
325 odr = st->conf.gyro.odr; in inv_icm45600_gyro_read_odr()
328 if (inv_icm45600_gyro_odr_conv[i] == odr) in inv_icm45600_gyro_read_odr()
340 static int _inv_icm45600_gyro_write_odr(struct iio_dev *indio_dev, int odr) in _inv_icm45600_gyro_write_odr() argument
348 conf.odr = odr; in _inv_icm45600_gyro_write_odr()
349 ret = inv_sensors_timestamp_update_odr(ts, inv_icm45600_odr_to_period(conf.odr), in _inv_icm45600_gyro_write_odr()
373 int odr; in inv_icm45600_gyro_write_odr() local
384 odr = inv_icm45600_gyro_odr_conv[idx / 2]; in inv_icm45600_gyro_write_odr()
391 ret = _inv_icm45600_gyro_write_odr(indio_dev, odr); in inv_icm45600_gyro_write_odr()
727 ts_chip.init_period = inv_icm45600_odr_to_period(st->conf.gyro.odr); in inv_icm45600_gyro_init()
[all …]
H A Dinv_icm45600_accel.c309 unsigned int odr; in inv_icm45600_accel_read_odr() local
312 odr = st->conf.accel.odr; in inv_icm45600_accel_read_odr()
315 if (inv_icm45600_accel_odr_conv[i] == odr) in inv_icm45600_accel_read_odr()
327 static int _inv_icm45600_accel_write_odr(struct iio_dev *indio_dev, int odr) in _inv_icm45600_accel_write_odr() argument
335 conf.odr = odr; in _inv_icm45600_accel_write_odr()
336 ret = inv_sensors_timestamp_update_odr(ts, inv_icm45600_odr_to_period(conf.odr), in _inv_icm45600_accel_write_odr()
360 int odr; in inv_icm45600_accel_write_odr() local
371 odr = inv_icm45600_accel_odr_conv[idx / 2]; in inv_icm45600_accel_write_odr()
378 ret = _inv_icm45600_accel_write_odr(indio_dev, odr); in inv_icm45600_accel_write_odr()
719 ts_chip.init_period = inv_icm45600_odr_to_period(st->conf.accel.odr); in inv_icm45600_accel_init()
[all …]
/linux/drivers/iio/imu/inv_icm42600/
H A Dinv_icm42600_buffer.c47 const void **timestamp, unsigned int *odr) in inv_icm42600_fifo_decode_packet() argument
59 *odr = 0; in inv_icm42600_fifo_decode_packet()
63 /* handle odr flags */ in inv_icm42600_fifo_decode_packet()
64 *odr = 0; in inv_icm42600_fifo_decode_packet()
66 *odr |= INV_ICM42600_SENSOR_GYRO; in inv_icm42600_fifo_decode_packet()
68 *odr |= INV_ICM42600_SENSOR_ACCEL; in inv_icm42600_fifo_decode_packet()
107 period_gyro = inv_icm42600_odr_to_period(st->conf.gyro.odr); in inv_icm42600_buffer_update_fifo_period()
112 period_accel = inv_icm42600_odr_to_period(st->conf.accel.odr); in inv_icm42600_buffer_update_fifo_period()
187 * value. Latency depends on watermark and ODR. It requires several steps:
211 /* compute sensors latency, depending on sensor watermark and odr */ in inv_icm42600_buffer_update_watermark()
[all …]
H A Dinv_icm42600_gyro.c323 unsigned int odr; in inv_icm42600_gyro_read_odr() local
326 odr = st->conf.gyro.odr; in inv_icm42600_gyro_read_odr()
329 if (inv_icm42600_gyro_odr_conv[i] == odr) in inv_icm42600_gyro_read_odr()
360 conf.odr = inv_icm42600_gyro_odr_conv[idx / 2]; in inv_icm42600_gyro_write_odr()
361 if (conf.odr == st->conf.gyro.odr) in inv_icm42600_gyro_write_odr()
367 ret = inv_sensors_timestamp_update_odr(ts, inv_icm42600_odr_to_period(conf.odr), in inv_icm42600_gyro_write_odr()
763 ts_chip.init_period = inv_icm42600_odr_to_period(st->conf.accel.odr); in inv_icm42600_gyro_init()
796 unsigned int odr; in inv_icm42600_gyro_parse_fifo() local
804 &accel, &gyro, &temp, &timestamp, &odr); in inv_icm42600_gyro_parse_fifo()
813 /* update odr */ in inv_icm42600_gyro_parse_fifo()
[all …]
H A Dinv_icm42600_accel.c107 /* prevent change if power mode is not supported by the ODR */ in inv_icm42600_accel_power_mode_set()
110 if (st->conf.accel.odr >= INV_ICM42600_ODR_6_25HZ_LP && in inv_icm42600_accel_power_mode_set()
111 st->conf.accel.odr <= INV_ICM42600_ODR_1_5625HZ_LP) in inv_icm42600_accel_power_mode_set()
116 if (st->conf.accel.odr <= INV_ICM42600_ODR_1KHZ_LN) in inv_icm42600_accel_power_mode_set()
616 unsigned int odr; in inv_icm42600_accel_read_odr() local
619 odr = st->conf.accel.odr; in inv_icm42600_accel_read_odr()
622 if (inv_icm42600_accel_odr_conv[i] == odr) in inv_icm42600_accel_read_odr()
653 conf.odr = inv_icm42600_accel_odr_conv[idx / 2]; in inv_icm42600_accel_write_odr()
654 if (conf.odr == st->conf.accel.odr) in inv_icm42600_accel_write_odr()
660 ret = inv_sensors_timestamp_update_odr(ts, inv_icm42600_odr_to_period(conf.odr), in inv_icm42600_accel_write_odr()
[all …]
/linux/Documentation/iio/
H A Dad7191.rst24 The driver supports both pin-strapped and GPIO-controlled configurations for ODR
29 ODR Configuration
32 The ODR can be configured either through GPIO control or pin-strapping:
34 - When using GPIO control, specify the "odr-gpios" property in the device tree
35 - For pin-strapped configuration, specify the "adi,odr-value" property in the
38 Available ODR settings:
/linux/drivers/iio/imu/st_lsm6dsx/
H A Dst_lsm6dsx_shub.c159 u32 odr, timeout; in st_lsm6dsx_shub_wait_complete() local
162 odr = (hw->enable_mask & BIT(ST_LSM6DSX_ID_ACC)) ? sensor->odr : 12500; in st_lsm6dsx_shub_wait_complete()
164 timeout = max_t(u32, 2000000U / odr + 1, 10); in st_lsm6dsx_shub_wait_complete()
403 u32 odr, u16 *val) in st_lsm6dsx_shub_get_odr_val() argument
410 if (settings->odr_table.odr_avl[i].milli_hz == odr) in st_lsm6dsx_shub_get_odr_val()
422 st_lsm6dsx_shub_set_odr(struct st_lsm6dsx_sensor *sensor, u32 odr) in st_lsm6dsx_shub_set_odr() argument
428 err = st_lsm6dsx_shub_get_odr_val(sensor, odr, &val); in st_lsm6dsx_shub_set_odr()
629 int odr; in __st_lsm6dsx_shub_write_raw() local
637 odr = st_lsm6dsx_check_odr(ref_sensor, val, &odr_val); in __st_lsm6dsx_shub_write_raw()
638 if (odr < 0) in __st_lsm6dsx_shub_write_raw()
[all …]
H A Dst_lsm6dsx_core.c19 * - Accelerometer/Gyroscope supported ODR [Hz]: 12.5, 26, 52, 104, 208, 416
29 * - Accelerometer/Gyroscope supported ODR [Hz]: 12.5, 26, 52, 104, 208, 416
46 * - Accelerometer/Gyroscope supported ODR [Hz]: 12.5, 26, 52, 104, 208, 416,
54 * - Accelerometer/Gyroscope supported ODR [Hz]: 7.5, 15, 30, 60, 120, 240,
62 * - Accelerometer supported ODR [Hz]: 10, 50, 119, 238, 476, 952
64 * - Gyroscope supported ODR [Hz]: 15, 60, 119, 238, 476, 952
1708 int st_lsm6dsx_check_odr(struct st_lsm6dsx_sensor *sensor, u32 odr, u8 *val) in st_lsm6dsx_check_odr() argument
1716 * ext devices can run at different odr respect to in st_lsm6dsx_check_odr()
1719 if (odr_table->odr_avl[i].milli_hz >= odr) in st_lsm6dsx_check_odr()
1731 st_lsm6dsx_check_odr_dependency(struct st_lsm6dsx_hw *hw, u32 odr, in st_lsm6dsx_check_odr_dependency() argument
[all …]
/linux/drivers/iio/accel/
H A Dadxl355_core.c227 enum adxl355_odr odr; member
280 u64 odr; in adxl355_fill_3db_frequency_table() local
283 odr = mul_u64_u32_shr(adxl355_odr_table[data->odr][0], MEGA, 0) + in adxl355_fill_3db_frequency_table()
284 adxl355_odr_table[data->odr][1]; in adxl355_fill_3db_frequency_table()
288 div = div64_u64_rem(mul_u64_u32_shr(odr, multiplier, 0), in adxl355_fill_3db_frequency_table()
408 enum adxl355_odr odr) in adxl355_set_odr() argument
414 if (data->odr == odr) { in adxl355_set_odr()
425 FIELD_PREP(ADXL355_FILTER_ODR_MSK, odr)); in adxl355_set_odr()
429 data->odr = odr; in adxl355_set_odr()
573 *val = adxl355_odr_table[data->odr][0]; in adxl355_read_raw()
[all …]
H A Dadxl367.c169 enum adxl367_odr odr; member
520 int freq_hz = adxl367_samp_freq_tbl[st->odr][0]; in adxl367_time_ms_to_samples()
521 int freq_microhz = adxl367_samp_freq_tbl[st->odr][1]; in adxl367_time_ms_to_samples()
593 static int _adxl367_set_odr(struct adxl367_state *st, enum adxl367_odr odr) in _adxl367_set_odr() argument
600 odr)); in _adxl367_set_odr()
604 st->odr = odr; in _adxl367_set_odr()
606 /* Activity timers depend on ODR */ in _adxl367_set_odr()
614 static int adxl367_set_odr(struct iio_dev *indio_dev, enum adxl367_odr odr) in adxl367_set_odr() argument
625 ret = _adxl367_set_odr(st, odr); in adxl367_set_odr()
677 enum adxl367_odr *odr) in adxl367_find_odr() argument
[all …]
H A Dst_accel_core.c126 .odr = {
208 .odr = {
287 .odr = {
377 .odr = {
450 .odr = {
522 .odr = {
593 .odr = {
663 .odr = {
721 .odr = {
796 .odr = {
[all …]
H A Dadxl372.c361 enum adxl372_odr odr; member
447 enum adxl372_odr odr) in adxl372_set_odr() argument
453 ADXL372_TIMING_ODR_MODE(odr)); in adxl372_set_odr()
457 st->odr = odr; in adxl372_set_odr()
539 * The scale factor of the TIME_ACT register depends on the ODR. in adxl372_set_activity_time_ms()
540 * A higher scale factor is used at the maximum ODR and a lower in adxl372_set_activity_time_ms()
543 if (st->odr == st->chip_info->max_odr) in adxl372_set_activity_time_ms()
570 * The scale factor of the TIME_INACT register depends on the ODR. in adxl372_set_inactivity_time_ms()
571 * A higher scale factor is used at the maximum ODR and a lower in adxl372_set_inactivity_time_ms()
574 if (st->odr == st->chip_info->max_odr) in adxl372_set_inactivity_time_ms()
[all …]
H A Dadxl380.c209 u8 odr; member
272 st->odr = ADXL380_ODR_VLP; in adxl380_set_measure_en()
274 if (st->odr == ADXL380_ODR_VLP) in adxl380_set_measure_en()
439 static int adxl380_get_odr(struct adxl380_state *st, int *odr) in adxl380_get_odr() argument
441 *odr = st->chip_info->samp_freq_tbl[st->odr]; in adxl380_get_odr()
453 int odr; in adxl380_fill_lpf_tbl() local
455 ret = adxl380_get_odr(st, &odr); in adxl380_fill_lpf_tbl()
460 st->lpf_tbl[i] = DIV_ROUND_CLOSEST(odr, adxl380_lpf_div[i]); in adxl380_fill_lpf_tbl()
473 u64 div, rem, odr; in adxl380_fill_hpf_tbl() local
480 odr = mul_u64_u32_shr(odr_hz, MEGA, 0); in adxl380_fill_hpf_tbl()
[all …]
H A Dadxl345_core.c145 /* Certain features recommend 12.5 Hz - 400 Hz ODR */
381 enum adxl345_odr odr; in adxl345_set_default_time() local
386 /* Generated inactivity time based on ODR */ in adxl345_set_default_time()
391 odr = FIELD_GET(ADXL345_BW_RATE_MSK, regval); in adxl345_set_default_time()
392 val = clamp(max_boundary - adxl345_odr_tbl[odr][0], in adxl345_set_default_time()
421 * adxl345_set_inact_time - Configure inactivity time explicitly or by ODR.
956 int val2, enum adxl345_odr *odr) in adxl345_find_odr() argument
963 *odr = i; in adxl345_find_odr()
971 static int adxl345_set_odr(struct adxl345_state *st, enum adxl345_odr odr) in adxl345_set_odr() argument
977 FIELD_PREP(ADXL345_BW_RATE_MSK, odr)); in adxl345_set_odr()
[all …]
/linux/Documentation/ABI/testing/
H A Dsysfs-bus-iio-inv_icm426006 requested power mode to use if the ODR support it. If ODR
11 be different for ODR supporting only 1 mode.
/linux/include/linux/iio/common/
H A Dst_sensors.h194 * @odr: Output data rate register and ODR list available.
211 struct st_sensor_odr odr; member
231 * @odr: Output data rate of the sensor [Hz].
240 * @odr_lock: Local lock for preventing concurrent ODR accesses/changes
251 unsigned int odr; member
299 int st_sensors_set_odr(struct iio_dev *indio_dev, unsigned int odr);
/linux/drivers/iio/gyro/
H A Dst_gyro_core.c77 .odr = {
155 .odr = {
229 .odr = {
303 .odr = {
396 *val = gdata->odr; in st_gyro_read_raw()
493 gdata->odr = gdata->sensor_settings->odr.odr_avl[0].hz; in st_gyro_common_probe()
/linux/drivers/iio/magnetometer/
H A Dst_magn_core.c152 .odr = {
231 .odr = {
311 .odr = {
384 .odr = {
433 .odr = {
532 *val = mdata->odr; in st_magn_read_raw()
629 mdata->odr = mdata->sensor_settings->odr.odr_avl[0].hz; in st_magn_common_probe()
H A Dbmc150_magn.c173 u8 odr; member
327 int rep_z, int odr) in bmc150_magn_set_max_odr() argument
345 if (odr <= 0) { in bmc150_magn_set_max_odr()
346 ret = bmc150_magn_get_odr(data, &odr); in bmc150_magn_set_max_odr()
352 if (odr > max_odr) { in bmc150_magn_set_max_odr()
355 odr); in bmc150_magn_set_max_odr()
719 ret = bmc150_magn_set_odr(data, preset.odr); in bmc150_magn_init()
721 dev_err(data->dev, "Failed to set ODR to %d\n", in bmc150_magn_init()
722 preset.odr); in bmc150_magn_init()
743 preset.odr); in bmc150_magn_init()
/linux/drivers/iio/pressure/
H A Dst_pressure_core.c238 .odr = {
311 .odr = {
363 .odr = {
432 .odr = {
499 .odr = {
568 .odr = {
687 *val = press_data->odr; in st_press_read_raw()
769 press_data->odr = press_data->sensor_settings->odr.odr_avl[0].hz; in st_press_common_probe()
/linux/drivers/char/ipmi/
H A Dkcs_bmc.h20 * @odr: Output Data Register
25 u32 odr; member
/linux/drivers/iio/adc/
H A Dad7780.c66 unsigned int odr; member
130 *val = st->odr; in ad7780_read_raw()
174 st->odr = ad778x_odr_avail[val]; in ad7780_write_raw()
196 st->odr = ad778x_odr_avail[raw_sample & AD7780_FILTER]; in ad7780_postprocess_sample()

123