summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--driver/accelgyro_lsm6dsm.c2
-rw-r--r--driver/accelgyro_lsm6dsm.h6
2 files changed, 3 insertions, 5 deletions
diff --git a/driver/accelgyro_lsm6dsm.c b/driver/accelgyro_lsm6dsm.c
index 5e2ab05a54..9eff6fecc6 100644
--- a/driver/accelgyro_lsm6dsm.c
+++ b/driver/accelgyro_lsm6dsm.c
@@ -120,7 +120,7 @@ static int set_data_rate(const struct motion_sensor_t *s, int rate, int rnd)
}
reg_val = LSM6DSM_ODR_TO_REG(rate);
- normalized_rate = LSM6DSM_ODR_TO_NORMALIZE(rate);
+ normalized_rate = LSM6DSM_REG_TO_ODR(rate);
if (rnd && (normalized_rate < rate)) {
reg_val++;
diff --git a/driver/accelgyro_lsm6dsm.h b/driver/accelgyro_lsm6dsm.h
index 606e19153f..7f02baa02e 100644
--- a/driver/accelgyro_lsm6dsm.h
+++ b/driver/accelgyro_lsm6dsm.h
@@ -67,12 +67,10 @@ enum lsm6dsm_odr {
#define LSM6DSM_ODR_MAX_VAL 416000
/* ODR reg value from selected data rate in mHz */
-#define LSM6DSM_ODR_TO_REG(_odr) \
- __fls(_odr / LSM6DSM_ODR_MIN_VAL)
+#define LSM6DSM_ODR_TO_REG(_odr) (__fls(_odr / LSM6DSM_ODR_MIN_VAL) + 1)
/* normalized ODR value from selected data rate in mHz */
-#define LSM6DSM_ODR_TO_NORMALIZE(_odr) \
- (LSM6DSM_ODR_MIN_VAL << __fls(_odr/LSM6DSM_ODR_MIN_VAL))
+#define LSM6DSM_REG_TO_ODR(_reg) (LSM6DSM_ODR_MIN_VAL << (_reg - 1))
/* Full Scale range value and gain for Acc */
#define LSM6DSM_FS_LIST_NUM 4